Back to IF4031 Arsitektur Aplikasi Terdistribusi

Topic: Design Patterns dalam Sistem Terdistribusi (Studi Kasus Uber)

Questions/Cues

  • Apa itu Sharding?

  • Cara kerja Gossip Protocol

  • Fungsi Gateway Aggregation

  • Apa itu BFF?

  • Konsep Circuit Breaker

  • Kegunaan WAL

  • Exponential Backoff

Reference Points

  • Arsitektur Uber.pdf (Halaman 2: Patterns)

  • Karakteristik Sistem Kompleks.pdf (Solusi teknis)

1. Sharding (Penskalaan Horizontal)

Konteks: Digunakan ketika satu database (seperti PostgreSQL tunggal di Uber) tidak lagi mampu menampung volume data yang masif.

Penerapan: Membagi data besar ke dalam partisi-partisi logis yang disebut shards berdasarkan kunci tertentu (misal: UUID perjalanan).

Manfaat: Memungkinkan penambahan node database baru secara linear tanpa mengganggu sistem secara keseluruhan.

2. Gossip Dissemination (Protokol Gosip)

Konteks: Kebutuhan untuk mendeteksi kesehatan ribuan server tanpa bergantung pada satu koordinator pusat (Single Point of Failure).

Penerapan: Setiap node server secara acak memilih node lain untuk bertukar informasi status (ping). Informasi kesehatan server menyebar ke seluruh klaster seperti “gosip”.

Tools: Uber menggunakan library Ringpop untuk manajemen status pengemudi yang terdistribusi.

3. Gateway Aggregation & Backends for Frontends (BFF)

Konteks: Aplikasi mobile tidak efisien jika harus memanggil ratusan microservices secara langsung.

Gateway Aggregation: Menggunakan satu titik masuk (Edge Gateway) untuk menggabungkan banyak permintaan dari klien menjadi satu.

BFF: Membuat lapisan khusus (Presentation Layer) yang melayani kebutuhan spesifik antarmuka (iOS/Android), memisahkan logika tampilan dari logika bisnis di backend.

4. Circuit Breaker & Retry

Konteks: Mencegah kegagalan di satu layanan agar tidak merambat ke seluruh sistem (cascading failure).

Circuit Breaker: Memutus koneksi secara otomatis ke layanan yang sedang bermasalah/lambat.

Retry: Melakukan percobaan ulang otomatis untuk menangani kegagalan sementara (transient failures).

5. Write-Ahead Log (WAL)

Konteks: Menjamin durabilitas data agar tidak hilang saat sistem mati mendadak.

Penerapan: Setiap perubahan data tidak langsung menimpa data lama, melainkan ditulis sebagai entri baru yang berurutan dalam log yang tidak dapat diubah (append-only). Log ini menjadi sumber kebenaran (source of truth) untuk replikasi.

6. Exponential Backoff & Jitter

Konteks: Menangani fenomena Retry Storm agar server yang baru pulih tidak langsung tumbang lagi.

Penerapan: Menambahkan jeda waktu yang meningkat secara bertahap sebelum melakukan percobaan ulang, serta menambahkan delay acak (jitter) agar permintaan dari jutaan klien tidak masuk di detik yang sama.

Summary

Design Patterns adalah solusi standar untuk masalah berulang dalam arsitektur sistem. Pola seperti Sharding dan Gossip Protocol menangani masalah skalabilitas dan koordinasi, sementara Circuit Breaker dan BFF berfokus pada ketahanan sistem dan efisiensi komunikasi antara klien dan server. Penggunaan pola yang tepat, seperti WAL, memastikan integritas data tetap terjaga dalam kondisi ekstrem sekalipun.