Lewati ke konten utama

BAB 63. SCALABILITY STRATEGY

63.1 Tujuan

Strategi skalabilitas dirancang agar TemuBelajar mampu berkembang dari 100 pengguna menjadi jutaan pengguna tanpa perlu melakukan redesign arsitektur secara menyeluruh, hanya dengan menambahkan sumber daya komputasi.


63.2 Tahapan Skalabilitas

Tahap 1 — Single School

ParameterNilai
Pengguna~1.000
Meeting/tahun~20.000
Infrastruktur1 VM (4 vCPU, 8GB RAM)
Database1 MySQL Instance
Queue Worker1 Instance
CacheFile-based

Tahap 2 — Multi School

ParameterNilai
Pengguna~10.000
Meeting/tahun~200.000
Infrastruktur1 VM (8 vCPU, 16GB RAM)
DatabaseMySQL + Redis
Queue Worker3 Instances
CacheRedis

Tahap 3 — District Scale

ParameterNilai
Pengguna~100.000
Meeting/tahun~2.000.000
InfrastrukturLoad Balancer + 3 App Servers
DatabasePrimary + 1 Read Replica
Queue Worker10 Instances (Horizon)
CacheRedis Sentinel

Tahap 4 — National Scale

ParameterNilai
Pengguna~1.000.000+
Meeting/tahun~20.000.000+
InfrastrukturKubernetes Cluster
DatabaseSharding + Multi-Region Replica
Queue WorkerAuto-scaling
CacheRedis Cluster
CDNGlobal CDN

63.3 Arsitektur Skalabel

flowchart TD
U["👥 Users"] --> LB["⚖️ Load Balancer\n(Nginx / HAProxy)"]
LB --> A1["🟥 App Server 1"]
LB --> A2["🟥 App Server 2"]
LB --> A3["🟥 App Server 3"]

A1 & A2 & A3 --> REDIS[("🔴 Redis Cluster\n(Cache + Queue)")]
A1 & A2 & A3 --> DBP[("💾 MySQL Primary")]
DBP --> DBR[("💾 MySQL Read\nReplica")]

REDIS --> Q["⏳ Queue Workers\n(Horizon)"]
Q --> DBP

style LB fill:#059669,color:#fff
style REDIS fill:#dc2626,color:#fff

63.4 Strategi Per Komponen

KomponenStrategi Skalabilitas
API ServerStateless — dapat di-scale horizontal tanpa state sharing
AutentikasiSanctum token (stateless, tidak perlu sticky session)
CacheRedis Cluster dengan consistent hashing
QueueRedis Queue + multiple worker + auto-scaling
File StorageObject Storage (S3-compatible) — dapat di-scale tanpa batas
Chat (WebSocket)Reverb Cluster dengan channel broadcast terdistribusi
DatabasePrimary untuk write, Read Replica untuk query berat
SearchDedicated search engine (Meilisearch/Elasticsearch) di Tahap 4

63.5 Prinsip Skalabilitas

flowchart LR
P1["📦 Stateless\nApp Server"] --> S["✅ Scalable"]
P2["🔴 Redis\nCentral Cache"] --> S
P3["⏳ Async\nQueue Processing"] --> S
P4["💾 DB Separation\n(Read/Write)"] --> S
P5["☁️ Object\nStorage"] --> S

style S fill:#059669,color:#fff

:::tip Prinsip Utama Skalabilitas horizontal (menambah server) jauh lebih murah dan mudah daripada skalabilitas vertikal (upgrade server yang ada). Arsitektur TemuBelajar dirancang stateless untuk mendukung ini. :::