Pembangunan Perangkat Lunak secara monolithic tidak ideal dalam
pembangunan perangkat lunak berskala besar karena kompleksitas dari perangkat
lunak yang dihasilkan. Salah satu solusi adalah mengimplementasi arsitektur
Microservice untuk memecah perangkat lunak menjadi beberapa microservice agar
masing-masing microservice dapat perlihara secara mandiri. Selain itu, agar dapat
mengurangi coupling, microservice dapat saling berkomunikasi melalui arsitektur
Event-Driven. Komunikasi melalui event antara microservice dapat dicapai dengan
menggunakan messaging system. Hanya saja, implementasi dari komunikasi event
umumnya mengakibatkan coupling antara perangkat lunak yang dibangun dengan
messaging system yang digunakan sehingga untuk merubah messaging system yang
digunakan menjadi sulit.
Untuk menyelesaikan masalah tersebut, dibuat abstraksi dari pemrosesan
event yang secara otomatis meneruskan event ke messaging system. Abstraksi
tersebut dibangun dengan memanfaatkan pemrosesan event yang telah disediakan
oleh Spring Framework. Agar pemrosesan event dapat dihubungkan secara
otomatis dengan messaging system, maka perlu dibangun ekstensi dari Spring
Framework untuk mencapai hal tersebut. Ekstensi dibangun agar cara untuk
berkomunikasi melalui event antara microservice tetap sama walaupun
memanfaatkan messaging system yang berbeda-beda. Manfaat pendekatan tersebut
adalah untuk mengubah messaging system yang digunakan, tidak perlu mengubah
kode program pemrosesan event.
Ekstensi dibangun sebagai kelas abstrak Event Provider yang memiliki
implementasi kelas konkret untuk masing-masing messaging system dan juga
memanfaatkan kelas Event Registry sebagai daftar dari event yang diproses.
Penggunaan ekstensi dilakukan dengan mendefinisikan kedua komponen tersebut
sebagai Spring Bean. Ekstensi yang dibangun selain memperbolehkan abstraksi
dari pemrosesan event, juga dapat membantu proses pengembangan perangkat
lunak. Dari hasil pengujian, ekstensi dapat mengurangi jumlah baris kode program
yang diperlukan untuk memproses event dibandingkan dengan tanpa penggunaan
ekstensi. Hal ini karena ekstensi mengotomatisasi hal-hal repetitif. Selain itu, dari
hasil pengujian, untuk mengubah messaging system yang digunakan, hanya perlu
mengubah beberapa baris kode program dari konfigurasi ekstensi.