Pertemuan 11: Estimasi Kapasitas Sistem
Tugas: Estimasi Kapasitas Sistem Aplikasi Sehari-hari
Deskripsi Aplikasi Grab
Grab adalah platform super app yang menyediakan berbagai layanan sehari-hari di Asia Tenggara. Aplikasi ini sangat membantu dalam aktivitas sehari-hari, terutama bagi mahasiswa seperti saya yang sering menggunakannya untuk pulang kuliah, berangkat kuliah, atau bepergian kemanapun. Beberapa layanan utama Grab meliputi
1. Transportasi: Grab menawarkan layanan transportasi dengan berbagai opsi seperti GrabCar, GrabBike, dan GrabTaxi, memungkinkan pengguna untuk memesan kendaraan sesuai kebutuhan mereka.
2. Pengiriman Makanan: GrabFood memungkinkan pengguna untuk memesan makanan dari restoran lokal dan mendapatkan pengiriman langsung ke tempat mereka.
3. Pengiriman Barang: GrabExpress menyediakan layanan pengiriman barang, memungkinkan pengguna untuk mengirim paket atau dokumen dengan cepat dan aman.
4. Pembayaran Digital: GrabPay adalah layanan pembayaran digital yang memungkinkan pengguna untuk melakukan pembayaran online maupun offline dengan mudah.
5. Layanan Keuangan: Grab juga menyediakan layanan keuangan seperti pinjaman, asuransi, dan investasi melalui GrabFinance.
Estimasi Kapasitas Kebutuhan Resource untuk Aplikasi Grab
2.1. Traffic Estimates
- Active Users: 10 juta
- Daily Active Users (DAU): 5 juta
- Requests per user per day: 10
- Total requests per day: 50 juta
Perhitungan QPS (Queries per Second):
- Avg QPS:
50 juta24 jam * 3600 detik/jam 580 requests/detik
- Peak QPS:
2 * 580 requests/detik 1160 requests/detik
2.2. Storage Estimates
- 200 bytes for name: 200MB
- 500 bytes for photo: 500MB
- 10 bytes for badge ID: 10MB
- 4 bytes for points: 4MB
- Total storage per user: 714 bytes
Storage untuk 10 juta pengguna:
- Total Storage: 10 juta pengguna * 714 bytes = 7.14 TB
2.3. Bandwidth Estimates
- Profile data fetched per request:
- 200 bytes (name)
- 500 bytes (photo)
- 10 bytes (badge)
- 4 bytes (points)
- Total: 714 bytes
- Daily active users: 5 juta
- Profile requests per user per day: 10
- Requests per day: 50 juta
Perhitungan Daily Bandwidth:
- Total Daily Bandwidth: 50 * 714 bytes 35 GB/hari
Penjelasan Detail Kapasitas Kebutuhan Resource untuk Aplikasi Grab
Hardware Resources
CPU:
- Estimasi kebutuhan CPU didasarkan pada jumlah transaksi per detik (TPS) dan kompleksitas algoritma.
- Misalkan, Grab harus memproses 10.000 transaksi per detik pada jam sibuk. Dengan asumsi setiap transaksi membutuhkan 10 ms waktu CPU, maka kebutuhan CPU adalah sekitar 100 CPU core.
Memory (RAM):
- Memori yang diperlukan untuk menyimpan state aplikasi dan cache data.
- Dengan 10.000 transaksi per detik, dan setiap transaksi membutuhkan 100 KB memori, maka total kebutuhan memori adalah sekitar 1 GB per detik.
- Untuk mempertahankan performa selama 1 jam puncak, dibutuhkan sekitar 3.6 TB RAM.
Storage:
- Penyimpanan data untuk histori transaksi, data pengguna, dan log aplikasi.
- Dengan asumsi setiap transaksi menghasilkan 1 MB data, untuk 10.000 transaksi per detik, total penyimpanan yang diperlukan per hari adalah sekitar 864 TB.
- Pertimbangan tambahan untuk redundansi dan backup.
Network Bandwidth:
- Kebutuhan bandwidth jaringan berdasarkan volume data yang ditransfer antara server dan pengguna.
- Jika setiap transaksi melibatkan pertukaran data 500 KB, untuk 10.000 transaksi per detik, total bandwidth yang diperlukan adalah sekitar 5 Gbps.
Software Efficiency
- Optimasi algoritma untuk memastikan penggunaan CPU dan memori yang efisien.
- Penggunaan data structures yang efisien untuk mengurangi overhead memori.
Workload Characteristics
- Analisis pola beban kerja termasuk intensitas dan variabilitas penggunaan.
- Peak periods selama jam sibuk dan estimasi kapasitas yang dibutuhkan selama puncak ini.
User Behavior
- Pola perilaku pengguna seperti kebiasaan browsing, volume transaksi, dan tingkat konkuren.
- Estimasi jumlah pengguna aktif harian dan concurrent users selama jam sibuk.
Scalability
- Kemampuan untuk scaling vertikal (menambah kapasitas pada satu node) dan horizontal (menambah jumlah node).
- Penggunaan teknologi container seperti Kubernetes untuk manajemen skala horizontal.
Performance Metrics
- Throughput: 10.000 transaksi per detik.
- Response Time: Di bawah 2 detik per transaksi.
- Resource Utilization: Optimalisasi penggunaan CPU, memori, dan bandwidth.
- Concurrency: Kemampuan menangani 100.000 pengguna secara simultan.
- Latency: Menjaga latency di bawah 1 detik untuk transaksi kritis.
- Peak Load Handling: Kapasitas untuk menangani 20.000 transaksi per detik selama jam puncak.
Failure Scenarios
- Redundansi hardware dan failover mechanisms untuk menjaga uptime.
- Penanganan outage jaringan dan pemulihan data dari backup.
Metrics for Capacity Estimation
- Throughput, Response Time, Resource Utilization, Concurrency, Latency, Peak Load Handling, Scalability Metrics, Queue Length, Sustainability.
Methods and Techniques
- Benchmarking: Simulasi beban kerja untuk mengukur performa.
- Modeling and Simulation: Penggunaan alat simulasi untuk memprediksi performa.
- Historical Data Analysis: Analisis data historis untuk mengidentifikasi pola dan tren.
- Load Testing: Uji beban untuk mengidentifikasi batas kapasitas.
- Capacity Planning Tools: Penggunaan alat khusus untuk perencanaan kapasitas.
- Prototyping: Membangun prototipe untuk evaluasi performa dan skalabilitas.
Capacity Estimation for Different Components
- CPU: Estimasi berdasarkan power processing dan jumlah core.
- Memory: Analisis pola penggunaan memori dan estimasi puncak penggunaan.
- Storage: Estimasi berdasarkan laju pertumbuhan data dan kebutuhan redundansi.
- Network Bandwidth: Evaluasi kebutuhan bandwidth berdasarkan pola lalu lintas data.
- Database Resources: Estimasi kapasitas database berdasarkan volume data dan kompleksitas query.
Contoh Kasus dan Studi
1. E-commerce Website Scalability:
- Simulasi kondisi lalu lintas puncak dan pengukuran metrik performa.
- Provisioning instance server tambahan dan optimasi query database untuk mengelola beban tambahan.
2. Cloud Infrastructure Capacity Planning:
- Analisis data historis dan prediksi tren pertumbuhan masa depan.
- Implementasi kebijakan auto-scaling untuk penyesuaian alokasi sumber daya secara dinamis.
Tantangan dan Pertimbangan
- Beban kerja dinamis, pola pertumbuhan yang tidak pasti, keterbatasan hardware, kompleksitas software, dan variasi perilaku pengguna.
Best Practices
- Memulai estimasi kapasitas sejak awal desain sistem.
- Mengumpulkan data akurat, mempertimbangkan variasi beban kerja, merencanakan skalabilitas, dan secara rutin meninjau serta memperbarui estimasi kapasitas.
Tools dan Sumber Daya
- Load Testing Tools: Apache JMeter, LoadRunner, Gatling.
- Monitoring Platforms: Prometheus, Nagios, Datadog.
- Cloud Services: AWS, Azure, Google Cloud.
- Capacity Planning Guides: Panduan perencanaan kapasitas, whitepapers, dan kursus online.
- Community Forums and Blogs: Forum, blog, dan komunitas online yang didedikasikan untuk desain sistem dan perencanaan kapasitas.
Comments
Post a Comment