Materi/System Design
πŸ—οΈ

System Design

Advanced+500 XP

Chapter

System Design Fundamentals

System design adalah proses mendefinisikan arsitektur, komponen, dan interface sistem untuk memenuhi requirement tertentu.

Monolith vs Microservices

Monolith

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

Microservices

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

Load Balancing

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 sama

Horizontal vs Vertical Scaling

Vertical (Scale Up):        Horizontal (Scale Out):
Server kecil β†’ besar        Tambah server baru

     β–²                       β–‘ β–‘ β–‘
     β–ˆ  β†’  β–ˆβ–ˆβ–ˆβ–ˆ              β†’ tambah β–‘ β–‘
     β–Ό
Mahal, ada batas            Murah, bisa terus tambah