
Bagaimana Tokopedia dan Gojek Mendesain Servernya?
Saat kamu membuat aplikasi E-Commerce pertama kali (sebagai tugas kuliah atau proyek pribadi), kamu pasti menaruh fitur Login, fitur Keranjang Belanja, dan fitur Pembayaran di dalam satu folder project Node.js atau Laravel yang sama. Inilah yang disebut dengan arsitektur Monolith.
Arsitektur Monolithic (Satu Batu Raksasa)
Monolith berarti semua fitur disatukan dalam satu program utuh dan menggunakan satu Database yang sama.
- Kelebihan: Sangat mudah dibuat, sangat cepat untuk di-*deploy* ke server, dan *debugging* errornya gampang karena kodenya terpusat di satu tempat.
- Kelemahan: Bayangkan saat harbolnas (Hari Belanja Online Nasional). Pengunjung membludak hanya di halaman "Pembayaran". Karena kodenya menyatu, jika server "Pembayaran" crash, maka server "Login" dan "Katalog Produk" ikut mati total! Selain itu, tim developer akan sering bentrok (Merge Conflict) jika ratusan orang mengedit satu *repository* yang sama.
Arsitektur Microservices (Pasukan Server Kecil)
Perusahaan raksasa (Tech Giants) menyelesaikan masalah Monolith dengan memecahnya menjadi Microservices. Mereka memisahkan aplikasi berdasarkan fungsinya.
Misalnya, mereka membuat 3 *server* terpisah: Server A (Khusus Login), Server B (Khusus Etalase), dan Server C (Khusus Pembayaran). Ketiganya memiliki database masing-masing dan saling berkomunikasi via API (REST atau gRPC).
- Kelebihan: Jika saat harbolnas fitur "Pembayaran" *down* atau kelebihan beban, user masih bisa Login dan melihat Etalase secara normal! Kamu juga bisa menggunakan bahasa yang berbeda (Server Login pakai Go, Server AI Rekomendasi pakai Python).
- Kelemahan: SANGAT RUMIT. Biaya server (Cloud) menjadi sangat mahal. Komunikasi antar-server sering mengalami delay (Network Latency), dan mencari bug (Tracing) ibarat mencari jarum di tumpukan jerami.
Kesimpulan
Jangan termakan gengsi! Sebagai perusahaan rintisan (Startup) yang jumlah penggunanya belum jutaan, mulailah dengan Monolith yang rapi. Memaksakan Microservices di awal *project* adalah resep kehancuran yang disebut Premature Optimization. Gunakan Microservices hanya ketika tim-mu sudah sangat besar dan Monolith-mu mulai menghambat produktivitas.
Mau langsung pakai template?
Jelajahi template gratis dan premium di TampilKit untuk mempercepat proses development project kamu.
Browse Templates