Bayangkan Anda sedang makan di sebuah restoran yang cukup besar dan ramai. Ketika Anda memesan makanan, ternyata prosesnya tidak dilakukan oleh satu orang saja. Pesanan Anda pertama kali diterima oleh kasir, lalu dikirim ke dapur untuk dimasak. Jika Anda memesan minuman, ada bagian khusus yang menanganinya. Setelah semuanya siap, pelayan akan mengantarkan pesanan tersebut ke meja Anda.
Menariknya, semua proses ini berjalan secara terpisah, tetapi tetap saling terhubung. Kasir tidak perlu menunggu dapur selesai memasak untuk menerima pesanan berikutnya. Dapur juga bisa fokus memasak tanpa harus memikirkan pembayaran. Setiap bagian memiliki tugasnya masing-masing, bekerja secara mandiri, namun tetap berkolaborasi agar pelayanan tetap cepat dan efisien.
Nah, konsep inilah yang sebenarnya digunakan dalam dunia sistem komputer modern melalui Microservices Architecture. Sebuah aplikasi tidak lagi dibangun sebagai satu sistem besar yang mengerjakan semuanya sekaligus, tetapi dipecah menjadi layanan-layanan kecil seperti User Service, Order Service, dan Payment Service. Masing-masing service bekerja seperti bagian di restoran—memiliki peran khusus, berjalan sendiri, dan saling berkomunikasi untuk menghasilkan satu layanan yang utuh.
Dengan pendekatan ini, sistem menjadi lebih fleksibel, mudah dikembangkan, dan mampu menangani banyak pengguna secara bersamaan tanpa saling mengganggu.
1. Pengertian Microservices Architecture
Microservices Architecture adalah pendekatan arsitektur sistem di mana aplikasi dibangun sebagai kumpulan layanan-layanan kecil (services) yang saling terhubung dan bekerja sama melalui jaringan.
Setiap service dalam arsitektur ini memiliki karakteristik sebagai berikut:
- Berdiri sendiri (independent) → dapat dijalankan dan dikembangkan tanpa bergantung pada service lain
- Memiliki fungsi spesifik (single responsibility) → setiap service hanya menangani satu jenis proses
- Berkomunikasi melalui jaringan → menggunakan API, event, atau message queue
Pendekatan ini bertujuan untuk meningkatkan fleksibilitas, skalabilitas, dan kemudahan pengembangan sistem.
Contoh Sederhana
Sebagai ilustrasi, sebuah sistem e-commerce dapat dipecah menjadi beberapa service berikut:
- User Service → menangani autentikasi dan data pengguna
- Order Service → mengelola proses pemesanan
- Payment Service → memproses pembayaran
- Notification Service → mengirim notifikasi kepada pengguna
Setiap service memiliki tugas masing-masing dan dapat berjalan secara terpisah, namun tetap saling berkomunikasi untuk membentuk satu sistem yang utuh.
Inti Konsep
Dengan demikian, microservices memungkinkan sistem menjadi lebih modular, mudah dikembangkan, dan siap untuk kebutuhan skala besar.
2. Perbandingan dengan Monolithic Architecture
Monolithic
Monolithic Architecture adalah pendekatan di mana seluruh fitur aplikasi dibuat dalam satu sistem besar (satu codebase dan satu deploy).
Ciri utama:
- Semua modul jadi satu (login, order, payment, dll)
- Satu database
- Deploy harus sekaligus
Contoh sederhana:
Aplikasi Toko Online
→ Login
→ Produk
→ Order
→ Pembayaran
(Semua dalam 1 aplikasi)
Kelebihan:
- Mudah dibuat untuk pemula
- Struktur sederhana
- Debugging lebih mudah
Kekurangan:
- Sulit dikembangkan jika sudah besar
- Sulit scaling (harus seluruh aplikasi)
- Jika error → bisa ganggu semua fitur
Microservices
Microservices Architecture adalah pendekatan di mana aplikasi dibagi menjadi beberapa layanan kecil (services) yang masing-masing memiliki fungsi tertentu dan saling berkomunikasi melalui jaringan (API, queue, atau event).
Ciri utama:
- Setiap fitur dipisah menjadi service
- Service berjalan di server/port berbeda
- Komunikasi melalui HTTP, API, atau event
- Bisa dikembangkan dan di-deploy sendiri
Contoh sederhana:
Sistem Toko Online
→ User Service (login)
→ Product Service (produk)
→ Order Service (order)
→ Payment Service (pembayaran)
Semua berjalan terpisah, tidak dalam satu aplikasi besar.
Kelebihan:
- Mudah dikembangkan (modular)
- Bisa scaling per service
- Lebih fleksibel teknologi
- Error tidak menyebar ke seluruh sistem
Kekurangan:
- Lebih kompleks
- Perlu manajemen antar service
- Debugging lebih sulit
- Butuh jaringan yang stabil
3. Karakteristik Microservices
a. Single Responsibility
Single Responsibility adalah prinsip dalam arsitektur (terutama pada microservices) di mana setiap service hanya memiliki satu tugas utama dan fokus pada satu fungsi saja.
Artinya, satu service tidak boleh mengerjakan banyak hal sekaligus agar:
- Lebih mudah dikembangkan
- Lebih mudah diperbaiki
- Tidak saling mengganggu antar sistem
Contoh:
- Order Service → hanya mengelola data dan proses pesanan
- Payment Service → hanya menangani proses pembayaran
b. Loose Coupling
Loose Coupling adalah prinsip di mana antar service tidak saling bergantung secara kuat, sehingga masing-masing bisa berjalan sendiri tanpa harus menunggu atau bergantung penuh pada service lain.
Artinya, jika satu service mengalami masalah, service lain tetap bisa berfungsi.
Contoh:
- Payment Service mati → Order Service tetap bisa menerima dan menyimpan pesanan
- Pembayaran bisa diproses nanti saat service kembali normal
c. Independently Deployable
Independently Deployable adalah prinsip di mana setiap service dapat di-deploy (di-update/di-install) secara terpisah tanpa harus mengganggu service lain.
Artinya, perubahan pada satu service tidak perlu membuat seluruh sistem ikut di-deploy ulang.
Contoh:
- Update fitur di Payment Service → cukup deploy service tersebut saja
- Order Service tetap berjalan normal tanpa perlu diubah
d. Decentralized Data
Decentralized Data adalah prinsip di mana setiap service memiliki dan mengelola database-nya sendiri, tidak berbagi database langsung dengan service lain.
Artinya, data tidak disatukan dalam satu database besar, tetapi dipisah sesuai fungsi masing-masing service.
Contoh:
- Order Service → punya database khusus data pesanan
- Payment Service → punya database khusus data transaksi pembayaran
Jika butuh data dari service lain, dilakukan melalui API, bukan langsung akses database.
e. Scalable
Scalable adalah prinsip di mana setiap service dapat ditingkatkan kapasitasnya (scale) sesuai kebutuhan, tanpa harus menaikkan seluruh sistem.
Artinya, hanya service yang sibuk saja yang ditambah resource (server, RAM, instance).
Contoh:
- Saat banyak transaksi → Payment Service di-scale up (ditambah server)
- Order Service tetap seperti biasa jika tidak terlalu sibuk
4. Komponen Utama Microservices
Contoh pada sistem pembayaran terdapat:
1. Frontend (Client)
Frontend (Client) adalah bagian sistem yang berinteraksi langsung dengan pengguna (user), biasanya berupa tampilan website atau aplikasi.
Berfungsi:
- Input data dari user (form, klik tombol, dll)
- Mengirim request ke backend (API/server)
- Menampilkan hasil dari server ke user
Contoh:
- Form checkout (isi alamat, pilih produk, bayar)
- Halaman login, dashboard, dll
2. Order Service
Order Service adalah service yang bertanggung jawab mengelola seluruh proses pesanan (order) dari user.
Tugas:
- Validasi input (cek data pesanan valid atau tidak)
- Menyimpan data order ke database
- Memasukkan order ke queue untuk diproses lebih lanjut
3. Database Queue
Database Queue adalah komponen yang digunakan untuk menyimpan antrian (queue) dari proses yang akan dijalankan secara bertahap.
Berfungsi:
- Menyimpan antrian proses (misalnya order yang belum diproses)
- Mengatur urutan eksekusi tugas (first in, first out / FIFO)
- Menjaga sistem tetap stabil saat terjadi lonjakan request
Contoh:
- Data order masuk ke queue → diproses satu per satu oleh worker
4. Worker
Worker adalah komponen yang bertugas menjalankan proses di belakang layar (background process) berdasarkan antrian dari queue.
Tugas:
- Mengambil data dari queue
- Memproses data sesuai kebutuhan (misalnya kirim ke service lain, hitung, update status)
Contoh:
- Worker mengambil data order dari queue → lalu mengirim ke Payment Service untuk diproses
5. Payment Service
Payment Service adalah service yang bertanggung jawab menangani seluruh proses pembayaran dalam sistem.
Tugas:
- Memproses pembayaran (validasi, transaksi, konfirmasi)
- Mengupdate status order (misalnya: pending → paid)
Contoh:
- Data order dikirim dari worker → Payment Service memproses pembayaran → status order diperbarui
6. Event / Notification
Event / Notification adalah komponen yang bertugas mengirimkan informasi atau pemberitahuan ke frontend (user) setelah suatu proses selesai.
Berfungsi:
- Mengirim notifikasi ke frontend
- Memberi update status secara real-time (atau mendekati real-time)
- Menginformasikan hasil proses (berhasil/gagal)
Contoh:
- Setelah pembayaran berhasil → user mendapat notifikasi “Pembayaran berhasil”
- Status order di frontend otomatis berubah menjadi paid
5. Pola Komunikasi dalam Microservices
1. Synchronous Communication
Synchronous Communication adalah metode komunikasi di mana request dikirim dan harus menunggu respon secara langsung (real-time) sebelum melanjutkan proses berikutnya.
Contoh:
- Frontend → Order Service (menggunakan HTTP request)
Karakteristik:
- Cepat untuk proses sederhana
- Client harus menunggu respon (blocking)
- Cocok untuk validasi atau input data langsung
2. Asynchronous Communication
Asynchronous Communication adalah metode komunikasi di mana proses tidak harus menunggu respon langsung, melainkan dikirim ke sistem antrian (queue) untuk diproses di belakang layar.
Contoh:
- Order → Queue → Worker
Karakteristik:
- Tidak blocking (tidak perlu menunggu)
- Diproses di background oleh worker
- Lebih stabil saat trafik tinggi
3. Event-Driven Communication
Event-Driven Communication adalah metode komunikasi di mana service saling berinteraksi berdasarkan kejadian (event) yang terjadi dalam sistem.
Contoh:
- Payment selesai → kirim event → frontend menerima update
Karakteristik:
- Berdasarkan event (kejadian tertentu)
- Tidak harus komunikasi langsung antar service
- Cocok untuk notifikasi dan update real-time
6. Alur Sistem Microservices

