{"id":32479,"date":"2026-08-08T04:56:50","date_gmt":"2026-08-08T04:56:50","guid":{"rendered":"https:\/\/hosteko.com\/blog\/?p=32479"},"modified":"2026-08-08T04:56:50","modified_gmt":"2026-08-08T04:56:50","slug":"apa-itu-event-driven-architecture","status":"publish","type":"post","link":"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture","title":{"rendered":"Apa Itu EDA (Event-Driven Architecture)? Mengenal Secara Lengkap"},"content":{"rendered":"<h1>Apa Itu Event-Driven Architecture? Pengertian, Cara Kerja, Komponen, Manfaat, dan Contohnya<\/h1>\n<p>Perkembangan aplikasi digital membuat sistem perangkat lunak harus mampu menangani berbagai aktivitas secara cepat dan terdistribusi. Ketika pengguna melakukan pembayaran, membuat pesanan, mengubah data, mengunggah file, atau ketika perangkat IoT mengirimkan informasi, aplikasi perlu merespons kejadian tersebut dan meneruskannya ke komponen lain yang membutuhkan informasi.<\/p>\n<p>Salah satu pendekatan yang dapat digunakan untuk kebutuhan tersebut adalah <em>Event-Driven Architecture (EDA) <\/em>atau <em>arsitektur berbasis event<\/em>. Pendekatan ini menjadikan event sebagai bagian penting dalam komunikasi antarkomponen sistem. Ketika sebuah kejadian terjadi, sistem dapat menghasilkan event yang kemudian diterima dan diproses oleh komponen lain.<\/p>\n<p>EDA banyak digunakan dalam aplikasi terdistribusi, microservices, pemrosesan data, IoT, integrasi aplikasi, dan berbagai sistem yang membutuhkan pemrosesan event dengan jeda waktu yang rendah.<\/p>\n<p>Namun, Event-Driven Architecture bukan sekadar penggunaan message broker. EDA mencakup cara sistem menghasilkan, menyalurkan, memproses, dan mengelola event. Karena itu, penerapannya juga memiliki konsekuensi seperti eventual consistency, pengelolaan urutan event, penanganan kegagalan, observability, serta perubahan schema.<\/p>\n<h2>Apa Itu Event-Driven Architecture?<\/h2>\n<p>Event-Driven Architecture adalah gaya arsitektur perangkat lunak yang menggunakan event untuk mengomunikasikan perubahan atau kejadian kepada komponen lain yang berkepentingan. Dalam EDA, terdapat komponen yang menghasilkan event, komponen yang menerima dan memproses event, serta mekanisme atau <em>event channel<\/em> yang menyalurkan event dari producer kepada consumer. Event channel dapat diimplementasikan menggunakan berbagai teknologi, termasuk event broker atau layanan ingestion, tergantung kebutuhan sistem. Event sendiri dapat dipahami sebagai catatan bahwa sesuatu telah terjadi. Contohnya:<\/p>\n<pre><code class=\"language-text\">OrderCreated\r\nPaymentCompleted\r\nUserRegistered\r\nShipmentDispatched\r\n<\/code><\/pre>\n<p>Nama tersebut menggambarkan kejadian yang sudah berlangsung, bukan permintaan agar suatu tindakan dilakukan. Sebagai contoh, ketika pelanggan berhasil melakukan pembayaran, sistem dapat menghasilkan event: <code class=\"language-text\">PaymentCompleted<\/code><code class=\"language-text\"><br \/>\n<\/code><\/p>\n<p>Event tersebut kemudian dapat diproses oleh layanan lain yang membutuhkan informasi tersebut.<\/p>\n<p>Misalnya:<\/p>\n<pre><code class=\"language-text\">PaymentCompleted\r\n       |\r\n       +----&gt; Order Service\r\n       |\r\n       +----&gt; Notification Service\r\n       |\r\n       +----&gt; Analytics Service\r\n<\/code><\/pre>\n<p>Diagram tersebut merupakan ilustrasi arsitektur, bukan ketentuan bahwa setiap sistem pembayaran harus menggunakan desain yang sama.<\/p>\n<p>Salah satu karakteristik penting EDA adalah adanya pemisahan atau <strong>decoupling<\/strong> antara producer dan consumer. Producer tidak harus mengetahui secara langsung seluruh consumer yang menggunakan event tersebut. Hal ini memungkinkan komponen berkembang dan diskalakan secara lebih independen, meskipun tetap membutuhkan desain yang tepat agar kompleksitas sistem dapat dikendalikan.<\/p>\n<h2>Apa yang Dimaksud dengan Event?<\/h2>\n<p>Event adalah informasi yang merepresentasikan suatu kejadian atau perubahan yang telah terjadi. Dalam dokumentasi Apache Kafka, event dijelaskan sebagai catatan bahwa sesuatu telah terjadi dalam dunia atau bisnis. Event dapat memiliki informasi seperti key, value, timestamp, dan metadata tambahan. Contoh event sederhana:<\/p>\n<pre><code class=\"language-json\">{\r\n  \"eventType\": \"OrderCreated\",\r\n  \"orderId\": \"ORD-12345\",\r\n  \"customerId\": \"CUST-001\",\r\n  \"timestamp\": \"2026-08-08T10:00:00Z\"\r\n}\r\n<\/code><\/pre>\n<p>Contoh tersebut hanya merupakan ilustrasi struktur event. Struktur sebenarnya harus disesuaikan dengan kebutuhan domain, kontrak data, dan teknologi yang digunakan. Event dapat membawa data yang diperlukan consumer atau hanya membawa informasi tertentu seperti identifier yang kemudian digunakan consumer untuk mengambil data tambahan.<\/p>\n<p>Microsoft Azure menjelaskan bahwa kedua pendekatan tersebut memiliki trade-off. Payload yang lengkap dapat mengurangi kebutuhan query tambahan, tetapi dapat memperbesar ukuran data dan menambah kompleksitas konsistensi serta versioning. Sebaliknya, payload yang hanya membawa key dapat menjaga satu sumber data utama, tetapi consumer mungkin perlu melakukan query tambahan.<\/p>\n<h2>Perbedaan Event dan Command<\/h2>\n<p>Event dan command merupakan dua konsep yang sering muncul dalam sistem terdistribusi, tetapi keduanya memiliki tujuan berbeda.<\/p>\n<ul>\n<li><strong><em>Command<\/em> merupakan permintaan agar suatu tindakan dilakukan.<br \/>\n<\/strong>Contohnya:<\/li>\n<\/ul>\n<blockquote>\n<pre><code class=\"language-text\">CreateOrder\r\nProcessPayment\r\nSendNotification\r\n<\/code><\/pre>\n<\/blockquote>\n<ul>\n<li><strong>Sementara <em>event <\/em>menyatakan bahwa sebuah kejadian telah terjadi:<\/strong><\/li>\n<\/ul>\n<blockquote>\n<pre><code class=\"language-text\">OrderCreated\r\nPaymentCompleted\r\nNotificationSent\r\n<\/code><\/pre>\n<\/blockquote>\n<p>Perbedaan ini penting karena event biasanya bersifat informatif. Producer memberitahukan fakta yang terjadi, sementara consumer menentukan apakah event tersebut relevan dan tindakan apa yang perlu dilakukan. Dengan demikian, <code>ProcessPayment<\/code> lebih tepat dipahami sebagai perintah, sedangkan <code>PaymentCompleted<\/code> merupakan pemberitahuan bahwa pembayaran telah selesai.<\/p>\n<h2>Komponen Utama Event-Driven Architecture<\/h2>\n<p>Secara umum, EDA terdiri dari beberapa komponen utama yang saling berhubungan.<\/p>\n<p><span style=\"font-size: 20px\">1. Event Producer<\/span><\/p>\n<p><em>Event producer<\/em> adalah komponen yang menghasilkan atau menerbitkan event. Producer dapat berupa:<\/p>\n<ul>\n<li>aplikasi web;<\/li>\n<li>aplikasi mobile;<\/li>\n<li>microservice;<\/li>\n<li>sistem backend;<\/li>\n<li>perangkat IoT;<\/li>\n<li>sistem eksternal;<\/li>\n<li>layanan cloud.<\/li>\n<\/ul>\n<p>Contohnya, Order Service menghasilkan event <code>OrderCreated<\/code> setelah sebuah pesanan berhasil dibuat. Producer tidak perlu mengetahui seluruh consumer yang akan menggunakan event tersebut. Pemisahan ini merupakan salah satu karakteristik penting EDA.<\/p>\n<p><span style=\"font-size: 20px\">2. Event Consumer<\/span><\/p>\n<p><em>Event consumer <\/em>adalah komponen yang menerima dan memproses event. Satu jenis event dapat diproses oleh beberapa consumer untuk kebutuhan yang berbeda. Misalnya:<\/p>\n<pre><code class=\"language-text\">OrderCreated\r\n     |\r\n     +----&gt; Inventory Service\r\n     |\r\n     +----&gt; Notification Service\r\n     |\r\n     +----&gt; Analytics Service\r\n<\/code><\/pre>\n<p>Inventory Service dapat menggunakan event untuk memproses stok, Notification Service untuk mengirim pemberitahuan, dan Analytics Service untuk kebutuhan analisis. Namun, pembagian tersebut hanyalah contoh. Consumer yang sebenarnya digunakan bergantung pada kebutuhan bisnis dan desain aplikasi.<\/p>\n<p><span style=\"font-size: 20px\">3. Event Channel<\/span><\/p>\n<p><em>Event channel<\/em> adalah mekanisme yang menyalurkan event dari producer kepada consumer. Microsoft Azure menjelaskan bahwa event channel sering diimplementasikan menggunakan event broker atau layanan ingestion. Jadi, penggunaan broker bukan satu-satunya bentuk implementasi EDA. Dalam implementasi tertentu, event channel dapat berupa:<\/p>\n<ul>\n<li>event bus;<\/li>\n<li>topic;<\/li>\n<li>queue;<\/li>\n<li>stream;<\/li>\n<li>message broker;<\/li>\n<li>layanan event ingestion.<\/li>\n<\/ul>\n<p>Terminologi dan kemampuan masing-masing teknologi berbeda sehingga implementasinya harus mengacu pada dokumentasi platform yang digunakan.<\/p>\n<p><span style=\"font-size: 20px\">4. Event Schema<\/span><\/p>\n<p><em>Event schema<\/em> mendefinisikan struktur data yang dibawa oleh event. Contohnya:<\/p>\n<pre><code class=\"language-text\">eventId\r\neventType\r\ntimestamp\r\nsource\r\nentityId\r\npayload\r\n<\/code><\/pre>\n<p>Field tersebut hanya contoh umum, bukan struktur yang wajib digunakan pada semua sistem. Schema menjadi penting ketika banyak producer dan consumer dikembangkan secara independen. Jika producer mengubah struktur event tanpa mempertimbangkan consumer yang masih menggunakan versi sebelumnya, perubahan tersebut dapat menyebabkan kegagalan pemrosesan. Karena itu, strategi schema versioning dan kompatibilitas perlu dipikirkan sejak awal.<\/p>\n<h2>Bagaimana Cara Kerja Event-Driven Architecture?<\/h2>\n<p>Alur EDA secara sederhana dapat digambarkan seperti berikut:<\/p>\n<pre><code class=\"language-text\">Event Producer\r\n      |\r\n      v\r\nEvent Channel\r\n      |\r\n      +------&gt; Consumer A\r\n      |\r\n      +------&gt; Consumer B\r\n      |\r\n      +------&gt; Consumer C\r\n<\/code><\/pre>\n<ul>\n<li><strong>Sebuah Kejadian Terjadi<br \/>\n<\/strong>Proses dimulai ketika aktivitas tertentu terjadi. Misalnya pelanggan membuat pesanan.<\/li>\n<\/ul>\n<pre style=\"padding-left: 40px\"><code class=\"language-text\">Customer membuat pesanan\r\n<\/code><\/pre>\n<ul>\n<li><strong>Producer Menghasilkan Event<br \/>\n<\/strong>Order Service kemudian menghasilkan event: <code class=\"language-text\">OrderCreated<br \/>\n<\/code>Event dapat membawa informasi yang dibutuhkan consumer sesuai desain sistem.<\/li>\n<\/ul>\n<ul>\n<li><strong>Event Disalurkan<br \/>\n<\/strong>Event dikirim melalui event channel atau mekanisme distribusi yang digunakan. Teknologi yang digunakan dapat berbeda-beda, misalnya event bus, message broker, atau platform event streaming.<\/li>\n<\/ul>\n<ul>\n<li><strong>Consumer Menerima Event<br \/>\n<\/strong>Consumer yang berkepentingan menerima event tersebut. Contohnya:<\/li>\n<\/ul>\n<pre style=\"padding-left: 40px\"><code class=\"language-text\">OrderCreated\r\n      |\r\n      +----&gt; Inventory Service\r\n      |\r\n      +----&gt; Notification Service\r\n      |\r\n      +----&gt; Analytics Service\r\n<\/code><\/pre>\n<ul>\n<li><strong>Consumer Memproses Event<br \/>\n<\/strong>Setiap consumer menjalankan proses sesuai tanggung jawabnya. Inventory Service dapat memproses perubahan stok, sedangkan Notification Service dapat mengirimkan pemberitahuan kepada pelanggan. Dengan model seperti ini, producer tidak perlu memanggil setiap consumer secara langsung.<\/li>\n<\/ul>\n<h2>Apakah Event-Driven Architecture Selalu Asynchronous?<\/h2>\n<p>Tidak , EDA <em>sering menggunakan komunikasi asynchronous<\/em>, terutama ketika producer tidak perlu menunggu consumer menyelesaikan pemrosesan sebelum melanjutkan pekerjaannya. Microsoft Azure juga menjelaskan bahwa arsitektur event-driven terutama mengandalkan komunikasi asynchronous, tetapi pola request-response tetap dapat digunakan dalam sistem event-driven ketika sebuah proses membutuhkan respons langsung. Dalam pemrosesan asynchronous:<\/p>\n<pre><code class=\"language-text\">Producer\r\n   |\r\n   v\r\nEvent\r\n   |\r\n   v\r\nConsumer\r\n<\/code><\/pre>\n<p>Producer dapat menerbitkan event tanpa harus menunggu seluruh proses consumer selesai. Model ini berguna untuk proses yang dapat dikerjakan secara terpisah. Namun, jika sebuah proses membutuhkan jawaban langsung, komunikasi request-response tetap dapat digunakan. Dengan demikian, EDA tidak berarti seluruh komunikasi aplikasi harus diubah menjadi asynchronous.<\/p>\n<h2>Model Publish-Subscribe dan Event Streaming<\/h2>\n<p>EDA dapat menggunakan beberapa model komunikasi, termasuk <em>publish-subscribe<\/em> dan <em>event streaming.<\/em><\/p>\n<p><span style=\"font-size: 20px\">1. Publish-Subscribe<\/span><\/p>\n<p>Dalam model publish-subscribe, producer menerbitkan event dan infrastruktur messaging mendistribusikannya kepada subscriber yang sesuai. Jika terdapat beberapa subscriber yang berbeda, satu event dapat digunakan oleh beberapa konsumen untuk kebutuhan yang berbeda. Contohnya:<\/p>\n<pre><code class=\"language-text\">OrderCreated\r\n      |\r\n      v\r\nEvent System\r\n  |    |    |\r\n  v    v    v\r\nStock Email Analytics\r\n<\/code><\/pre>\n<p>Karakteristik penyimpanan event bergantung pada teknologi yang digunakan. Pada sistem publish-subscribe tertentu, event tidak tersedia sebagai log historis untuk subscriber baru. Karena itu, karakteristik replay atau retention tidak boleh digeneralisasikan ke seluruh teknologi publish-subscribe.<\/p>\n<p><span style=\"font-size: 20px\">2. Event Streaming<\/span><\/p>\n<p>Pada event streaming, event dapat dicatat dalam stream atau log sehingga consumer dapat membaca event sesuai posisi yang tersedia pada sistem. Apache Kafka, misalnya, menyimpan event dalam topic dan membagi topic menjadi partition.<\/p>\n<p>Kafka mempertahankan urutan event di dalam masing-masing partition, bukan urutan global untuk seluruh partition dalam sebuah topic. Model event streaming berguna untuk kebutuhan seperti pemrosesan data secara berkelanjutan, analitik streaming, dan sistem yang membutuhkan kemampuan membaca atau memproses kembali event sesuai kemampuan platform.<\/p>\n<h2>Perbedaan Event-Driven Architecture dan Request-Response<\/h2>\n<p>Dalam pola request-response, satu komponen mengirim permintaan kepada komponen lain dan menunggu respons. Contohnya:<\/p>\n<pre><code class=\"language-text\">Order Service\r\n      |\r\n      | Request\r\n      v\r\nPayment Service\r\n      |\r\n      | Response\r\n      v\r\nOrder Service\r\n<\/code><\/pre>\n<p><em>Order Service perlu mengetahui endpoint atau mekanisme komunikasi Payment Service.<\/em><\/p>\n<p>Dalam pendekatan event-driven, alurnya dapat berupa:<\/p>\n<pre><code class=\"language-text\">Order Service\r\n      |\r\n      | PaymentCompleted\r\n      v\r\nEvent Channel\r\n      |\r\n      +----&gt; Notification Service\r\n      |\r\n      +----&gt; Analytics Service\r\n      |\r\n      +----&gt; Order Service\r\n<\/code><\/pre>\n<p><em>Pendekatan event-driven dapat mengurangi ketergantungan langsung antara producer dan consumer.<\/em><\/p>\n<p>Namun, request-response tidak lebih buruk daripada EDA. Keduanya digunakan untuk kebutuhan yang berbeda. Request-response cocok ketika aplikasi membutuhkan respons langsung. EDA lebih sesuai ketika perubahan dapat dipublikasikan sebagai event dan diproses oleh komponen lain tanpa hubungan langsung yang ketat. Dalam aplikasi nyata, kedua pendekatan tersebut juga dapat digunakan secara bersamaan.<\/p>\n<h2>Kelebihan Event-Driven Architecture<\/h2>\n<p>EDA dapat memberikan sejumlah keuntungan jika diterapkan pada kebutuhan yang sesuai.<\/p>\n<p><span style=\"font-size: 20px\">1. Mengurangi Coupling Antarkomponen<\/span><\/p>\n<p>Producer tidak harus mengetahui seluruh consumer yang menerima event. Hal ini dapat mengurangi integrasi point-to-point dan memberikan ruang bagi consumer untuk berkembang secara independen.<\/p>\n<p><span style=\"font-size: 20px\">2. Memudahkan Penambahan Consumer<\/span><\/p>\n<p>Ketika event yang relevan sudah tersedia, consumer baru dapat ditambahkan untuk kebutuhan tertentu tanpa harus mengubah seluruh producer. Misalnya:<\/p>\n<pre><code class=\"language-text\">OrderCompleted\r\n      |\r\n      +----&gt; Notification\r\n      |\r\n      +----&gt; Analytics\r\n      |\r\n      +----&gt; Loyalty\r\n<\/code><\/pre>\n<p>Consumer baru dapat menggunakan event yang sama sesuai kebutuhan.<\/p>\n<p><span style=\"font-size: 20px\">3. Mendukung Skalabilitas<\/span><\/p>\n<p>EDA dapat membantu sistem melakukan scaling pada komponen yang memproses event secara independen. Namun, <em>EDA tidak otomatis membuat aplikasi scalable<\/em>. Kemampuan scaling tetap bergantung pada desain keseluruhan sistem, termasuk event channel, consumer, database, infrastruktur, partitioning, concurrency, serta karakteristik workload. Microsoft Azure menyebut decoupling producer dan consumer sebagai salah satu kondisi yang dapat mendukung tujuan independent scalability dan reliability.<\/p>\n<p><span style=\"font-size: 20px\">4. Mendukung Pemrosesan dengan Jeda Rendah<\/span><\/p>\n<p>Event dapat diproses segera setelah diterima, sehingga EDA sesuai untuk kebutuhan yang memerlukan pemrosesan real-time atau near-real-time. Contohnya antara lain pemrosesan event IoT, analitik streaming, dan sistem yang harus merespons perubahan secara cepat.<\/p>\n<p><span style=\"font-size: 20px\">5. Mendukung Integrasi Banyak Sistem<\/span><\/p>\n<p>Event dapat menjadi mekanisme integrasi antara berbagai layanan dan aplikasi. Sebagai contoh, satu event transaksi dapat digunakan oleh layanan pesanan, notifikasi, analitik, dan sistem lainnya tanpa setiap layanan harus membuat integrasi langsung dengan producer.<\/p>\n<h2>Kekurangan dan Tantangan Event-Driven Architecture<\/h2>\n<p>Di balik fleksibilitasnya, EDA juga memiliki sejumlah konsekuensi yang harus diperhitungkan.<\/p>\n<p><span style=\"font-size: 20px\">1. Kompleksitas Lebih Tinggi<\/span><\/p>\n<p>Sistem event-driven dapat lebih sulit dipahami dibandingkan alur request-response sederhana. Satu event dapat memicu beberapa proses lain dan bahkan menghasilkan event baru. Contohnya:<\/p>\n<pre><code class=\"language-text\">OrderCreated\r\n     \u2193\r\nPaymentCompleted\r\n     \u2193\r\nOrderConfirmed\r\n     \u2193\r\nShipmentCreated\r\n<\/code><\/pre>\n<p>Jika terjadi kegagalan pada salah satu tahap, developer perlu mengetahui event dan consumer mana yang bermasalah.<\/p>\n<p><span style=\"font-size: 20px\">2. Eventual Consistency<\/span><\/p>\n<p>Pada sistem asynchronous, perubahan data di beberapa layanan tidak selalu terjadi pada waktu yang sama. Misalnya Order Service sudah mengetahui pembayaran berhasil, tetapi Notification Service belum selesai memproses event <code>PaymentCompleted<\/code>. Dalam periode tersebut, kedua layanan dapat memiliki keadaan yang belum sepenuhnya sinkron. Kondisi ini dikenal sebagai <em>eventual consistency. <\/em><\/p>\n<p>Eventual consistency bukan kesalahan implementasi secara otomatis. Ini dapat menjadi trade-off arsitektural yang memang diterima pada sistem tertentu. Namun, sistem harus dirancang agar dapat menangani kondisi ketika data belum langsung konsisten.<\/p>\n<p><span style=\"font-size: 20px\">3. Event Ordering<\/span><\/p>\n<p>Urutan event menjadi penting ketika urutan kejadian memengaruhi hasil pemrosesan. Misalnya:<\/p>\n<pre><code class=\"language-text\">OrderCreated\r\nOrderCancelled\r\n<\/code><\/pre>\n<p>Consumer mungkin perlu mengetahui bahwa <code>OrderCreated<\/code> terjadi sebelum <code>OrderCancelled<\/code>.<\/p>\n<p>Namun, <em>jaminan ordering tidak sama pada semua teknologi<\/em>. Sebagai contoh, Apache Kafka menjamin urutan dalam sebuah partition, bukan urutan global antarseluruh partition. Karena itu, kebutuhan ordering harus ditentukan sejak awal dan disesuaikan dengan teknologi yang digunakan.<\/p>\n<p><span style=\"font-size: 20px\">4. Duplicate Event dan Idempotency<\/span><\/p>\n<p>Dalam sistem distributed messaging, consumer perlu mempertimbangkan kemungkinan menerima atau memproses event lebih dari satu kali, tergantung mekanisme delivery dan implementasi platform. Karena itu, operasi tertentu perlu dirancang <em>idempotent<\/em>, yaitu pemrosesan ulang event yang sama tidak menyebabkan efek samping yang tidak diinginkan.<\/p>\n<p>Contohnya, sistem tidak seharusnya mencatat pembayaran dua kali hanya karena event <code>PaymentCompleted<\/code> diproses ulang. Detail jaminan delivery berbeda antarplatform. Sebagai contoh, Google Cloud Pub\/Sub mendokumentasikan at-least-once delivery untuk pesan dan menyediakan fitur tertentu terkait ordering serta exactly-once delivery pada kondisi yang didukung platform.<\/p>\n<p><span style=\"font-size: 20px\">5. Debugging Lebih Sulit<\/span><\/p>\n<p>Pada sistem synchronous, developer dapat mengikuti satu request dari awal hingga response. Dalam EDA, satu proses bisnis dapat melibatkan producer, event channel, beberapa consumer, dan event lanjutan. Karena itu, observability menjadi bagian penting dari desain.<\/p>\n<p>Logging, metrics, distributed tracing, dan correlation ID dapat membantu menghubungkan event dan proses yang berasal dari transaksi yang sama. Microsoft Azure secara khusus merekomendasikan correlation ID untuk membantu melacak operasi lintas komponen yang terpisah dan asynchronous.<\/p>\n<p><span style=\"font-size: 20px\">6. Event Schema Evolution<\/span><\/p>\n<p>Producer dan consumer dapat dikembangkan dan dideploy secara independen. Masalah dapat muncul ketika producer mengubah struktur event sedangkan consumer masih menggunakan schema lama. Karena itu, sistem perlu mempertimbangkan strategi versioning dan kompatibilitas schema sejak awal.<\/p>\n<p><span style=\"font-size: 20px\">7. Penanganan Error Lebih Kompleks<\/span><\/p>\n<p>Pada sistem asynchronous, error tidak selalu dapat langsung dikembalikan kepada producer seperti pada request-response. Salah satu pendekatan yang dapat digunakan adalah retry dan mekanisme <em>dead-letter queue (DLQ)<\/em>, tergantung teknologi yang digunakan. Namun, retry harus dirancang hati-hati. Pemrosesan ulang yang tidak terkontrol dapat menyebabkan duplicate processing atau beban tambahan pada sistem.<\/p>\n<h2>Pola Event-Driven Architecture<\/h2>\n<p>EDA dapat diterapkan menggunakan beberapa pola. Salah satu pembagian yang sering digunakan adalah event notification dan event-carried state transfer.<\/p>\n<p><span style=\"font-size: 20px\">Event Notification<\/span><\/p>\n<p>Dalam <em>event notification<\/em>, event terutama digunakan untuk memberi tahu consumer bahwa sesuatu telah terjadi. Contohnya: <code class=\"language-text\">OrderCreated<\/code><\/p>\n<p>Consumer mengetahui bahwa order telah dibuat dan dapat mengambil tindakan yang sesuai. Event notification dapat membantu mengurangi ketergantungan langsung antara layanan, tetapi consumer mungkin perlu mengambil data tambahan dari sumber lain jika informasi dalam event belum cukup.<\/p>\n<p><span style=\"font-size: 20px\">Event-Carried State Transfer<\/span><\/p>\n<p>Dalam pola <em>event-carried state transfer,<\/em> event membawa data yang lebih lengkap sehingga consumer dapat menggunakan informasi tersebut untuk memperbarui state lokalnya. Martin Fowler menjelaskan pola ini sebagai pendekatan ketika penerima event dapat mempertahankan salinan data yang diperlukan sehingga tidak perlu selalu menghubungi sistem sumber. Pendekatan tersebut dapat mengurangi ketergantungan runtime, tetapi menambah kompleksitas dalam menjaga state dan membawa lebih banyak data.<\/p>\n<p><span style=\"font-size: 20px\">Event Sourcing<\/span><\/p>\n<p><em>Event Sourcing<\/em> sering dikaitkan dengan EDA, tetapi keduanya bukan konsep yang sama. Event Sourcing merupakan pola penyimpanan data yang menyimpan rangkaian perubahan atau tindakan sebagai event dalam penyimpanan append-only, kemudian menggunakan rangkaian tersebut sebagai dasar untuk membangun state objek atau domain.<\/p>\n<p>Microsoft Azure menekankan bahwa Event Sourcing merupakan pola yang kompleks dan memiliki trade-off terkait penyimpanan data, concurrency, perubahan schema, query, serta migrasi. Karena itu, Event Sourcing tidak perlu digunakan hanya karena sebuah sistem telah menggunakan EDA.<\/p>\n<h2>Contoh Event-Driven Architecture pada E-Commerce<\/h2>\n<p>E-commerce merupakan salah satu contoh domain yang dapat memanfaatkan event-driven architecture. Misalnya pelanggan melakukan checkout:<\/p>\n<pre><code class=\"language-text\">Customer\r\n   |\r\n   v\r\nOrder Service\r\n   |\r\n   v\r\nOrderCreated\r\n   |\r\n   v\r\nEvent Channel\r\n   |\r\n   +----&gt; Inventory Service\r\n   |\r\n   +----&gt; Notification Service\r\n   |\r\n   +----&gt; Analytics Service\r\n<\/code><\/pre>\n<p>Setelah pembayaran selesai, sistem dapat menghasilkan:<\/p>\n<pre><code class=\"language-text\">PaymentCompleted\r\n<\/code><\/pre>\n<p>Event tersebut kemudian dapat digunakan oleh layanan yang membutuhkan informasi pembayaran.<\/p>\n<p>Contoh ini menunjukkan bagaimana satu kejadian dapat menjadi pemicu bagi beberapa proses yang berbeda. Namun, desain aktual sistem e-commerce dapat berbeda. Tidak semua proses harus menggunakan event, dan beberapa proses mungkin lebih tepat menggunakan request-response.<\/p>\n<h2>Contoh Event-Driven Architecture pada IoT<\/h2>\n<p>IoT merupakan salah satu domain yang cocok untuk pemrosesan event dalam jumlah besar. Misalnya perangkat sensor menghasilkan event: <code class=\"language-text\">TemperatureMeasured<br \/>\n<\/code><\/p>\n<p>Event tersebut dapat diproses oleh beberapa komponen:<\/p>\n<pre><code class=\"language-text\">IoT Device\r\n     |\r\n     v\r\nTemperatureMeasured\r\n     |\r\n     +----&gt; Monitoring Service\r\n     |\r\n     +----&gt; Alert Service\r\n     |\r\n     +----&gt; Data Processing\r\n     |\r\n     +----&gt; Analytics\r\n<\/code><\/pre>\n<p>Microsoft Azure menyebut IoT sebagai salah satu skenario yang dapat membutuhkan ingestion event dengan volume dan throughput tinggi.<\/p>\n<p>Ketika perangkat menghasilkan event dalam jumlah besar, sistem perlu dirancang agar event channel dan consumer mampu menangani karakteristik workload tersebut.<\/p>\n<h2>Contoh Event-Driven Architecture pada Sistem Finansial<\/h2>\n<p>Sistem finansial juga dapat menggunakan event untuk merepresentasikan aktivitas transaksi. Contohnya:<\/p>\n<pre><code class=\"language-text\">TransactionInitiated\r\nTransactionAuthorized\r\nTransactionCompleted\r\nTransactionFailed\r\n<\/code><\/pre>\n<p>Event tersebut dapat digunakan oleh komponen lain untuk melakukan proses yang relevan.<\/p>\n<p>Namun, sistem finansial memiliki kebutuhan khusus terkait keamanan, audit, konsistensi, reliability, dan regulasi. Karena itu, contoh event di atas hanya merupakan ilustrasi konsep dan bukan representasi desain wajib untuk sistem perbankan atau layanan finansial tertentu.<\/p>\n<h2>Teknologi yang Dapat Digunakan untuk Event-Driven Architecture<\/h2>\n<p>EDA merupakan gaya arsitektur, bukan satu produk atau teknologi tertentu. Implementasinya dapat menggunakan berbagai platform.<\/p>\n<p><span style=\"font-size: 20px\">1. Apache Kafka<\/span><\/p>\n<p>Apache Kafka merupakan platform event streaming yang menggunakan konsep seperti producer, consumer, topic, partition, dan consumer group. Dalam Kafka, event disimpan di topic dan topic dibagi menjadi partition. Urutan event dijamin dalam konteks partition, sehingga kebutuhan ordering harus mempertimbangkan desain partitioning.<\/p>\n<p>Kafka juga mendukung pola consumer group. Dalam satu consumer group, sebuah event pada partition diproses oleh satu consumer instance dalam group tersebut pada suatu waktu, sehingga consumer group dapat digunakan untuk pembagian beban pemrosesan.<\/p>\n<p><span style=\"font-size: 20px\">2. RabbitMQ<\/span><\/p>\n<p>RabbitMQ merupakan message broker yang dapat digunakan untuk komunikasi berbasis pesan. RabbitMQ mendukung berbagai pola messaging dan menyediakan konsep seperti exchange dan queue. Detail routing dan delivery bergantung pada konfigurasi serta model protokol yang digunakan. RabbitMQ dapat menjadi salah satu pilihan untuk kebutuhan messaging, tetapi pemilihannya tetap harus disesuaikan dengan kebutuhan sistem dan karakteristik workload.<\/p>\n<p><span style=\"font-size: 20px\">3. Amazon EventBridge<\/span><\/p>\n<p>Amazon EventBridge adalah layanan AWS yang menggunakan event untuk menghubungkan komponen aplikasi. Dalam EventBridge, event bus bertindak sebagai router yang menerima event dan meneruskannya ke target berdasarkan rule. Rule dapat mencocokkan event berdasarkan pola tertentu dan kemudian mengirimkan event yang sesuai ke target. EventBridge merupakan salah satu contoh layanan terkelola untuk membangun aplikasi berbasis event, tetapi konsep EDA tidak terbatas pada AWS atau EventBridge.<\/p>\n<p><span style=\"font-size: 20px\">4. Google Cloud Pub\/Sub<\/span><\/p>\n<p>Google Cloud Pub\/Sub merupakan layanan messaging asynchronous yang memisahkan publisher dari subscriber. Konsep utamanya mencakup topic, subscription, publisher, subscriber, message, dan schema. Satu topic dapat memiliki beberapa subscription sehingga pesan dapat digunakan dalam pola fan-out, sedangkan beberapa subscriber dalam subscription dapat digunakan untuk pembagian beban pemrosesan.<\/p>\n<p>Google Cloud juga mendokumentasikan bahwa Pub\/Sub menawarkan at-least-once delivery dan fitur terkait ordering serta exactly-once delivery sesuai kemampuan dan konfigurasi layanan. Karena karakteristik delivery merupakan detail platform, informasi tersebut tidak boleh digeneralisasikan sebagai karakteristik semua sistem EDA.<\/p>\n<h2>Event-Driven Architecture dalam Microservices<\/h2>\n<p>EDA dan microservices merupakan dua konsep yang berbeda tetapi dapat digunakan secara bersamaan. <em>Microservices <\/em>merupakan pendekatan untuk membagi aplikasi menjadi sejumlah layanan dengan tanggung jawab tertentu. Sementara itu, <em>Event-Driven Architecture<\/em> merupakan gaya arsitektur yang menggunakan event sebagai bagian penting dari komunikasi dan pemrosesan antar komponen. Microservices dapat berkomunikasi menggunakan:<\/p>\n<pre><code class=\"language-text\">REST\r\ngRPC\r\nMessage\r\nEvent\r\n<\/code><\/pre>\n<p>atau kombinasi beberapa mekanisme tersebut. Contohnya:<\/p>\n<pre><code class=\"language-text\">Order Service\r\n      |\r\n      +---- REST ----&gt; Payment Service\r\n      |\r\n      +---- Event ---&gt; Event Channel\r\n                           |\r\n                           +----&gt; Inventory Service\r\n                           +----&gt; Notification Service\r\n<\/code><\/pre>\n<p>Jadi, <em>microservices tidak sama dengan EDA<\/em>, dan menggunakan microservices tidak secara otomatis berarti sistem harus menggunakan EDA.<\/p>\n<h2>Perbedaan EDA dan Message Queue<\/h2>\n<p>Message queue merupakan mekanisme atau teknologi messaging, sedangkan EDA merupakan pendekatan arsitektur yang lebih luas. Sederhananya:<\/p>\n<blockquote><p><em>Message Queue \u2192 mekanisme komunikasi pesan<\/em><br \/>\n<em>Event-Driven Architecture \u2192 gaya arsitektur yang menggunakan event sebagai bagian penting dari interaksi sistem<\/em><\/p><\/blockquote>\n<p>Karena itu, message queue dapat digunakan sebagai bagian dari sistem event-driven, tetapi keberadaan message queue saja tidak cukup untuk mendefinisikan sebuah sistem sebagai EDA. Selain queue, sistem event-driven juga dapat menggunakan event bus atau event streaming platform, tergantung kebutuhan.<\/p>\n<h2>Kapan Sebaiknya Menggunakan Event-Driven Architecture?<\/h2>\n<p>EDA layak dipertimbangkan ketika sistem memiliki karakteristik seperti:<\/p>\n<ul>\n<li><strong>Banyak Subsistem Perlu Merespons Event yang Sama<br \/>\n<\/strong>Jika satu kejadian harus digunakan oleh beberapa subsistem yang berbeda, event dapat membantu menghindari banyak integrasi point-to-point.<\/li>\n<\/ul>\n<ul>\n<li><strong>Membutuhkan Pemrosesan Real-Time atau Near-Real-Time<br \/>\n<\/strong>EDA dapat digunakan ketika sistem perlu merespons perubahan dengan jeda waktu yang rendah.<\/li>\n<\/ul>\n<ul>\n<li><strong>Membutuhkan Pemrosesan Event yang Kompleks<br \/>\n<\/strong>Event-driven architecture dapat mendukung kebutuhan seperti korelasi event, agregasi berdasarkan window waktu, atau analisis pola event.<\/li>\n<\/ul>\n<ul>\n<li><strong>Menghadapi Volume dan Kecepatan Data yang Tinggi<br \/>\n<\/strong>Skenario seperti IoT dan streaming data dapat menjadi kandidat yang sesuai karena sistem dapat dirancang untuk memproses event dalam jumlah besar.<\/li>\n<\/ul>\n<ul>\n<li><strong>Membutuhkan Decoupling<br \/>\n<\/strong>Jika producer dan consumer perlu dikembangkan, diskalakan, atau dikelola secara lebih independen, EDA dapat menjadi pilihan yang relevan.<\/li>\n<\/ul>\n<h2>Kapan Event-Driven Architecture Tidak Diperlukan?<\/h2>\n<p>EDA bukan solusi untuk semua jenis aplikasi. Microsoft Azure menyebut beberapa kondisi ketika EDA mungkin kurang sesuai, termasuk workflow request-response sederhana yang sudah dapat memenuhi kebutuhan latency dan throughput dengan komunikasi synchronous. Dalam situasi tersebut, overhead event broker, asynchronous error handling, dan eventual consistency mungkin tidak sebanding dengan manfaat yang diperoleh.<\/p>\n<p>EDA juga perlu dipertimbangkan kembali ketika proses bisnis membutuhkan strong consistency lintas layanan dan tidak dapat menerima kondisi sementara ketika beberapa bagian sistem memiliki state berbeda. Selain itu, sistem event-driven membutuhkan kemampuan untuk mengelola distributed asynchronous systems. Jika tim belum siap menangani observability, debugging, error recovery, dan pengelolaan event, kompleksitas EDA dapat menjadi beban tambahan. Untuk aplikasi sederhana, arsitektur request-response biasa dapat menjadi pilihan yang lebih mudah dan sesuai.<\/p>\n<h2>Best Practice Menerapkan Event-Driven Architecture<\/h2>\n<p>Penerapan EDA perlu disesuaikan dengan kebutuhan sistem. Beberapa prinsip berikut dapat membantu.<\/p>\n<p><span style=\"font-size: 20px\">Gunakan Nama Event yang Jelas<\/span><\/p>\n<p>Nama event sebaiknya menggambarkan kejadian yang telah terjadi. Contohnya:<\/p>\n<pre><code class=\"language-text\">UserRegistered\r\nOrderCreated\r\nPaymentCompleted\r\nShipmentDispatched\r\n<\/code><\/pre>\n<p>Penamaan yang konsisten membantu producer dan consumer memahami kontrak event.<\/p>\n<p><span style=\"font-size: 20px\">Tentukan Event Berdasarkan Domain<\/span><\/p>\n<p>Event sebaiknya merepresentasikan kejadian yang bermakna dalam domain bisnis. Hindari membuat event terlalu banyak tanpa alasan yang jelas. Microsoft Azure juga mengingatkan bahwa jumlah event yang terlalu banyak dapat membebani sistem dan membuat alur event sulit dianalisis. Sebaliknya, event yang terlalu umum dapat menyebabkan consumer melakukan pemrosesan yang tidak diperlukan.<\/p>\n<p><span style=\"font-size: 20px\">Rancang Schema dengan Memperhatikan Evolusi<\/span><\/p>\n<p>Schema event harus dirancang agar dapat berkembang. Perubahan schema perlu mempertimbangkan consumer yang mungkin masih menggunakan versi lama. Strategi versioning, kompatibilitas, dan dokumentasi schema sebaiknya ditentukan sejak awal.<\/p>\n<p><span style=\"font-size: 20px\">Terapkan Idempotency<\/span><\/p>\n<p>Consumer sebaiknya mempertimbangkan kemungkinan event diproses ulang. Idempotency membantu mencegah efek samping yang tidak diinginkan ketika event yang sama diproses lebih dari satu kali.<\/p>\n<p><span style=\"font-size: 20px\">Tentukan Kebutuhan Ordering<\/span><\/p>\n<p>Jangan mengasumsikan semua event harus diproses secara global berurutan. Tentukan terlebih dahulu apakah urutan penting untuk domain tertentu. Jika memang diperlukan, gunakan mekanisme ordering yang disediakan oleh teknologi yang dipilih.<\/p>\n<p><span style=\"font-size: 20px\">Siapkan Retry dan Penanganan Kegagalan<\/span><\/p>\n<p>Event yang gagal diproses dapat memerlukan retry. Namun, retry perlu memiliki batas dan strategi yang jelas agar tidak menciptakan loop atau membebani sistem. Untuk event yang tetap gagal setelah mekanisme pemulihan tertentu, dead-letter mechanism dapat digunakan apabila didukung dan sesuai dengan teknologi yang digunakan.<\/p>\n<p><span style=\"font-size: 20px\">Terapkan Observability Sejak Awal<\/span><\/p>\n<p>Logging dan monitoring sebaiknya tidak ditambahkan setelah sistem menjadi kompleks. Correlation ID dapat digunakan untuk menghubungkan event dengan proses bisnis yang sama di berbagai service. Distributed tracing juga dapat membantu memahami alur transaksi yang melewati beberapa komponen asynchronous.<\/p>\n<p><span style=\"font-size: 20px\">Perhatikan Keamanan Data dalam Event<\/span><\/p>\n<p>Event dapat dilihat oleh lebih dari satu komponen. Karena itu, jangan memasukkan data sensitif ke dalam event tanpa alasan dan kontrol keamanan yang tepat. Microsoft Azure secara khusus mengingatkan bahwa event dapat terlihat oleh beberapa komponen dalam workload, sehingga isi event perlu dipertimbangkan dari sisi potensi paparan informasi.<\/p>\n<h2>Hal yang Perlu Dipertimbangkan Sebelum Mengadopsi EDA<\/h2>\n<p>Sebelum menerapkan Event-Driven Architecture, tim perlu mengevaluasi beberapa aspek.<\/p>\n<ul>\n<li>Tentukan apakah masalah bisnis memang membutuhkan komunikasi berbasis event.<\/li>\n<li>Tentukan event apa yang benar-benar memiliki makna bagi domain.<\/li>\n<li>Tentukan apakah consumer membutuhkan seluruh data dalam event atau hanya identifier tertentu.<\/li>\n<li>Tentukan kebutuhan delivery, ordering, retry, dan idempotency.<\/li>\n<li>Tentukan bagaimana schema event akan dikelola ketika sistem berkembang.<\/li>\n<li>Siapkan logging, monitoring, tracing, dan mekanisme correlation.<\/li>\n<li>Pertimbangkan kemampuan tim dalam mengoperasikan sistem terdistribusi dan asynchronous.<\/li>\n<\/ul>\n<p>Dengan pendekatan tersebut, EDA dapat digunakan secara terukur dan tidak sekadar diterapkan karena mengikuti tren teknologi.<\/p>\n<h2>Kesimpulan<\/h2>\n<p>Event-Driven Architecture adalah gaya arsitektur perangkat lunak yang menggunakan event untuk mengomunikasikan kejadian atau perubahan antarkomponen. EDA dapat membantu mengurangi coupling, mendukung skalabilitas, serta memfasilitasi pemrosesan event secara asynchronous. Namun, penerapannya tetap perlu mempertimbangkan eventual consistency, event ordering, duplicate processing, schema evolution, error handling, dan observability.<\/p>\n<p>Karena itu, EDA sebaiknya diterapkan berdasarkan kebutuhan bisnis dan karakteristik sistem, bukan sekadar mengikuti tren teknologi. Untuk menambah wawasan seputar teknologi, hosting, server, dan pengembangan website, kunjungi <em><a href=\"https:\/\/hosteko.com\/blog\/\"><strong>Blog Hosteko<\/strong><\/a><\/em>. Jika membutuhkan layanan hosting untuk website, <a href=\"https:\/\/hosteko.com\/\"><em><strong>Hosteko Hosting Indonesia<\/strong><\/em><\/a> juga dapat menjadi salah satu pilihan yang dapat dipertimbangkan.<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-right kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;right&quot;,&quot;id&quot;:&quot;32479&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;1&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;0&quot;,&quot;greet&quot;:&quot;Jadilah yang pertama untuk memberi nilai&quot;,&quot;legend&quot;:&quot;5\\\/5 - (1 vote)&quot;,&quot;size&quot;:&quot;22&quot;,&quot;title&quot;:&quot;Apa Itu EDA (Event-Driven Architecture)? Mengenal Secara Lengkap&quot;,&quot;width&quot;:&quot;110&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 22px; height: 22px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 22px; height: 22px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 22px; height: 22px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 22px; height: 22px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 22px; height: 22px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 110px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 22px; height: 22px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 22px; height: 22px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 22px; height: 22px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 22px; height: 22px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 22px; height: 22px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 17.6px;\">\n            5\/5 - (1 vote)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Apa Itu Event-Driven Architecture? Pengertian, Cara Kerja, Komponen, Manfaat, dan Contohnya Perkembangan aplikasi digital membuat sistem perangkat lunak harus mampu menangani berbagai aktivitas secara cepat dan terdistribusi. Ketika pengguna melakukan pembayaran, membuat pesanan, mengubah data, mengunggah file, atau ketika perangkat IoT mengirimkan informasi, aplikasi perlu merespons kejadian tersebut dan meneruskannya ke komponen lain yang membutuhkan [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":32483,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rop_custom_images_group":[],"rop_custom_messages_group":[],"rop_publish_now":"no","rop_publish_now_accounts":{"twitter_2392824914_2392824914":""},"rop_publish_now_history":[{"account":"twitter_2392824914_2392824914","service":"twitter","timestamp":1786165023,"status":"error"}],"rop_publish_now_status":"done","_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"enabled":false},"version":2}},"categories":[3],"tags":[23325,23327,23329,23332,23326,22055,23328,23330,23331,23333],"class_list":["post-32479","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-apa-itu-event-driven-architecture","tag-arsitektur-event-driven","tag-cara-kerja-event-driven-architecture","tag-contoh-event-driven-architecture","tag-eda","tag-event-driven-architecture","tag-event-driven-architecture-adalah","tag-komponen-eda","tag-manfaat-event-driven-architecture","tag-microservices-eda"],"featured_image_src":{"landsacpe":["https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul159-1140x445.png",1140,445,true],"list":["https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul159-463x348.png",463,348,true],"medium":["https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul159-300x169.png",300,169,true],"full":["https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul159.png",1366,768,false]},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Apa Itu EDA (Event-Driven Architecture)? Mengenal Secara Lengkap - Hosteko Blog<\/title>\n<meta name=\"description\" content=\"apa itu EDA (Event-Driven Architecture), cara kerja, komponen, manfaat, tantangan, pola, serta contoh penerapannya pada sistem modern.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Apa Itu EDA (Event-Driven Architecture)? Mengenal Secara Lengkap - Hosteko Blog\" \/>\n<meta property=\"og:description\" content=\"apa itu EDA (Event-Driven Architecture), cara kerja, komponen, manfaat, tantangan, pola, serta contoh penerapannya pada sistem modern.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture\" \/>\n<meta property=\"og:site_name\" content=\"Hosteko Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-08T04:56:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul159-1024x576.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"576\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Fitri Ana\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fitri Ana\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture#article\",\"isPartOf\":{\"@id\":\"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture\"},\"author\":{\"name\":\"Fitri Ana\",\"@id\":\"https:\/\/hosteko.com\/blog\/#\/schema\/person\/ffcd8071a8a3d6a862a4e1381d1c4ea0\"},\"headline\":\"Apa Itu EDA (Event-Driven Architecture)? Mengenal Secara Lengkap\",\"datePublished\":\"2026-08-08T04:56:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture\"},\"wordCount\":3601,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/hosteko.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul159.png\",\"keywords\":[\"apa itu event-driven architecture\",\"arsitektur event-driven\",\"cara kerja event-driven architecture\",\"contoh event-driven architecture\",\"EDA\",\"event driven architecture\",\"event driven architecture adalah\",\"komponen EDA\",\"manfaat event-driven architecture\",\"microservices EDA\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture\",\"url\":\"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture\",\"name\":\"Apa Itu EDA (Event-Driven Architecture)? Mengenal Secara Lengkap - Hosteko Blog\",\"isPartOf\":{\"@id\":\"https:\/\/hosteko.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture#primaryimage\"},\"image\":{\"@id\":\"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul159.png\",\"datePublished\":\"2026-08-08T04:56:50+00:00\",\"description\":\"apa itu EDA (Event-Driven Architecture), cara kerja, komponen, manfaat, tantangan, pola, serta contoh penerapannya pada sistem modern.\",\"breadcrumb\":{\"@id\":\"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture#primaryimage\",\"url\":\"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul159.png\",\"contentUrl\":\"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul159.png\",\"width\":1366,\"height\":768},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/hosteko.com\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Apa Itu EDA (Event-Driven Architecture)? Mengenal Secara Lengkap\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/hosteko.com\/blog\/#website\",\"url\":\"https:\/\/hosteko.com\/blog\/\",\"name\":\"Hosteko Blog\",\"description\":\"Berita &amp; Informasi Dunia IT\",\"publisher\":{\"@id\":\"https:\/\/hosteko.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/hosteko.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/hosteko.com\/blog\/#organization\",\"name\":\"HOSTEKO\",\"url\":\"https:\/\/hosteko.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/hosteko.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2019\/04\/logo-hosteko.png\",\"contentUrl\":\"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2019\/04\/logo-hosteko.png\",\"width\":195,\"height\":57,\"caption\":\"HOSTEKO\"},\"image\":{\"@id\":\"https:\/\/hosteko.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/hosteko.com\/blog\/#\/schema\/person\/ffcd8071a8a3d6a862a4e1381d1c4ea0\",\"name\":\"Fitri Ana\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/hosteko.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a099f723518ab9b89aa80b7ed8cadd2d3fae127c5bd735733cf24a661e75a882?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a099f723518ab9b89aa80b7ed8cadd2d3fae127c5bd735733cf24a661e75a882?s=96&d=mm&r=g\",\"caption\":\"Fitri Ana\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Apa Itu EDA (Event-Driven Architecture)? Mengenal Secara Lengkap - Hosteko Blog","description":"apa itu EDA (Event-Driven Architecture), cara kerja, komponen, manfaat, tantangan, pola, serta contoh penerapannya pada sistem modern.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture","og_locale":"en_US","og_type":"article","og_title":"Apa Itu EDA (Event-Driven Architecture)? Mengenal Secara Lengkap - Hosteko Blog","og_description":"apa itu EDA (Event-Driven Architecture), cara kerja, komponen, manfaat, tantangan, pola, serta contoh penerapannya pada sistem modern.","og_url":"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture","og_site_name":"Hosteko Blog","article_published_time":"2026-08-08T04:56:50+00:00","og_image":[{"width":1024,"height":576,"url":"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul159-1024x576.png","type":"image\/png"}],"author":"Fitri Ana","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fitri Ana","Est. reading time":"19 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture#article","isPartOf":{"@id":"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture"},"author":{"name":"Fitri Ana","@id":"https:\/\/hosteko.com\/blog\/#\/schema\/person\/ffcd8071a8a3d6a862a4e1381d1c4ea0"},"headline":"Apa Itu EDA (Event-Driven Architecture)? Mengenal Secara Lengkap","datePublished":"2026-08-08T04:56:50+00:00","mainEntityOfPage":{"@id":"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture"},"wordCount":3601,"commentCount":0,"publisher":{"@id":"https:\/\/hosteko.com\/blog\/#organization"},"image":{"@id":"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture#primaryimage"},"thumbnailUrl":"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul159.png","keywords":["apa itu event-driven architecture","arsitektur event-driven","cara kerja event-driven architecture","contoh event-driven architecture","EDA","event driven architecture","event driven architecture adalah","komponen EDA","manfaat event-driven architecture","microservices EDA"],"articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture#respond"]}]},{"@type":"WebPage","@id":"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture","url":"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture","name":"Apa Itu EDA (Event-Driven Architecture)? Mengenal Secara Lengkap - Hosteko Blog","isPartOf":{"@id":"https:\/\/hosteko.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture#primaryimage"},"image":{"@id":"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture#primaryimage"},"thumbnailUrl":"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul159.png","datePublished":"2026-08-08T04:56:50+00:00","description":"apa itu EDA (Event-Driven Architecture), cara kerja, komponen, manfaat, tantangan, pola, serta contoh penerapannya pada sistem modern.","breadcrumb":{"@id":"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture#primaryimage","url":"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul159.png","contentUrl":"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul159.png","width":1366,"height":768},{"@type":"BreadcrumbList","@id":"https:\/\/hosteko.com\/blog\/apa-itu-event-driven-architecture#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/hosteko.com\/blog"},{"@type":"ListItem","position":2,"name":"Apa Itu EDA (Event-Driven Architecture)? Mengenal Secara Lengkap"}]},{"@type":"WebSite","@id":"https:\/\/hosteko.com\/blog\/#website","url":"https:\/\/hosteko.com\/blog\/","name":"Hosteko Blog","description":"Berita &amp; Informasi Dunia IT","publisher":{"@id":"https:\/\/hosteko.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/hosteko.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/hosteko.com\/blog\/#organization","name":"HOSTEKO","url":"https:\/\/hosteko.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/hosteko.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2019\/04\/logo-hosteko.png","contentUrl":"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2019\/04\/logo-hosteko.png","width":195,"height":57,"caption":"HOSTEKO"},"image":{"@id":"https:\/\/hosteko.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/hosteko.com\/blog\/#\/schema\/person\/ffcd8071a8a3d6a862a4e1381d1c4ea0","name":"Fitri Ana","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/hosteko.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a099f723518ab9b89aa80b7ed8cadd2d3fae127c5bd735733cf24a661e75a882?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a099f723518ab9b89aa80b7ed8cadd2d3fae127c5bd735733cf24a661e75a882?s=96&d=mm&r=g","caption":"Fitri Ana"}}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/hosteko.com\/htk-blog\/wp-content\/uploads\/2026\/08\/Desain-tanpa-judul159.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/posts\/32479","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/comments?post=32479"}],"version-history":[{"count":4,"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/posts\/32479\/revisions"}],"predecessor-version":[{"id":32486,"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/posts\/32479\/revisions\/32486"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/media\/32483"}],"wp:attachment":[{"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/media?parent=32479"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/categories?post=32479"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hosteko.com\/blog\/wp-json\/wp\/v2\/tags?post=32479"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}