Home Blog Series B B05
Series B: System Design for Indonesian Developers · B05 Architecture 29 September 2025 9 min read

Microservices Bukan Tentang Teknologi — Ini Tentang Conway's Law

Sistem yang dibangun organisasi mencerminkan struktur komunikasi organisasi tersebut. Kenapa ini penting untuk keputusan arsitektur di startup dan enterprise Indonesia.

RM
Ryan Muliadi
Digital Systems Architect · Ryzen Digital Systems

Saya pernah advise sebuah startup untuk migrate dari monolith ke microservices. Enam bulan kemudian mereka kembali ke monolith — bukan karena teknologinya salah, tapi karena tim mereka tidak berubah.

Conway's Law menyatakan bahwa sistem yang dibangun organisasi akan mencerminkan struktur komunikasi organisasi tersebut. Ini bukan observasi — ini hukum yang hampir tidak bisa dilawan.

Conway's Law — Apa Artinya dalam Praktik

Conway's Law (1967)
"Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations." — Melvin Conway

Implikasinya konkret: kalau tim Anda terdiri dari 3 orang yang semuanya ngobrol langsung setiap hari, sistem yang Anda bangun akan natural menuju 1 atau 2 komponen besar yang saling terhubung erat — bukan 12 microservices independen.

Conway's Law — Tim menentukan Arsitektur, bukan sebaliknya
Tim 3–5 orang · Satu tim Dev 1 Dev 2 Dev 3 Semua ngobrol langsung → Monolith / Modular Monolith Adalah arsitektur yang natural dan tepat Tim 3 Squad · 5 orang/squad Squad A Squad B Squad C Tiap squad autonomous → Microservices Natural karena minimisasi koordinasi antar tim

Anti-Pattern: Distributed Monolith

Ini yang terjadi pada startup yang saya ceritakan di awal: mereka memecah kode menjadi microservices, tapi tim masih sama dan saling bergantung. Hasilnya bukan microservices — ini distributed monolith.

KarakteristikTrue MicroservicesDistributed Monolith
Deploy service A, apakah perlu deploy B juga?Tidak — independentYa — tightly coupled
Database sharing antar serviceTidak — DB terpisahYa — shared DB
Tim yang maintain serviceSatu tim per serviceTim sama maintain semua
API contract changesVersioned, backward compatBreaking change, semua harus update
Failure isolationService A fail, B masih jalanService A fail, semua terpengaruh

Kapan Monolith Lebih Tepat untuk Konteks Indonesia

01
Tim < 10 developer
Overhead koordinasi microservices (service discovery, distributed tracing, API versioning) melebihi benefit-nya untuk tim kecil. Modular monolith dengan boundaries yang jelas adalah sweet spot.
02
Budget DevOps terbatas
Kubernetes, service mesh, distributed logging, dan observability stack untuk microservices bisa menambah 30–50% biaya cloud dan membutuhkan dedicated DevOps engineer. Untuk startup, ini luxury yang belum perlu.
03
Domain belum stabil
Microservices sulit di-refactor karena sudah ada network boundary. Kalau domain masih berubah-ubah (pivot, product-market fit belum ketemu), monolith jauh lebih mudah di-reshape.
Pattern · Modular Monolith untuk Tim Indonesia
# Struktur yang recommended untuk startup 3-10 dev
src/
├── modules/
│   ├── auth/          # Isolated module — punya domain logic sendiri
│   │   ├── domain/
│   │   ├── application/
│   │   └── infrastructure/
│   ├── orders/
│   ├── payments/      # Interface ke Midtrans
│   └── notifications/ # Interface ke WhatsApp/email
├── shared/
│   ├── database/      # Shared DB — tapi accessed via module interfaces
│   └── events/        # Internal event bus — siapkan untuk extract ke service
└── main.ts

# Rules:
# - Modul tidak import langsung dari modul lain
# - Komunikasi via interface/event, bukan direct function call
# - Ini membuat extract ke microservice jauh lebih mudah nanti
💡 Inverse Conway Maneuver

Jika Anda INGIN microservices, ubah struktur tim dulu — baru arsitekturnya akan natural mengikuti. Bentuk cross-functional squad yang autonomous, beri mereka ownership penuh atas domain tertentu, dan microservices akan emerge organically.

Kesimpulan

Microservices bukan tentang teknologi — ini tentang organizational design. Untuk tim Indonesia yang kebanyakan masih di bawah 20 developer, modular monolith dengan internal boundaries yang jelas hampir selalu lebih pragmatis dari distributed microservices.

Kalau bisa digambarkan sebagai "satu tim yang maintain semuanya," arsitekturnya sebaiknya juga satu unit yang bisa di-deploy sekaligus.