Apa itu arsitektur berbasis peristiwa?

Bisnis semakin membutuhkan sistem yang dapat bereaksi secara instan terhadap berbagai pemicu, mulai dari interaksi pelanggan hingga pembacaan sensor. Model permintaan-respons tradisional, meskipun berharga, mungkin tidak selalu menawarkan ketangkasan atau skalabilitas yang diperlukan untuk lingkungan dinamis ini. Arsitektur berbasis peristiwa (EDA) dapat menawarkan paradigma yang efektif untuk membangun aplikasi yang responsif, tangguh, dan skalabel. Pola ini adalah pola arsitektur software yang dapat mempromosikan produksi, deteksi, konsumsi, dan reaksi terhadap peristiwa.

Memahami arsitektur berbasis peristiwa

Definisi arsitektur berbasis peristiwa

Arsitektur berbasis peristiwa adalah model untuk mendesain aplikasi software yang layanannya dikaitkan secara longgar dan berkomunikasi melalui produksi dan konsumsi peristiwa. "Peristiwa" menandakan kejadian penting atau perubahan dalam status sistem. Hal ini dapat berupa apa saja, mulai dari pelanggan yang melakukan pemesanan, sensor yang mendeteksi perubahan suhu, file baru yang diupload ke penyimpanan, atau data database yang diperbarui.

Tidak seperti model berbasis permintaan tradisional yang mengharuskan layanan memanggil layanan lain secara eksplisit dan menunggu respons, EDA memungkinkan layanan beroperasi secara asinkron. Layanan yang menghasilkan peristiwa ("produsen" atau "penerbit") hanya mengumumkan bahwa peristiwa tersebut telah terjadi. Layanan lain ("konsumen" atau "pelanggan") yang tertarik dengan jenis peristiwa tersebut kemudian dapat bereaksi terhadapnya secara independen dan sesuai waktu mereka sendiri.

Komponen utama dalam EDA biasanya mencakup:

  • Produsen peristiwa: Aplikasi atau layanan yang menghasilkan peristiwa
  • Konsumen peristiwa (atau pelanggan): Aplikasi atau layanan yang menerima dan memproses peristiwa
  • Saluran peristiwa (atau bus peristiwa, broker pesan, router peristiwa): Infrastruktur perantara yang menyerap peristiwa dari produsen dan filter, serta mengirimkannya ke konsumen yang tertarik; komponen ini penting untuk memisahkan produsen dari konsumen

Bagaimana cara kerja arsitektur berbasis peristiwa?

Alur kerja dalam arsitektur berbasis peristiwa umumnya mengikuti pola yang konsisten.

  • Terjadinya dan produksi peristiwa: Tindakan signifikan terjadi dalam layanan atau sistem. Misalnya, pengguna mungkin mengklik tombol "kirim pesanan" di situs e-commerce. Layanan yang bertanggung jawab untuk menangani tindakan awal ini (produsen peristiwa) menghasilkan objek peristiwa yang berisi informasi relevan tentang apa yang terjadi, seperti ID pesanan, item, dan detail pelanggan.
  • Transmisi peristiwa: Produser mengirimkan peristiwa ini ke saluran peristiwa. Saluran ini adalah bagian infrastruktur khusus, seperti antrean pesan atau sistem publikasi-langganan (pub/sub), yang dirancang untuk menangani alur peristiwa.
  • Pemfilteran dan perutean peristiwa (oleh saluran peristiwa): Saluran peristiwa menerima peristiwa. Kemudian, Pub/Sub dapat menerapkan aturan pemfilteran atau merutekan peristiwa berdasarkan jenis, konten, atau topiknya ke berbagai konsumen hilir yang telah mendaftarkan minatnya pada peristiwa tersebut. Misalnya, peristiwa "order_placed" dapat dirutekan ke layanan inventaris, layanan notifikasi, dan layanan pengiriman.
  • Konsumsi dan pemrosesan peristiwa: Layanan yang tertarik (konsumen) menerima peristiwa dari saluran. Setiap konsumen memproses peristiwa secara asinkron dan independen. Melanjutkan contoh e-commerce:
  • Layanan inventaris dapat mengurangi tingkat stok untuk item yang dipesan
  • Layanan notifikasi dapat mengirim email konfirmasi pesanan kepada pelanggan
  • Layanan pengiriman dapat memulai proses logistik

