Pengertian
Event-driven adalah sebuah arsitektur pemrograman di mana alur eksekusi program ditentukan oleh event atau peristiwa tertentu. Event ini bisa berupa input dari pengguna (seperti klik tombol, input keyboard), pesan dari sistem lain, atau bahkan perubahan status dalam sistem itu sendiri. Dalam model ini, program akan menunggu (idle) hingga event terjadi, lalu merespons event tersebut dengan menjalankan tindakan yang sesuai.
Cara Kerja
Server event-driven hanya menggunakan satu atau beberapa thread utama untuk menangani banyak permintaan secara bersamaan. Server menunggu kejadian (event), seperti data yang masuk, dan kemudian menanganinya secara non-blocking, di mana setiap operasi dilakukan saat siap tanpa perlu menunggu thread lain menyelesaikan tugasnya.
Contoh Sederhana
Misalkan dalam sebuah aplikasi GUI (Graphical User Interface), ketika pengguna mengklik sebuah tombol, aplikasi tidak terus-menerus memeriksa apakah pengguna telah mengklik tombol tersebut. Sebaliknya, aplikasi hanya menunggu hingga event klik terjadi. Ketika pengguna mengklik, event ini dikirim ke event handler yang telah ditentukan untuk menangani aksi tersebut, seperti menampilkan pesan.
Analogi Sederhana
Bayangkan restoran cepat saji yang hanya memiliki satu pelayan. Pelayan tersebut akan melayani pelanggan secara efisien berdasarkan antrian. Jika satu pelanggan sedang menunggu pesanan matang, pelayan bisa langsung melayani pelanggan lain tanpa menunggu makanan selesai, karena setiap tindakan (memesan, mengambil pesanan) diatur oleh "event" atau kejadian tertentu.
Bagian Inti Event-Driven
Event Loop: Inti dari sistem event-driven adalah event loop yang terus-menerus berjalan, memantau dan menunggu event. Jika ada event, event loop akan memanggil event hadler yang sesuai.
Non-blocking: Sistem non-blocking memungkinkan program untuk terus berjalan meskipun operasi yang lambat (seperti I/O) masih berlangsung, sehingga aplikasi dapat merespons lebih cepat tanpa harus menunggu satu operasi selesai sebelum memulai operasi lain.
Asynchronous: Banyak operasi dilakukan secara asinkron dalam sistem event-driven, artinya operasi dapat dimulai dan sementara ditinggalkan sementara event lainnya diproses. Hasil dari operasi tersebut akan ditangani ketika siap.
KELEBIHAN
Kinerja Lebih Baik: Event-driven memungkinkan penggunaan sumber daya yang lebih efisien, terutama dalam menangani ribuan koneksi atau proses bersamaan, seperti pada server web.
Skalabilitas: Sistem yang berbasis event-driven dapat lebih mudah di-skalakan karena satu event loop bisa menangani banyak event tanpa harus menciptakan banyak thread atau proses.
Responsif: Aplikasi tetap responsif meskipun ada operasi yang lambat, karena operasi tersebut dijalankan secara asinkron..
Kesimpulan
Arsitektur event-driven memungkinkan aplikasi untuk menunggu event dan meresponsnya dengan cara yang efisien, sering kali tanpa memblokir eksekusi program secara keseluruhan. Hal Ini sangat berguna dalam konteks aplikasi atau server yang harus menangani banyak event secara bersamaan