Microservices Architecture Untuk Sistem LOAN Application
By : Ahmad Nurul Fajar & Reynaldi
Sistem informasi pada umumnya dibuat dengan pendekatan arsitektur monolitik, di mana semua komponen sistem menjadi satu kesatuan. Sebuah arsitektur monolitik tunggal biasanya terdiri dari puluhan atau ratusan fungsi bisnis yang digunakan bersama-sama dalam sekali penerbitan perangkat lunak. Layanan mikro di sisi lain biasanya merangkum fungsi bisnis tunggal yang dapat diskalakan dan digunakan secara terpisah. Mengembangkan aplikasi pada perusahaan besar untuk penyebaran cloud dengan merakit dan mengatur serangkaian layanan mikro memungkinkan adanya alternatif untuk mengembangkan arsitektur monolitik. Salah satu tantangan yang muncul pada arsitektur monolitik adalah kemampuan adaptasi terhadap perubahan kebutuhan sistem (requirement changes) terutama dalam pengelolaan kompleksitas kode, dan pemeliharaannya (maintainability), di mana hal ini akan menyebabkan bottleneck pada proses pendistribusiannya karena tingkat dependensi yang tinggi (tightly coupling). Oleh sebab itu, diperlukan pertimbangan untuk membuat alternatif arsitektur lain agar pengelolaan sistem di kemudian hari menjadi lebih adaptif terhadap perubahan (requirement changes) (Munawar & Hodijah, 2018). Tantangan arsitektur monolitik selanjutnya dalam pengembangan sistem yakni pengembang terkunci dalam tumpukan (stack) teknologi asli yang tentu membatasi kebebasan untuk mengembangkan fungsi baru menggunakan kerangka kerja aplikasi modern atau bahasa pemrograman yang relevan (Sun et al., 2015). Dengan bertambahnya jumlah fungsi, arsitektur monolitik menjadi lebih kompleks dan membutuhkan tim pengembang yang lebih besar untuk mendukung aplikasi (Richardson & Smith, 2016). Selain itu, skalabilitas pada arsitektur monolitik juga terbatas, di mana fungsi individu tidak dapat dimulai ulang secara individual setelah penerapan. Proses pengulangan harus dilakukan pada seluruh aplikasi yang tentunya dapat memakan waktu.
Berdasarkan penjelasan di atas, tentu jika sistem sebelumnya masih dipertahankan, akan banyak sekali hal yang dapat merugikan perusahaan, khususnya dalam hal persaingan dengan kompetitor dalam memenuhi kebutuhan konsumen. Ini dikarenakan proses pengembangan sistem yang kompleks yang membutuhkan waktu tidak singkat. Akibatnya, pengembangan sistem perusahaan akan terus tertinggal dari kompetitornya. Dampak lainnya adalah dalam hal operasional yang tentu akan membutuhkan biaya besar untuk pembentukan tim yang jumlahnya tidak sedikit dalam menjalankan prosesnya.
Sistem pinjaman atau loan system saat ini merupakan sistem yang menggunakan arsitektur monolitik yang tentunya dibangun dengan menggunakan pendekatan di mana semua komponen aplikasi dibangun, dirancang, diimplementasikan, dan dipelihara dalam satu unit kode (Villamizar et al., 2015). Salah satu kelemahan arsitektur ini adalah pengembang akan mengalami kesulitan jika aplikasi ini memerlukan peningkatan kapasitas. Perbaikan terus-menerus juga akan menghadapi kesulitan karena ketika kapasitas suatu komponen aplikasi ditingkatkan, komponen lain juga perlu ditingkatkan kapasitasnya. Sebagai contoh, jumlah UKM (Usaha Kecil dan Menengah) di Indonesia yang sebanyak 59,2 juta yang relatif banyak akan membuat permintaan dari pengguna terhadap layanan aplikasi juga tinggi (Ayuwuragil, 2017). Sistem monolitik yang ada dapat membuat aplikasi ini memiliki waktu respon lamban yang tidak dapat mengimbangi jumlah pengguna yang terus meningkat.
Untuk mengatasi keterbatasan sistem LOAN yang masih menggunakan arsitektur monilitik, diharapkan dengan implementasi SOA dapat mengatasi keterbatasan itu. Hal ini dapat diwujudkan dengan memusatkan bisnis pada layanan, di mana layanan utama yang dimaksudkan adalah layanan pinjaman yang disediakan. Microservices berperan untuk memecah layanan pinajaman yang dimaksud menjadi beberapa komponen layanan yang lebih kecil. Pecahan-pecahan ini tervisualisasi sebagai lima modul layanan berbeda, a.l.: Loan Application, Loan Calculation, Loan Information, Customer Services, dan Register. Kompleksitas rancangan microservices yang menggunakan kode dalam jumlah besar menciptakan potensi diterobosnya celah keamanan sistem. Untuk itu, DDD (Domain Driven Design) diterapkan dengan cara menetapkan konteks terbatas (bounded contexts) untuk mengecilkan basis kode pada setiap domain dan subdomain di dalam lingkup sistem yang akan dirancang. Pengecilan basis kode ini dapat menekan kemungkinan terjadinya serangan dari peretas. Microservices memang dapat menjadi solusi untuk mengurangi ketergantungan antarlayanan. Tetapi penggunaan sistem yang lebih rumit dibandingkan dengan arsitektur sistem tradisional tentunya membutuhkan perhatian dan penanganan yang lebih khusus
Referensi
Ayuwuragil, K. (2017). Kemenkop UKM: 3,79 Juta UMKM Sudah Go Online. CNN Indonesia. https://www.cnnindonesia.com/ekonomi/20171115161037-78-255819/kemenkop-ukm-379-juta-umkm-sudah-go-online
Munawar, G., & Hodijah, A. (2018). Analisis Model Arsitektur Microservice Pada Sistem Informasi DPLK. Sinkron: Jurnal Dan Penelitian Teknik Informatika, 3(1), 232–239. https://jurnal.polgan.ac.id/index.php/sinkron/article/view/197/125
Sun, Y., Nanda, S., & Jaeger, T. (2015). Security-as-a-service for microservices-based cloud applications. IEEE 7th, 50–57. https://doi.org/10.1109/CloudCom.2015.93
Richardson, C., & Smith, F. (2016). Microservices: From Design to Deployment. NGINX, Inc., 80. https://www.nginx.com/resources/library/designing-deploying-microservices/
Villamizar, M., Garces, O., Castro, H., Verano, M., Salamanca, L., Casallas, R., & Gil, S. (2015). Evaluating the Monolithic and the Microservice Architecture Pattern to Deploy Web Applications in the Cloud. 2015 10th Colombian Computing Conference, 10CCC 2015, 583–590. https://doi.org/10.1109/COLUMBIANCC.2015.7333476