108
Aristektur Berbasiskan Microservice Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST, MMSI

Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Arsitektur Berbasis MicroserviceDr. Andreas Hadiyono, ST, MMSI

Page 2: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 3: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 4: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Tantangan Microservice

Page 5: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Fakta Monolitik

Page 6: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 7: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Page 8: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Page 9: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Page 10: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Page 11: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Permasalahan● Ukuran dari barang ● Bentuk dari barang

Adakah Solusinya?

Page 12: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Page 13: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 14: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Microservices

Page 15: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Microservice vs Monolithic

Page 16: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Monolithic vs Microservice

Page 17: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Zama Dahulu Kala

Page 18: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Page 19: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 20: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Development Microservices

Page 21: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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.

Page 22: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 23: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 24: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Tantangan Microservice

Page 25: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

1. Handle Multiple Services

Page 26: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

2. Monitoring Services

Page 27: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

3. Kecepatan dalam Pembuatan Service

Page 28: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Handle Multiservices

Page 29: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Api Gateway

Page 30: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Api Gateway

Page 31: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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.

Page 32: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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.

Page 33: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 34: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Teknologi● KONG● Tyk● WSO2● AWS● Apigee

Page 35: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Service Mesh

Page 36: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Service Mesh

Page 37: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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.

Page 38: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 39: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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.

Page 40: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Teknologi● Islo● Linkerd ● Hashicorp's Consul.

Page 41: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

(Message Queue)

Page 42: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Message Queue

Page 43: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Message Queue● Queue every request to pool message ● Not real time communication● Depend on agent for processing data

Page 44: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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.

Page 45: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 46: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Full Stack Microservice

Page 47: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 48: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 49: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Arsitektur Information System

Page 50: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 51: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 52: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 53: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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)

Page 54: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 55: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 56: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Desain Architecture

Page 57: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Page 58: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Teknologi

Page 59: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Pemilihan Database

Page 60: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 61: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

PostgreSQL vs CockroachDB

● ACID Semantic● SQL● Open Source

● Automated Scaling● Automated Fail Over● Automated Repair● Strongly Consistent

Replication ● Distributed

Transactions● SQL

Page 62: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 63: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Layer Arsitektur

● Abstraksi Layer● SQL Sebagai Bahasa utama● Distribusi● Replikasi di layer Fisik

Page 64: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 65: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Contoh Kasus: Kindred

● Pertama digunakan untuk “costumer wallet”● multi-active availability● Geo-replication● Recommended relational database

Page 66: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Contoh Kasus: Tierion

● 4,000+ operations per second● mampu menghasilkan ratusan jutaan proof

blockchain per hari

Page 67: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Redis

● Key Value-Store Database● On Memory Database● Database dengan latency paling rendah

Page 68: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Hasil Benchmark

Page 69: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 70: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 71: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 72: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Pemilihan Message Broker

Page 73: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 74: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Hasil Benchmark

Page 75: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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.

Page 76: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Kong Overview

Page 77: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Kon Gateway Concept

Page 78: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Koko Bachrudin, S.Kom., MMSI.

Meningkatkan Skabilitas Sitem Menggunakan

RabbitMQ

Page 79: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 80: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Outline

● RabbitMQ● Jenis-jenis Queue● Contoh Kasus

Page 81: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Apa Sih RabbitMQ

● Multi Protocol Message System● Open Source● Polygot● Ditulis dalam bahasa Erlang/OTP

Page 82: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Multi Protocol

Page 83: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Polygot

● Java● Node.js● Erlang● PHP● Rubby● .Net● Python● Haskell

Page 84: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Cobol

Page 85: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Pengguna RabbitMQ

● Instagram● Indeed.com● Telefonica● Mercado Libre● NHS● Mozilla

Page 86: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Fitur RabbitMQ

● No Message Lost● Presistent Message ● Publisher Confirms● Message Acknowledment● Mirrored Queues● Messages Ordering

Page 87: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Jenis Queue

● Simple Queue● Work Queue● Publish and Subscribe● Routing● Topics● RPC

Page 88: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Isitilah dasar

● Publisher: Program mengirimkan data ke Queue

● Consumer: Program yang menrima data dari Queue

Page 89: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Simple Queue

Page 90: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Work Queue

Page 91: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Publish and Subcribe

Page 92: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Routing

Page 93: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Topics

Page 94: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

RPC

Page 95: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Contoh KasusBased on True Story

Page 96: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 97: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 98: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Pendekatan awal

Prov 1

Prov 2

Prov 3

Queue PenerimaData

Page 99: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Masalah

● Jika Queue mati maka pesan gagal dikirim● Penerima data bekerja sendiri menerima aliran

data yang besar

Page 100: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 101: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 102: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 103: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 104: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 105: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 106: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

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

Page 107: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Skema sistem

Queue Cluster

WorkerWilayah Worker

Wilayah

WorkerWilayah

WorkerWilayah

WorkerWilayah

WorkerWilayah

WorkerWilayah

WorkerWilayah

WorkerWilayah

WorkerWilayah

Page 108: Arsitektur Berbasis Microservice Dr. Andreas Hadiyono, ST

Aristektur Berbasiskan Microservice

Terima kasih