Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Preview:

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

Twitter

● 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

Recommended