Manfaat arsitektur berbasis peristiwa

Mengadopsi arsitektur berbasis peristiwa dapat memberikan banyak keuntungan, terutama untuk sistem terdistribusi yang kompleks.

Skalabilitas yang ditingkatkan

Layanan dalam EDA dikaitkan secara longgar dan dapat diskalakan secara independen. Jika layanan "pemrosesan pesanan" mengalami beban berat, Anda dapat menskalakan layanan tersebut tanpa memengaruhi, misalnya, layanan "notifikasi pengguna".

Peningkatan ketahanan dan fault tolerance

Arsitektur berbasis peristiwa dapat membantu ketahanan aplikasi dengan mengisolasi kegagalan layanan. Sifatnya yang terpisah memastikan bahwa malfungsi di satu layanan konsumen biasanya tidak menyebar dan menyebabkan kegagalan sistem secara keseluruhan.

Peningkatan ketangkasan dan fleksibilitas

Developer dapat menambahkan, memodifikasi, atau menghapus layanan dengan dampak minimal pada bagian sistem lainnya. Layanan baru dapat berlangganan ke aliran peristiwa yang ada untuk menambahkan fungsionalitas baru tanpa memerlukan perubahan pada produsen peristiwa asli.

Responsivitas real-time

Arsitektur berbasis peristiwa membantu sistem merespons peristiwa dengan cepat. Kemampuan ini sangat berharga untuk aplikasi yang memerlukan tindakan cepat, termasuk deteksi penipuan, analisis real-time, dan pemantauan operasional.

Integrasi yang disederhanakan

EDA dapat berfungsi sebagai tulang punggung yang fleksibel untuk mengintegrasikan sistem yang berbeda, termasuk aplikasi lama, microservice modern, dan layanan pihak ketiga. Setiap sistem dapat memublikasikan dan menggunakan peristiwa tanpa memerlukan integrasi point-to-point langsung dengan setiap sistem lainnya.

Ekstensibilitas

Menambahkan fitur baru atau bereaksi terhadap peristiwa yang ada dengan cara baru sering kali hanya melibatkan deployment layanan konsumen baru yang berlangganan ke aliran peristiwa yang relevan.

Mengatasi tantangan bisnis Anda dengan Google Cloud

Pelanggan baru mendapatkan kredit gratis senilai $300 untuk dibelanjakan di Google Cloud.

Kasus penggunaan arsitektur berbasis peristiwa

Karakteristik EDA dapat membuatnya cocok untuk berbagai aplikasi di berbagai industri.

EDA adalah pola umum untuk mengaktifkan komunikasi dan aliran data antar-microservice. Alih-alih panggilan API sinkron langsung yang dapat menciptakan keterikatan yang erat, microservice dapat memublikasikan peristiwa saat statusnya berubah, dan microservice lain dapat berlangganan peristiwa ini untuk bereaksi dengan tepat.

Aplikasi yang menangani aliran data berkecepatan tinggi, seperti data sensor IoT, log aplikasi, feed media sosial, atau data pasar keuangan, dapat menggunakan EDA untuk memproses, menganalisis, dan bereaksi terhadap informasi ini secara real time. Hal ini dapat membantu mendukung dasbor, sistem pemberitahuan, atau proses pengambilan keputusan otomatis.

Mulai dari mengelola tingkat inventaris sebagai respons terhadap penjualan, memproses pesanan melalui berbagai tahap (pembayaran, pengiriman, pemenuhan), hingga mengirim notifikasi pelanggan, EDA dapat membantu mengelola alur kerja asinkron yang kompleks dalam retail online. Jika layanan pemrosesan pembayaran lambat, peristiwa pesanan masih dapat ditangkap dan diproses oleh layanan lain seperti reservasi inventaris.

Banyak proses bisnis yang pada dasarnya berbasis peristiwa. Misalnya, pengajuan klaim asuransi (peristiwa) dapat memicu serangkaian aktivitas hilir: pemeriksaan penipuan, penilaian, komunikasi pelanggan, dan terakhir, pemrosesan pembayaran. EDA dapat membantu memodelkan dan mengotomatiskan alur kerja ini secara efektif.

