Merchant
Shipping
Product
Seberapa Kecil Aplikasi Microservices?
● Single responsibility
● Sekecil mungkin sehingga bisa dimengerti oleh satu orang
● Bisa di kerjakan sejumlah X developer
Monolith Microservices
● Simplicity ● Partial Deployment
● Consistency ● Availability
● Easy to Refactor ● Multiple Platform
● Easy to Scale
Database per Service
Decentralized Database
MySQL MySQL
Kapan Harus Shared Database?
● Ketika melakukan transisi dari aplikasi Monolith ke Microservices
● Ketika bingung memecahkan data antar Service
● Ketika dikejar waktu, sehingga tidak ada waktu untuk bikin API
Contoh Shared Database
NoSQL
Apa itu NoSQL?
● NoSQL bukanlah NO (TIDAK/BUKAN) SQL
● NoSQL singkatan dari Not Only SQL
Jenis-Jenis NoSQL
● Document Oriented Database
● Key-Value Database
● Column Families Database
● Graph Database
● Search Database
● Time Series Database
● Dan lain-lain
Contoh NoSQL Database
● MongoDB : Document Oriented Database
● Elasticsearch : Search Database
● Redis : Key-Value Database
● Apache Cassandra : Column Families Database
● Neo4J : Graph Database
● InfluxDB : Time Series Database
Kenapa Butuh Tahu NoSQL?
● Agar bisa disesuaikan dengan kebutuhan
● Bisa mencari alternatif cara mengolah data
● Mempercepat dalam proses penulisan atau pencarian
Contoh Kasus
Remote Procedure Invocation
Ketika Service butuh Data Service Lain
Komunikasi Antar Service
● Idealnya komunikasi dilakukan melalui RPI (Remote Procedure Invocation) atau RPC (Remote
Procedure Call)
● Tidak direkomendasikan komunikasi dilakukan via database
Contoh Remote Procedure Invocation
● RESTful API (HTTP)
● gRPC
● Apache Thrift
● SOAP
● Java RMI
● Corba (Common Object Request Broker Architecture)
● dan lain-lain
Ketika Service butuh Data Service Lain
Keuntungan Menggunakan RPI
● Sederhana dan Mudah
● Biasanya digunakan untuk komunikasi Request - Reply
● Biasanya digunakan untuk proses Sync (yang butuh menunggu jawaban)
Messaging
Ketika Service butuh Data Service Lain
Komunikasi Menggunakan RPI
Masalah di Komunikasi RPI
● Proses lama (pada Email Service dan SMS Service)
● Mengirim data yang sama berkali-kali (pada Finance Service dan Report Service)
● Membuat Paralel Process sangat rumit
Komunikasi dengan Cara Messaging
● Messaging biasanya digunakan untuk komunikasi Async
● Async artinya komunikasi dilakukan tanpa harus menunggu selesai di proses
● Dalam async, kadang tidak perlu peduli balasan dari service yang dituju
● Biasanya komunikasi Messaging membutuhkan Message Channel sebagai jembatan untuk
mengirim dan menerima data
● Direkomendasikan menggunakan aplikasi Message Broker untuk melakukan management
Message Channel
Komunikasi Menggunakan Messaging
Contoh Message Broker
● Redis (PubSub)
● Apache Kafka
● RabbitMQ
● NSQ
● Google PubSub
● Amazon Web Service SQS
● dan lain-lain
Keuntungan Menggunakan Messaging
● Proses lebih cepat karena tidak harus menunggu response
● Service pengirim data tidak perlu peduli terhadap penerima data
Type of Microservices
Tipe Microservices
● Stateless Microservice
● Persistence Microservice
● Aggregation Microservices
Stateless Microservices
● Biasanya tidak memiliki database
● Digunakan untuk melakukan tugas sederhana
● Biasa digunakan juga sebagai utility untuk microservice lain
● Tidak bergantung dengan microservice lain
Contoh Stateless Microservices
Persistence Microservices
● Biasanya memiliki database
● Bisa juga disebut sebagai Master Data Microservice
● Biasa digunakan untuk mengolah data di database (CRUD)
Contoh Persistence Microservices
Aggregation Microservices
● Tergantung dengan microservice lain
● Biasa digunakan sebagai pusat business logic aplikasi
● Boleh memiliki database ataupun tidak
● Tidak bisa berdiri sendiri
Contoh Aggregation Microservices
Contoh Kasus
Service Orchestration
Service Orchestration
● Sebelumnya kita sudah bahas tentang tipe Aggregation Microservices
● Cara Aggregation Microservices berkomunikasi dengan Microservices lain, jika menggunakan
Remote Procedure Invocation, maka dinamakan Service Orchestration Pattern
● Dalam Service Orchestration Pattern, Aggregation Microservices bertugas untuk mengatur alur
business logic sistem.
Contoh Service Orchestration
Keuntungan Service Orchestration
● Mudah dibuat, karena kode business logic akan terpusat di Aggregation Microservices
● Mudah dimengerti, karena kode business logic akan terpusat di Aggregation Microservices
Kekurangan Service Orchestration
● Aggregation Microservices terlalu ketergantungan dengan Microservices lain
● Aggregation Microservices akan lebih lambat karena harus terkoneksi dengan Microservices lain
● Aggregation Microservices akan lebih mudah error jika di Microservices lain terdapat masalah
● Jika perlu Microservices baru, perlu dilakukan perubahan di Aggregation Microservices
Kekurangan Service Orchestration
Service Choreography
Service Choreography
● Service Choreography berbeda dengan Service Orchestration.
● Dalam Service Choreography, komunikasi Aggregation Service dengan Microservices lainnya
menggunakan Messaging.
● Dalam Service Orchestration, Aggregation Microservice adalah service yang sangat kompleks dan
mengerti semua alur business logic, sedangkan berbeda dengan Service Choreography, semua
Microservices dituntut untuk menjadi pintar, tidak hanya diperintah oleh Aggregation
Microservices.
Contoh Service Choreography
Keuntungan Service Choreography
● Aggregation Microservices tidak tergantung dengan Microservices lainnya
● Aggregation Microservice akan lebih cepat, karena tidak perlu berkomunikasi dengan
Microservices lainnya
● Jika ada Microservice baru, Aggregation Microservice tidak perlu melakukan perubahan lagi
Keuntungan Service Choreography
Kekurangan Service Choreography
● Lebih sulit di-debug ketika terjadi masalah
● Business logic akan terdistribusi di semua Microservices, sehingga sulit untuk dimengerti secara
keseluruhan
API Gateway
Mengekspos Microservices
Masalah Mengekspos Microservices
● Semua service bisa diakses dari luar
● Jika butuh Autentikasi, harus diimplementasikan di semua service
● Rawan terjadi kebocoran data
API Gateway
● API Gateway adalah aplikasi yang bertugas sebagai gerbang dari luar ke dalam
● Luar adalah akses dari internet, dan Dalam adalah aplikasi microservices
● API Gateway bertugas sebagai proxy server ke semua aplikasi microservices
● Aplikasi microservices hanya bisa diakses dari luar melalui API Gateway
API Gateway
Keuntungan API Gateway
● Lebih aman karena satu gerbang
● Service tidak perlu mengimplementasikan proses Autentikasi, cukup dilakukan di API Gateway
● API Gateway juga bisa digunakan sebagai load balancer
● Bisa digunakan sebagai rate limiter
● Bisa digunakan sebagai pengaman sehingga error dari service tidak terekspos
Contoh API Gateway
● Nginx
● Apache HTTPD
● Kong
● Netflix Zuul
● Spring Cloud Gateway
Authentication & Authorization
Bagaimana Mengamankan Microservices?
Authentication dan Authorization
Authentication : Authorization :