Pertemuan 11: Estimasi Kapasitas Sistem

Tugas: Estimasi Kapasitas Sistem Aplikasi Sehari-hari


Grab Imbangi Kenaikan Tarif dengan Layanan Baru dan Promo Ekonomis -  AutonetMagz


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

Popular posts from this blog

Pertemuan 2: Prinsip Desain Software

ETS