2023-12-28•12 menit baca
Pengantar Desain Sistem
System DesignArchitectureBackend
Pelajari konsep dasar dan pendekatan untuk merancang sistem terdistribusi skala besar.
Pengantar Desain Sistem
Desain sistem penting untuk membangun aplikasi yang dapat berkembang. Berikut konsep dasarnya.
Konsep Utama
Skalabilitas
Skala vertikal: Tambahkan sumber daya ke mesin yang sudah ada.
Skala horizontal: Tambahkan lebih banyak mesin.
Penyeimbangan Beban
Bagikan lalu lintas ke beberapa server:
User → Load Balancer → Server 1
→ Server 2
→ Server 3
Cache
Simpan data yang sering diakses:
- CDN: Aset statis.
- Redis/Memcached: Data aplikasi.
- Cache browser: Data sisi klien.
Database
Pilih sesuai kebutuhan:
| Kebutuhan | Database |
|---|---|
| Data relasional | PostgreSQL |
| Skema fleksibel | MongoDB |
| Cache | Redis |
| Pencarian | Elasticsearch |
| Analitik | ClickHouse |
Pola Desain
Microservices
Pecah sistem menjadi layanan yang mandiri.
Arsitektur Berbasis Peristiwa
Gunakan message queue untuk komunikasi asinkron.
CQRS
Pisahkan operasi membaca dan menulis data.
Pertanyaan Wawancara yang Umum
- Rancang pemendek URL.
- Rancang feed Twitter.
- Rancang backend Uber.
- Rancang sistem chat.
Kesimpulan
Latih kemampuan merancang sistem. Mulai dari kebutuhan, lalu pikirkan cara mengembangkannya.