EDA dapat digunakan saat data perlu dijaga konsistensinya di berbagai sistem atau penyimpanan data. Perubahan di satu database (peristiwa) dapat dipublikasikan, sehingga database atau cache lain dapat berlangganan peristiwa perubahan ini dan memperbarui diri mereka sendiri.

Fungsi serverless (seperti Cloud Run Functions) sering kali dirancang untuk didorong oleh peristiwa. Fungsi ini dijalankan sebagai respons terhadap berbagai pemicu peristiwa, seperti objek yang diupload ke penyimpanan cloud, pesan yang tiba di antrean, atau permintaan HTTP. EDA sangat cocok untuk membangun aplikasi menggunakan komponen serverless.

Deteksi penipuan real-time, pemantauan pasar saham, dan pemrosesan perdagangan adalah aplikasi keuangan penting yang memanfaatkan kemampuan latensi rendah dan throughput tinggi dari EDA.

Bagaimana cara Google Cloud menggunakan arsitektur berbasis peristiwa?

Google Cloud menyediakan rangkaian layanan yang tangguh yang dapat membantu pelanggan membangun dan men-deploy aplikasi berbasis peristiwa yang canggih. Platform ini memanfaatkan prinsip berbasis peristiwa untuk membantu memberikan layanan yang skalabel dan tangguh. Untuk pelanggan yang membangun solusi berbasis peristiwa, Google Cloud menawarkan beberapa layanan terkelola utama:

  • Pub/Sub: Ini adalah layanan pesan real-time yang didistribusikan secara global, skalabel, dan andal yang bertindak sebagai bus peristiwa atau broker pesan dalam EDA. Pub/Sub membantu layanan memublikasikan peristiwa dan layanan lain untuk berlangganan peristiwa ini secara asinkron. Pub/Sub memisahkan penerbit dari pelanggan dan mendukung fitur seperti pengiriman "minimal sekali", langganan push dan pull, serta pemfilteran pesan.
  • Eventarc: Eventarc dapat menyediakan cara standar untuk mengelola alur peristiwa dengan menghubungkan sumber peristiwa (seperti perubahan bucket Cloud Storage, penyelesaian tugas BigQuery, atau peristiwa aplikasi kustom) ke konsumen peristiwa. Eventarc memungkinkan developer dengan mudah memicu layanan Cloud Run, fungsi Cloud Run, atau Workflows sebagai respons terhadap peristiwa.
  • Cloud Run: Platform komputasi terkelola sepenuhnya ini memungkinkan Anda menjalankan container stateless, sehingga dapat dipanggil melalui permintaan HTTP atau oleh peristiwa dari Pub/Sub (sering kali melalui Eventarc). Dengan Cloud Run Functions, Anda dapat men-deploy potongan kode kecil dengan tujuan tunggal (fungsi) yang merespons berbagai peristiwa tanpa perlu mengelola server atau lingkungan runtime. Dalam arsitektur berbasis peristiwa, layanan Cloud Run dapat sangat efektif sebagai konsumen peristiwa, yang memproses workload yang dipicu oleh peristiwa ini.
  • Workflows: Platform orkestrasi terkelola sepenuhnya yang memungkinkan Anda menentukan, men-deploy, dan mengelola alur kerja serverless. Workflows dapat dipicu oleh peristiwa (melalui Eventarc atau Pub/Sub) dan dapat mengoordinasikan panggilan ke berbagai layanan Google Cloud dan API berbasis HTTP yang dapat membuatnya cocok untuk mengorkestrasikan proses bisnis berbasis peristiwa yang kompleks.
  • Dataflow: Untuk pemrosesan peristiwa kompleks (CEP) dan analisis aliran data, Dataflow dapat menyediakan platform pemrosesan data batch dan aliran data terpadu. Dataflow dapat menyerap aliran peristiwa dari Pub/Sub, melakukan transformasi, agregasi, dan analisis yang canggih, lalu menghasilkan output ke sistem lain atau memicu tindakan lebih lanjut.

Langkah selanjutnya

Mulailah membangun solusi di Google Cloud dengan kredit gratis senilai $300 dan lebih dari 20 produk yang selalu gratis.