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. :::