Arsitektur berbasis peristiwa (EDA) adalah pola desain perangkat lunak yang memberikan struktur untuk merancang dan mengimplementasikan aplikasi atau sistem yang bereaksi terhadap perubahan lingkungan. Perilaku reaktif ini biasanya mencakup penerimaan, pemrosesan, dan pengiriman peristiwa, yang memungkinkan komponen sistem berfungsi secara terpisah, sehingga meningkatkan skalabilitas dan kemampuan beradaptasi.
Asal Usul Arsitektur Berbasis Peristiwa
Pemrograman berbasis peristiwa sudah ada sejak masa awal antarmuka pengguna grafis (GUI) dan dimulai pada akhir 1960an dan awal 1970an. Pola desain muncul sebagai solusi alami untuk mengelola tindakan yang dimulai oleh pengguna, seperti klik tombol atau penekanan tombol, yang pada dasarnya tidak dapat diprediksi dan tidak sinkron. Dalam konteks ini, ide pemrograman berbasis peristiwa (event-driven programming) muncul untuk menangani aliran program yang ditentukan oleh tindakan pengguna, peristiwa yang dihasilkan sistem, atau pesan dari program lain.
Munculnya sistem dan layanan terdistribusi pada akhir tahun 1990an dan 2000an memerlukan arsitektur berbasis peristiwa yang lebih canggih untuk menangani meningkatnya kompleksitas interaksi, yang pada akhirnya mengarah pada penciptaan sistem yang dapat bereaksi terhadap peristiwa internal dan eksternal.
Arsitektur Berbasis Peristiwa Diluncurkan
Arsitektur Berbasis Peristiwa (EDA) adalah paradigma arsitektur perangkat lunak yang berfokus pada produksi, deteksi, konsumsi, dan reaksi terhadap peristiwa. Peristiwa ini menunjukkan perubahan keadaan, yang dipicu oleh tindakan pengguna, seperti mengklik mouse atau menekan tombol, atau oleh tindakan sistem seperti menerima pesan dari sistem lain.
Dalam EDA, komponen-komponen suatu sistem berinteraksi satu sama lain dengan menghasilkan dan mengonsumsi peristiwa, dimana suatu peristiwa didefinisikan sebagai perubahan keadaan yang signifikan. Komponen-komponen ini berfungsi secara terpisah, memungkinkan sistem menjadi lebih fleksibel, terukur, dan mudah beradaptasi terhadap perubahan kebutuhan atau kondisi lingkungan.
Struktur dan Fungsi Arsitektur Berbasis Peristiwa
Struktur internal arsitektur berbasis peristiwa berkisar pada empat komponen utama:
- Produser Acara: Komponen yang membuat acara dan mempublikasikannya ke saluran acara.
- Saluran Acara: Saluran untuk distribusi acara.
- Konsumen Acara: Komponen yang berlangganan saluran acara untuk menggunakan acara.
- Pemroses Acara: Komponen yang bereaksi terhadap peristiwa, umumnya dengan menjalankan tindakan tertentu.
Proses EDA mengikuti langkah-langkah berikut:
- Produser Acara mendeteksi perubahan status dan membuat acara.
- Acara ini dipublikasikan ke Channel Acara.
- Konsumen Acara yang berlangganan Saluran Acara mengonsumsi acara tersebut.
- Pemroses Peristiwa memproses peristiwa tersebut dan mungkin memulai tindakan lainnya.
Proses ini memungkinkan penggandengan layanan secara real-time, asinkron, dan longgar, yang berkontribusi terhadap daya tanggap, skalabilitas, dan ketahanan sistem.
Fitur Utama Arsitektur Berbasis Peristiwa
EDA menunjukkan beberapa karakteristik berbeda:
- Asinkronisitas: Produser acara dan konsumen tidak perlu berinteraksi atau bahkan aktif dalam waktu yang bersamaan.
- pemisahan: Produser dan konsumen acara tidak terhubung secara langsung, sehingga mendorong kemandirian dan isolasi.
- Respons Waktu Nyata: EDA memungkinkan sistem untuk segera merespons informasi real-time.
- Skalabilitas: Karena sifatnya yang asinkron dan terpisah, EDA dapat dengan mudah berkembang untuk mengakomodasi lebih banyak produsen, konsumen, atau acara.
- Ketangguhan: Kegagalan pada satu bagian sistem belum tentu mengganggu keseluruhan sistem.
Jenis Arsitektur Berbasis Peristiwa
Ada beberapa jenis Arsitektur Berbasis Peristiwa, yang berbeda terutama dalam cara mereka menangani peristiwa:
- Pemberitahuan Acara: Jenis EDA paling dasar, di mana produser peristiwa hanya mengirimkan pemberitahuan bahwa suatu peristiwa telah terjadi, namun tidak ada tindakan yang diperlukan secara eksplisit.
- Transfer Negara Berbasis Peristiwa: Peristiwa tersebut membawa perubahan status pada payload, yang dapat digunakan konsumen untuk memperbarui status mereka sendiri.
- Sumber Acara: Semua perubahan pada status aplikasi disimpan sebagai rangkaian peristiwa. Peristiwa ini kemudian dapat ditanyakan, atau keadaan dapat dibangun kembali dengan memutar ulang peristiwa tersebut.
- CQRS (Pemisahan Tanggung Jawab Permintaan Perintah): EDA yang lebih kompleks, dimana model untuk memperbarui keadaan dipisahkan dari model untuk membaca keadaan. Hal ini dapat meningkatkan kinerja, skalabilitas, dan keamanan.
Jenis EDA | Fitur Utama |
---|---|
Pemberitahuan Acara | Pemberitahuan sederhana, tidak perlu tindakan apa pun |
Transfer Negara Berbasis Peristiwa | Nyatakan perubahan muatan |
Sumber Acara | Urutan peristiwa yang disimpan |
CQRS | Model terpisah untuk memperbarui dan membaca status |
Menerapkan dan Mengelola Arsitektur Berbasis Peristiwa
EDA biasanya digunakan dalam skenario yang memerlukan data real-time dan daya tanggap, seperti sistem perdagangan saham, platform e-commerce, atau sistem IoT. Namun, mengelola dan men-debug EDA dapat menjadi tantangan karena sifatnya yang asinkron dan terdistribusi.
Permasalahan utama mencakup pelacakan peristiwa, konsistensi data, dan urutan peristiwa. Tantangan-tantangan ini dapat diatasi dengan pencatatan yang tepat, pengidentifikasi korelasi untuk melacak rantai peristiwa, memastikan idempotensi, dan menerapkan prosedur penanganan kesalahan dan pemulihan yang kuat.
Perbandingan dan Perbedaan
EDA berbeda dengan arsitektur tradisional yang didorong oleh permintaan, seperti Arsitektur Berorientasi Layanan (SOA) atau Representational State Transfer (REST). Sementara SOA dan REST biasanya melibatkan komunikasi langsung yang sinkron dan kontrak yang ditentukan secara kaku, EDA menekankan interaksi tidak sinkron dan tidak langsung serta kontrak peristiwa yang fleksibel.
Arsitektur | Komunikasi | Interaksi | Kontrak |
---|---|---|---|
SOA | Sinkronis | Langsung | Kaku |
ISTIRAHAT | Sinkronis | Langsung | Kaku |
EDA | Asinkron | Tidak langsung | Fleksibel |
Perspektif dan Teknologi Masa Depan dalam Arsitektur Berbasis Peristiwa
Tren yang berkembang menuju layanan mikro dan sistem terdistribusi, dikombinasikan dengan peningkatan pemrosesan data real-time, menjadikan EDA semakin relevan. Teknologi baru seperti komputasi tanpa server, analitik real-time, dan IoT diperkirakan akan semakin mendorong penerapan EDA.
Di masa depan, kita dapat melihat peningkatan dalam alat manajemen peristiwa, kemampuan debugging dan penelusuran, serta pola arsitektur tingkat lanjut untuk mendukung EDA dengan lebih baik.
Server Proxy dan Arsitektur Berbasis Peristiwa
Server proxy bertindak sebagai perantara permintaan dari klien yang mencari sumber daya dari server lain, menyediakan berbagai tingkat fungsionalitas, keamanan, dan privasi. Dalam konteks EDA, server proxy dapat berperan dalam mengelola lalu lintas acara, menyeimbangkan beban, dan menyediakan langkah-langkah keamanan tambahan. Misalnya, server proksi berbasis peristiwa mungkin secara dinamis merutekan peristiwa berdasarkan konten, beban, atau faktor lainnya, sehingga meningkatkan kemampuan beradaptasi dan ketahanan sistem.
Tautan yang berhubungan
Untuk informasi lebih lanjut tentang Arsitektur Berbasis Peristiwa, lihat sumber daya berikut: