Memandang tokokita utuh dalam produksi: arsitektur akhir dan alur user dari register sampai email, simulasi skenario kegagalan nyata (payment down, Kafka down, canary deploy), optimasi penggabungan layanan, hingga pelajaran berharga dan roadmap ke depannya

Inilah episode pamungkas. 27 episode sudah membangun tokokita dari nol: tujuh layanan, event bus, observability, keamanan, testing, CI/CD, scaling, sampai platform. Episode terakhir ini kita mundur satu langkah dan memandang semuanya — arsitektur akhir secara utuh, simulasi skenario kegagalan nyata, keputusan optimasi yang jujur, dan pelajaran yang seharusnya kalian bawa pulang.
Mengapa studi kasus & refleksi penting? Karena setelah semua pola dipelajari terpisah-pisah, di sinilah kalian melihat bagaimana mereka bekerja sama saat produksi berbicara — dan kapan kita sebaiknya berhenti memecah sesuatu.
Satu alur user: register → email selamat datang → login → browse → add to cart → checkout → bayar → status PAID → email bukti pembayaran.
Saat payment-service mati:
CONFIRMED (stok sudah di-reserve).order.confirmed ke Kafka — seluruh event di-buffer oleh event bus; tidak ada yang hilang.payment.succeeded.order CONFIRMED → (payment down, event mengendap di Kafka)
→ payment up → consume backlog → bayar → order PAID → email bukti
lewati 30 menit? → timeout saga (episode 13) membatalkan & me-release stokPelajaran: event bus + outbox adalah buffer kegagalan bawaan. Sistem tidak crash — ia melambat dan mengejar. Tidak perlu panik-reboot.
pending.Pelajaran: transactional outbox (episode 12) mengubah "Kafka down" dari insiden data-hilang menjadi insiden delay terkendali. Tanpa outbox, skenario ini adalah pemadaman senyap.
GitOps merilis canary 5% untuk order-service v1.4.4:
Pelajaran: canary + metric gate + auto-rollback membuat regresi jadi insiden kecil yang terukur, bukan downtime besar.
Note
Ketiga skenario menguji prinsip yang sama: reliabilitas bukan "tidak pernah gagal", melainkan "gagal dengan aman dan pulih sendiri" — event buffer untuk keterlambatan, outbox untuk kehilangan, idempotency untuk duplikasi, dan GitOps untuk rollback. Itulah komposisi sebenarnya dari istilah production-ready.
Kita tidak menutup-tutupi: arsitektur tokokita bisa lebih kecil.
Refleksi jujur dari seluruh series:
PERTIMBANGKAN microservices saat:
- volume traffic membuat skala selektif benar-benar perlu
- 3+ tim dengan domain yang jelas berbeda
- kebutuhan deploy independen nyata
MULAI dari modular monolith (episode 1) kecuali ada alasan di atasMicroservices dengan satu tim kecil dan traffic kecil tetap bisa, tapi kalian membayar kompleksitas (jaringan, observability 7x, deploy 7x) tanpa menikmati manfaatnya. Series ini mengajarkan keterampilan mengambil keputusan itu, bukan hanya menulis manifest.
Sampai di akhir perjalanan, mari kita rekap apa yang sudah dibangun:
Satu hal yang ingin selalu kalian ingat: microservices adalah keputusan arsitektur yang menjawab masalah organisasi dan volume — bukan tren, dan bukan lawan dari monolith. Mulai dari modular monolith, pecah dengan disiplin bounded context, dan jadikan event-driven serta observability sebagai bahasa pertama kalian. Terima kasih sudah menemani 28 episode Belajar Microservices — sampai jumpa di seri berikutnya, dan tetap semangat membangun!