Back to IF3130 Sistem Paralel dan Terdistribusi

Topic

Questions/Cues

  • Apa beda model request-based vs event-based?

  • Apa itu Broker Topology?

  • Apa keuntungan arsitektur event-driven?

  • Apa kerugian (trade-offs) nya?

  • Apa itu Eventual Consistency?

  • Apa dampak performa asinkronus?

Reference Points

  • Slides 21-23 (10 - IF3130-09-Architecture-2022.pdf)

  • Kuliah Arsitektur Sistem Terdistribusi

1. Request-Based vs Event-Based

Ini adalah dua model fundamental untuk interaksi antar komponen.

  1. Request-Based Model (Sinkronus):

    • Ada Request Orchestrator (Pengatur) yang mengontrol alur.

    • Alur: UI mengirim Request Orchestrator memanggil Processor A Menunggu A selesai Memanggil Processor B, dst.

    • Control flow sangat jelas dan eksplisit.

    • Komunikasi bersifat sinkronus (menunggu balasan).

  2. Event-Based Model (Asinkronus):

    • Menggunakan topologi Broker.

    • Komponen Event Producer (misal: service A) mengirimkan event (pesan “sesuatu telah terjadi”) ke Event Channel / Broker (misal: Kafka, RabbitMQ).

    • Komponen Event Processor (misal: service B) subscribe (berlangganan) ke event tersebut. Ketika event muncul di Broker, Broker mengirimkannya ke Processor.

    • Producer tidak tahu (dan tidak peduli) siapa yang akan memproses event-nya.

    • Komunikasi bersifat asinkronus (fire-and-forget).

2. Trade-offs Event-Driven Architecture (EDA)

EDA memiliki keuntungan dan kerugian yang signifikan.

Keuntungan (Advantages):

  • Responsif: Sistem bisa bereaksi secara real-time terhadap perubahan/kejadian.

  • Skalabilitas & Elastisitas: Sangat mudah di-scale. Jika satu processor kewalahan, tinggal tambahkan instance processor baru yang subscribe ke event yang sama.

  • Agility & Extensibility: Sangat mudah menambah fungsionalitas baru. Cukup buat service baru dan minta ia subscribe ke event yang ada, tanpa perlu mengubah service lama.

  • Performance: Performa dirasakan (perceived performance) meningkat karena komunikasi asinkronus (dijelaskan di poin 3).

Kerugian (Trade-offs):

  • Eventual Consistency: Karena asinkronus, data tidak akan konsisten secara instan. Ada jeda waktu. Contoh: Anda pesan tiket, status langsung “Pending”. Event diproses di background, dan beberapa detik kemudian status berubah jadi “Confirmed”. Sistem pada akhirnya (eventually) akan konsisten.

  • Kontrol Alur Kurang: Sulit melacak alur proses secara keseluruhan. (Misal: “Setelah event A, apakah B atau C yang jalan duluan?”).

  • Sulit di-Test dan di-Debug: Jauh lebih sulit melacak bug karena alurnya tidak linear dan tersebar di banyak processor.

3. Synchronous vs Asynchronous Communication

Asumsi: Proses di server (Consumer) butuh 3000ms.

  • Synchronous (misal: REST):

    1. Producer kirim request (butuh 50ms).

    2. Producer WAIT (Menunggu).

    3. Consumer proses (3000ms).

    4. Consumer kirim response (50ms).

    5. Producer menerima response dan bebas (GO).

  • Total Waktu Producer Terblokir: 3100ms.

  • Asynchronous (misal: Event):

    1. Producer kirim event (butuh 25ms, lebih cepat karena protokol messaging ringan).

    2. Producer langsung bebas (GO). Broker akan mengurus pengiriman.

    3. Di background, Consumer menerima event (25ms) dan memprosesnya (3000ms).

  • Total Waktu Producer Terblokir: 25ms.

Kesimpulan: Waktu proses total end-to-end mungkin sama (sekitar 3050ms), tapi responsiveness (dilihat dari sisi Producer) jauh lebih cepat di model asinkronus. Producer bisa langsung mengerjakan hal lain.

Summary

Arsitektur Berbasis Peristiwa (Event-Driven) mengubah model komunikasi dari request-reply sinkronus menjadi publish-subscribe asinkronus menggunakan event broker. Ini memberikan keuntungan besar dalam hal skalabilitas, fleksibilitas (extensibility), dan responsiveness (karena producer tidak terblokir lama). Namun, ini dibayar dengan kerugian berupa kompleksitas debugging dan model konsistensi data yang lebih lemah, yaitu Eventual Consistency.