Chapter
System design adalah proses mendefinisikan arsitektur, komponen, dan interface sistem untuk memenuhi requirement tertentu.
Semua fitur dalam satu aplikasi.
βββββββββββββββββββββββββββββββ
β Monolith App β
β ββββββββ ββββββββ βββββββ β
β β Auth β βPosts β βChat β β
β ββββββββ ββββββββ βββββββ β
β One Database β
ββββββββββββββββββββββββββββββββ Mudah develop & deploy awal
β Tidak ada network latency antar service
β Sulit scale bagian tertentu
β Satu error bisa crash semua
Setiap fitur jadi service terpisah.
Client
β
API Gateway
βββ Auth Service β Auth DB
βββ Post Service β Post DB
βββ Chat Service β Chat DBβ Scale per service
β Deploy independen
β Kompleks β network calls, distributed tracing
β Tidak cocok untuk tim kecil
Mendistribusikan traffic ke beberapa server.
ββββ Server 1
Client β Load ββββ Server 2
Balancer ββββ Server 3
Algoritma:
- Round Robin β bergantian urut
- Least Connections β ke server paling sedikit koneksi
- IP Hash β client yang sama selalu ke server yang samaVertical (Scale Up): Horizontal (Scale Out):
Server kecil β besar Tambah server baru
β² β‘ β‘ β‘
β β ββββ β tambah β‘ β‘
βΌ
Mahal, ada batas Murah, bisa terus tambah