7. Contoh Implementasi (Sesuai Praktikum Anda)
Contoh Synchronous
fetch('http://localhost:8001/order.php', {
method: 'POST',
body: formData
});
Frontend mengirim data ke Order Service
Contoh Asynchronous (Queue)
INSERT INTO payment_queue (order_id, status)
VALUES (1, 'waiting');
Order dimasukkan ke antrean
Contoh Worker
while (true) {
ambil queue;
kirim ke payment service;
}
Contoh Event (SSE)
echo "data: Pembayaran berhasil\n\n";
Notifikasi muncul di browser
8. Prinsip Desain Microservices
a. API-Based
Service saling berkomunikasi menggunakan API (Application Programming Interface), biasanya melalui HTTP/REST atau message API.
b. Service Isolation
Setiap service terpisah dan berdiri sendiri, baik dari sisi kode, proses, maupun data.
c. Fault Tolerance
Sistem dirancang agar tetap berjalan meskipun ada service yang gagal.
Contoh: Payment Service error → Order tetap tersimpan
d. Observability
Sistem harus bisa dipantau dan dianalisis dengan mudah untuk mengetahui kondisi dan masalah.
Meliputi:
- Log → catatan aktivitas sistem
- Monitoring → pemantauan performa (CPU, request, dll)
- Tracing → melacak alur request antar service
Keuntungan Microservices
- Skalabilitas Tinggi → Service bisa di-scale sesuai kebutuhan
- Fleksibel Teknologi → Tiap service bisa pakai teknologi berbeda
- Deployment Cepat → Update bisa per service tanpa ganggu sistem lain
- Fault Isolation → Error tidak menyebar ke seluruh sistem
Kekurangan Microservices
- Kompleksitas Tinggi → Banyak service, lebih sulit dikelola
- Debugging Sulit → Error tersebar di banyak service
- Latency → Komunikasi via jaringan lebih lambat
- Konsistensi Data → Sulit sinkron antar database
Tantangan Microservices
- Distributed Data → Data tersebar, perlu sinkronisasi
- Network Failure → Risiko gagal komunikasi antar service
- Service Dependency → Ketergantungan bisa jadi bottleneck
- Security → Banyak API, risiko keamanan lebih besar
Studi Kasus Nyata (Real World)
a. E-Commerce
User melakukan pemesanan → diproses oleh Order Service → dibayar melalui Payment Service → dikirim oleh Shipping Service → user menerima notifikasi
b. Ride-Hailing (Transportasi Online)
User memesan perjalanan → sistem mencari driver → perjalanan berlangsung → pembayaran diproses → notifikasi dikirim
c. Streaming (Video/Music)
User login → akses konten → sistem memberi rekomendasi → konten diputar (streaming)
Semua sistem besar menggunakan microservices karena membagi proses menjadi bagian kecil agar lebih fleksibel, scalable, dan mudah dikembangkan