Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Aristektur Berbasiskan Microservice
Arsitektur Berbasis MicroserviceDr. Andreas Hadiyono, ST, MMSI
Aristektur Berbasiskan Microservice
Profile● Dosen Universitas Gunadarma● Staff Kerjasama dan Industri Universitas Gunadarma● Pengalaman:
● Ketua Tim Tekni Pengembangan Sistem Informasi E-learning (https://elearning.bsn.go.id)● Koordinator Teknis dan Sistem Analisis Pengembangan Keluarga Sehat Kementerian
Kesehatan (http://keluargasehat.kemkes.go.id)● Koordinator Teknis Pengembangan Sistem Satu Data Kementerian Kesehatan(
http://satudata.kemkes.go.id/) ● Pengembang Sistem Informasi Izin Belajar Kemendikbud (
http://izin-belajar.kemdikbud.go.id) ● Tim Pengembang Sistem Informasi ASN● Koordinator Teknis Pengembangan Aplikasi CAT Toefl - Psikologi Mabes Polri, CAT
Polda Metro Jaya● Koordinator Tim Teknis Sistem Informasi Manjamen Aset di Pemerintah Kota Pekalongan
dan Pemerintah Kabupaten Kotawaringin● Tim Portal Web Presiden RI – SBY dan Situs Wakil Presiden Republik Indonesia –
Boediono
Aristektur Berbasiskan Microservice
Outline● Fakta Monolitik● Microservices● Tantangan Microservices● Handle Multiple Services (Api Gateway, Service
Mesh, Message Queue)● Full Stack Microservices● Desain Aristektur Microservice● Teknologi
Aristektur Berbasiskan Microservice
Tantangan Microservice
Aristektur Berbasiskan Microservice
Fakta Monolitik
Aristektur Berbasiskan Microservice
Fakta tentang Monolitik● Pada zaman sekarang perkembangan aplikasi
semakin lama semakin meningkat● Aplikasi dibuat dengan sistem yang sangat besar,
seluruh fitur tersedia pada sebuah aplikasi● Membutuhkan hardware yang sangat besar● Sulit untuk melakukan eksalasi penambangan dan
pengurangan● Bila ada kekurangan maka harus melakukan
penghentian sistem
Aristektur Berbasiskan Microservice
Aristektur Berbasiskan Microservice
Aristektur Berbasiskan Microservice
Aristektur Berbasiskan Microservice
Aristektur Berbasiskan Microservice
Permasalahan● Ukuran dari barang ● Bentuk dari barang
Adakah Solusinya?
Aristektur Berbasiskan Microservice
Aristektur Berbasiskan Microservice
Monolitik
Keunggulan Monolitik:1. Mudah di kembangkan
2. Mudah untuk ditest
Kesulitan:1. Sulit untuk di perbesar
2. Sulit untuk dirawat apabila jumlah data/ akses bertambah
Besar3. Tergantug satu teknologi
Aristektur Berbasiskan Microservice
Microservices
Aristektur Berbasiskan Microservice
Microservice vs Monolithic
Aristektur Berbasiskan Microservice
Monolithic vs Microservice
Aristektur Berbasiskan Microservice
Zama Dahulu Kala
Aristektur Berbasiskan Microservice
Aristektur Berbasiskan Microservice
Benefit Microservices● Can scale independent microservices separately. No
need to scale the whole the system● Can use the latest technologies to develop the
microservices ● One component failure will not cause entire system
downtimes.● - When developing an overall solution we can
parallel the● microservices development task with the small
teams. So it helps to● decrease the development time
Aristektur Berbasiskan Microservice
Development Microservices
Aristektur Berbasiskan Microservice
Development Microservices● Decoupling - Services within a system are largely decoupled, so the application as
a whole can be easily built, altered, and scaled.● Componentization - Microservices are treated as independent components that
can be easily replaced and upgraded.● Business Capabilities - Microservices are very simple and focus on a single
capability.● Autonomy - Developers and teams can work independently of each other, thus
increasing speed.● Continous Delivery - Allows frequent releases of software through systematic
automation of software creation, testing, and approval.● Responsibility - Microservices do not focus on applications as projects. Instead,
they treat applications as products for which they are responsible.● Decentralized Governance - The focus is on using the right tool for the right job.
That means there is no standardized pattern or any technology pattern. Developers have the freedom to choose the best useful tools to solve their problems.
● Agility - Microservices support agile development. Any new feature can be quickly developed and discarded again.
Aristektur Berbasiskan Microservice
Desain Mikcroservice● Pembangunan interoperabilitas pada sistem
pandemi akan mengikuti dua jenis pendekatan komunikasi pada mikroservices yaitu:● Services to Service
● Asyncronus using queue
Aristektur Berbasiskan Microservice
Keunikan Metode KomunikasiServices to Services
● Pengguna atau client memberikan data secara langsun dan mendapat respon secara langsung
● Ideal untuk klien yang membutuhkan
tanggapan segera, atau perlu menggabungkan beberapa layanan secara bersamaan.
● Dilakukan melalui HTTP, TCP / UDP, gRPC, dll.
● Contoh: Membuat permintaan untuk mengambilsemacam tanggapan langsung (mendapatkan daftar pengguna).
Asyncronus● Pengguna atau client
memberikan data melalui sebuah event penghubung (event collector) dan diolah melalui layanan lain
● Ideal untuk microservice to microservice yang tidak membutuhkan tanggapan segerea
● Dilakukan melalui Kafka, RabitMq, AWS SQS, etc
● Contoh: Membuat penampungan data perhitungan IKS
Aristektur Berbasiskan Microservice
Tantangan Microservice
Aristektur Berbasiskan Microservice
1. Handle Multiple Services
Aristektur Berbasiskan Microservice
2. Monitoring Services
Aristektur Berbasiskan Microservice
3. Kecepatan dalam Pembuatan Service
Aristektur Berbasiskan Microservice
Handle Multiservices
Aristektur Berbasiskan Microservice
Api Gateway
Aristektur Berbasiskan Microservice
Api Gateway
Aristektur Berbasiskan Microservice
Api Gateway● Api Gateway is the bigger brother of the good old
reverse proxy for HTTP calls. It is a scalable, usually web-facing server that can receive requests from both public internet and internal services and forward them to the best suited microservice instance
● API Gateways usually come with a number of helpful features, including load balancing and health checks, API versioning and routing, request authentication & authorization, data transformation, analytics, logging, SSL termination and more.
Aristektur Berbasiskan Microservice
Advantage Api Gateway● API Gateways are powerful in features,
comparatively low in complexity and easily understood by seasoned web-veterans. They provide a solid layer of defense against the public internet and offload a lot of repetitive tasks, such as user authentication or data validation.
Aristektur Berbasiskan Microservice
Problem Api Gateway● API Gateways are fairly centralized. They can be
deployed in a horizontally scalable fashion, but unlike service meshes, they still require a single point to register new APIs or change configuration. Seen from an organizational perspective, they are likely to be maintained by a single team
Aristektur Berbasiskan Microservice
Teknologi● KONG● Tyk● WSO2● AWS● Apigee
Aristektur Berbasiskan Microservice
Service Mesh
Aristektur Berbasiskan Microservice
Service Mesh
Aristektur Berbasiskan Microservice
Services Mesh● Service Meshes are decentralized and self-
organizing networks between microservice instances that handle load balancing, endpoint discovery, health checks, monitoring, and tracing.
Aristektur Berbasiskan Microservice
Advantages Service Mesh● Service meshes are more dynamic and can easily
shift shape and accommodate new functionalities and endpoints. Their decentralized nature makes it easier to work on micro-services within fairly isolated teams
Aristektur Berbasiskan Microservice
Disadvantages Services Mesh● Service meshes can be quite complex and require a
lot of moving parts. Fully utilizing Istio, for instance, requires the deployment of a separate traffic manager, a telemetry gatherer, a certificate manager and a sidecar process for each node. They are also a fairly recent development, making something that constitutes the very backbone of your architecture worryingly young.
Aristektur Berbasiskan Microservice
Teknologi● Islo● Linkerd ● Hashicorp's Consul.
Aristektur Berbasiskan Microservice
(Message Queue)
Aristektur Berbasiskan Microservice
Message Queue
Aristektur Berbasiskan Microservice
Message Queue● Queue every request to pool message ● Not real time communication● Depend on agent for processing data
Aristektur Berbasiskan Microservice
Advantage Message Queue● Simply decoupling sender and receiver is a potent
concept that makes a number of other concepts such as health checks, routing, endpoint discovery or load balancing unnecessary.
Aristektur Berbasiskan Microservice
Disadvantage Message Queu● Message Queues are not good at request/response
communication. Some allow this to be shoehorned on top of existing concepts, but its not really what they are made for. Due to their buffered nature, they can also add significant latency to a system. They are also fairly centralized (though horizontally scalable) and can be quite costly to run at scale
Aristektur Berbasiskan Microservice
Full Stack Microservice
Aristektur Berbasiskan Microservice
Service Directory● Fungsi:
● Utama: Melakukan pendataan terkait layanan-layanan yang tersedia di Sektor Kesehatan di berbagai macam bidang
● Optional: Melakukan monitoring layanan yang tersedia sehingga dapat mengetahui bila terjadi kegagalan sistem
● Output:● Daftar API / Webservices dalam bentuk swagger● Kategorisasi API berdasarkan bidang sektor kesehatan
Aristektur Berbasiskan Microservice
Metadata Repository● Fungsi:
● Utama: Menyediakan penjelasan definisi dari setiap data dasar yang bermanfaat bagi pengembangan layanan
● Optional: Menyediakan definisi data untuk setiap services yang ada pada Services Directory
● Output:● Daftar data-data yang disimpan pada SIM ● Definisi data-data yang disimpan pada SIM sesuai
dengan Kamus Data Kesehatan
Aristektur Berbasiskan Microservice
Arsitektur Information System
Aristektur Berbasiskan Microservice
Services Layer● Fungsi: merupakan bagian utama untuk melakukan
manajemen interoperabiltitas ● Output:
● Sebuah sub sistem yang mampu membuat manajemen untuk melakukan:– Exception Handler. Manajemen bila terjadi kesalahan atau error– Session handler. Manajemen untuk melakukan penyimpanan data
pengguna yang menggunakan layanan – Endpoint Handler. Manajemen histori dari setiap versi layanan– Message Queue Handler. Manajemen layanan untuk setiap layanan
yang bersifat asyncronus– File handler. Manajemen layanan bila services berupa file atau data– Api Manager. Manjamen untuk services directory dan metadata directory– Throttling policy. Manajemen batasan maximum untuk setiap service dan
pengguna
Aristektur Berbasiskan Microservice
Presentation Layer● Fungsi: Bertugas untuk memberikan informasi
mengenai penggunaan layanan:● Output:
● Software Development Kit beserta dengan dokumentasi untuk platform mobile dan web
Aristektur Berbasiskan Microservice
Services Layer● Fungsi: merupakan bagian utama untuk melakukan
manajemen interoperabiltitas ● Output:
● Sebuah sub sistem yang mampu membuat manajemen untuk melakukan:– Exception Handler. Manajemen bila terjadi kesalahan atau error– Session handler. Manajemen untuk melakukan penyimpanan data
pengguna yang menggunakan layanan – Endpoint Handler. Manajemen histori dari setiap versi layanan– Message Queue Handler. Manajemen layanan untuk setiap layanan
yang bersifat asyncronus– File handler. Manajemen layanan bila services berupa file atau data– Api Manager. Manjamene untuk services directory dan metadata directory– Throttling policy. Manajemen batasan maximum untuk setiap service dan
pengguna
Aristektur Berbasiskan Microservice
Business Layer● Fungsi: Untuk melakukan pengaturan layanan untuk
setiap walidata seperti publish data untuk setiap data, pelaporan dan lain-lain.
● Output:● Sebuah subsistem yang memiliki kemampuan untuk :
– Content Manager– Transaction– Analytics– Transaction for Audit Trail– Security audit test– Notificaton (Alert Manajer)
Aristektur Berbasiskan Microservice
Data Layer● Fungsi: melakukan pengaturan akses data antara
database atau sumber lainnya beserta dengan maintain data yang bersifat raw(mentah)
● Ouput: Terciptanya sebuah sub sistem yang memiliki fungsi untuk● DB Connection Handler● CRUD Handler● Data Transfer Management● Caching/ Inventory Management● Data Glosary● Data Import dan Export
Aristektur Berbasiskan Microservice
Security Layer● Fungsi: untuk mengatur keamanan data dan
layanan dari sisi internal dan external● Output: tercipatanya sebuah sub sitem yang
mampu untuk menjaga keamanan dan mengatur beberapa hal seperto● Auntehication management dapat menggunaka LDAP,
Active directory atau Teknik Lain● O-AUTH management● Acces List (Policy management) baik dari sisi services
maupun dari sisi network● Input validator untuk setiap layanan yang terkoneksi
Aristektur Berbasiskan Microservice
Desain Architecture
Aristektur Berbasiskan Microservice
Aristektur Berbasiskan Microservice
Teknologi
Aristektur Berbasiskan Microservice
Pemilihan Database
Aristektur Berbasiskan Microservice
CockroachDB
● Meminimalkan penggunaan operator, dengan membuat automasi
● Konsistensi dalam sistem terdistribusi● Always on Database● Penerapan yang fleksibel di segala platform● Mendukung tools yang familiar (contoh: SQL)● Mendukung Multi location data center
Aristektur Berbasiskan Microservice
PostgreSQL vs CockroachDB
● ACID Semantic● SQL● Open Source
● Automated Scaling● Automated Fail Over● Automated Repair● Strongly Consistent
Replication ● Distributed
Transactions● SQL
Aristektur Berbasiskan Microservice
MongoDB vs CockroachDB
● Automated Scaling● Automated Failover● Automated Repair
● Automated Scaling● Automated Fail Over● Automated Repair● Strongly Consistent
Replication ● Distributed
Transactions● SQL
Aristektur Berbasiskan Microservice
Layer Arsitektur
● Abstraksi Layer● SQL Sebagai Bahasa utama● Distribusi● Replikasi di layer Fisik
Aristektur Berbasiskan Microservice
Contoh Kasus: Baidu
● 2TB Data dengan 50 juta peritah insert perhari● 10 Node di “bare metal server”● Mudah memigrasikan (Mysql -> cockroachdb)● Mengotomasi:
● Replication● Rebalancing● Surviving Failures
Aristektur Berbasiskan Microservice
Contoh Kasus: Kindred
● Pertama digunakan untuk “costumer wallet”● multi-active availability● Geo-replication● Recommended relational database
Aristektur Berbasiskan Microservice
Contoh Kasus: Tierion
● 4,000+ operations per second● mampu menghasilkan ratusan jutaan proof
blockchain per hari
Aristektur Berbasiskan Microservice
Redis
● Key Value-Store Database● On Memory Database● Database dengan latency paling rendah
Aristektur Berbasiskan Microservice
Hasil Benchmark
Aristektur Berbasiskan Microservice
● 26 Miliyar Tweets/perhari● 300.000 Tweets/seconds● Digunakan sebagai Cache pada pengiriman
(Pull) dan Menampilkan (Push) tweet ke setiap user
Aristektur Berbasiskan Microservice
Stackoverflow
● Digunakan sebagai cache pada “anonymous” user
● Terdapat 1.300.000 Key yang ada pada database redis
● Penggunaan CPU nyaris 0% sepanjang waktu● Penggunaan Memory telah mencapai 6GB● Mulai Memindahakan beberapa fitur lain ke
database redis
Aristektur Berbasiskan Microservice
Hasil
● Untuk database input survei tetap menggunakan database yang ada (MySQL)
● Database bigdata, menggunakan cockroachdb atau Postgre SQl
● Database perhitungan dan visualisasi menggunakan redis, karena mengjar kecepatan hitung dan akses
Aristektur Berbasiskan Microservice
Pemilihan Message Broker
Aristektur Berbasiskan Microservice
RabbitMQ Vs Apache Kafka
● Queue System● Berbasis Erlang● Dikembangkan untuk
kasus JPMorgan● Banyak di gunakan
oleh finansial
● Queue System● Berbasis Java● Dikembangkan awal
oleh Linkedin
Aristektur Berbasiskan Microservice
Hasil Benchmark
Aristektur Berbasiskan Microservice
Kong● Kong Gateway is an open-source, lightweight API
gateway optimized for microservices, delivering unparalleled latency performance and scalability. If you just want the basics, this option will work for you.
Aristektur Berbasiskan Microservice
Kong Overview
Aristektur Berbasiskan Microservice
Kon Gateway Concept
Aristektur Berbasiskan Microservice
Koko Bachrudin, S.Kom., MMSI.
Meningkatkan Skabilitas Sitem Menggunakan
RabbitMQ
Aristektur Berbasiskan Microservice
Tentang Saya● Staf Tetap Universitas
Gunadarma (UG)● Programer dan sysadmin
perhitungan wilayah IKS nasional Kemenkes
● Pengajar Digital Forensic Calon Hakim MA
● Anggota AFDI● MTB Rider
Aristektur Berbasiskan Microservice
Outline
● RabbitMQ● Jenis-jenis Queue● Contoh Kasus
Aristektur Berbasiskan Microservice
Apa Sih RabbitMQ
● Multi Protocol Message System● Open Source● Polygot● Ditulis dalam bahasa Erlang/OTP
Aristektur Berbasiskan Microservice
Multi Protocol
Aristektur Berbasiskan Microservice
Polygot
● Java● Node.js● Erlang● PHP● Rubby● .Net● Python● Haskell
Aristektur Berbasiskan Microservice
Cobol
Aristektur Berbasiskan Microservice
Pengguna RabbitMQ
● Instagram● Indeed.com● Telefonica● Mercado Libre● NHS● Mozilla
Aristektur Berbasiskan Microservice
Fitur RabbitMQ
● No Message Lost● Presistent Message ● Publisher Confirms● Message Acknowledment● Mirrored Queues● Messages Ordering
Aristektur Berbasiskan Microservice
Jenis Queue
● Simple Queue● Work Queue● Publish and Subscribe● Routing● Topics● RPC
Aristektur Berbasiskan Microservice
Isitilah dasar
● Publisher: Program mengirimkan data ke Queue
● Consumer: Program yang menrima data dari Queue
Aristektur Berbasiskan Microservice
Simple Queue
Aristektur Berbasiskan Microservice
Work Queue
Aristektur Berbasiskan Microservice
Publish and Subcribe
Aristektur Berbasiskan Microservice
Routing
Aristektur Berbasiskan Microservice
Topics
Aristektur Berbasiskan Microservice
RPC
Aristektur Berbasiskan Microservice
Contoh KasusBased on True Story
Aristektur Berbasiskan Microservice
Aplikasi X
● Berisi data tentang tinggat kesehatan Masyarakat
● Terdapat >15 pertanyaan yang di formulasikan menjadi 12 indikator kesehatan nasional (TB, Darah tinggi, dll)
● Terdapat 34 server yang meng-handle 34 provinsi (1 provinsi, 1 server)
● Data dari 34 server harus dikirim ke satu titik pusat
Aristektur Berbasiskan Microservice
Masalah yang timbul
● Aliran data tidak periodik perwaktu, bisa dikirim kapan saja.
● Aliran data besar, 300 data/detik/provinsi● Koneksi internet yang tidak stabil● Kemungkinan Server penerima data “down”● Kemungkinan Queue Down
Aristektur Berbasiskan Microservice
Pendekatan awal
Prov 1
Prov 2
Prov 3
Queue PenerimaData
Aristektur Berbasiskan Microservice
Masalah
● Jika Queue mati maka pesan gagal dikirim● Penerima data bekerja sendiri menerima aliran
data yang besar
Aristektur Berbasiskan Microservice
Solusi
● Buat Clusester dengan minimal 3 Queue RabbitMQ dengan Load Balancer
● Load Balancer harus bisa mendukung High Availability (HA) jika salah satu Load Balancer Down
● Memperbanyak Program penyimpanan data, untuk mengejar waktu tunggu dan simpan
Aristektur Berbasiskan Microservice
Skalabilitas
Prov 1
Queue1
PenerimaData 1
Prov 2
Prov 3
Load BalanceA
Load BalanceB
Floating IP
Queue2
Queue3
PenerimaData 2
PenerimaData N
Queue Cluster With HA
Aristektur Berbasiskan Microservice
Software Yang digunakan
● Queue -> RabbitMQ● Load Balancer -> HAProxy● HighAvaibility
● Linux Floating IP● Keepalived
● Publisher -> Web based PHP 7● Consumer -> CLI Based Python 3
Aristektur Berbasiskan Microservice
Apliakasi Y
● Menghitung nilai kesehatan di setiap wilayah dari RT, RW, Kelurahan, Kecamatan, Kabupaten Kota, Provinsi, sampai nasional
● Prerhitungan sebelumnya didilakukan secara sekuensial, jadi menunggu satu wilayah yang setara selesai baru mengerjakan wilayah yang setara lainnya
● Hasil yang didapatkan membutuhkan waktu berhari-hari
Aristektur Berbasiskan Microservice
Solusi
● Melakukan peritungan secara paralel untuk setiap wilayah yang setara
● Perhitungan Paralel untuk wilayah yang tidak setara tidak bisa dilakukan karena tetap harus menunggu hasil dari wilayah dibawahnya
● Membangun sistem berbasiskan worker yang menhitung setiap tingkatan wilayah
● Worker harus autonomus dan mudah di tambahkan
Aristektur Berbasiskan Microservice
Skema menghitung (Sebelum)
KK
KK
KK
KK
KK
KK
KK
KK
RT
RT
RT
RT
KK
KK
RT
RW
RW
RWK
KK
K
RT
KL
KL
KC
Aristektur Berbasiskan Microservice
Skema Menghitung (Sesudah)
KK KK KK KK KK KK KK KK
RT RTRTRT
KK KK
RT
RWRW RW
KK KK
RT
KL KL
KC
Aristektur Berbasiskan Microservice
Skema sistem
Queue Cluster
WorkerWilayah Worker
Wilayah
WorkerWilayah
WorkerWilayah
WorkerWilayah
WorkerWilayah
WorkerWilayah
WorkerWilayah
WorkerWilayah
WorkerWilayah
Aristektur Berbasiskan Microservice
Terima kasih