Arsitektur Software Microservices

Satrio Wibowo
Niagahoster Product
4 min readAug 9, 2021
Photo by Clem Onojeghuo from Pexels

Microservices Architecture (selanjutnya disebut Microservices) merupakan arsitektur framework yang kerap digunakan untuk membuat aplikasi cloud modern.

Secara teknis, framework ini membagi suatu software ke dalam sistem yang lebih kecil dan berjalan secara terpisah.

Sistem yang lebih kecil ini kemudian saling terhubung satu dengan lainnya melalui Application Programming Interface (API).

Belakangan ini, Microservices semakin dikenal seiring jamaknya penerapan Agile Software Development di industri teknologi. Microservices memudahkan tiap tim kecil untuk berfokus pada satu layanan spesifik ketimbang seluruh layanan secara luas.

Manfaat Microservices

Microservices memiliki keunggulan berupa sistem yang tahan banting, sekaligus menawarkan skalabilitas yang lebih baik dan mendukung continuous delivery dengan mudah.

Selain itu, Microservices turut menawarkan kemudahan dalam menjalankan production deployment secara real time. Cara ini terbukti efektif untuk mengurangi kebutuhan deployment tradisional yang berbasis bulanan atau mingguan.

Karenanya, Microservices mampu menyelesaikan permasalahan yang kerap muncul pada sistem dengan arsitektur monolitik dan arsitektur berbasis layanan (service-based architecture).

Implementasi Microservices

Ada berbagai macam cara mengimplementasikan arsitektur Microservices. Akan tetapi, terdapat setidaknya tiga pola arsitektur yang kerap digunakan.

Ketiganya adalah API REST-based topology, application REST-based topology, dan centralized messaging topology.

API REST-based Topology

API REST-based topology bekerja baik pada website yang memanfaatkan self-contained individual services melalui API tertentu.

Topologi ini terdiri dari komponen fine-grained service yang berisi modul untuk menjalankan fungsi bisnis tertentu. Nantinya, proses dari tiap layanan akan berjalan terpisah dari layanan lainnya.

Fine-grained service kemudian diakses melalui REST-based interface. Implementasinya dijalankan secara terpisah menggunakan API layer berbasis web.

Topologi ini biasa diterapkan pada layanan web RESTful berbasis cloud dengan tujuan tunggal seperti Yahoo, Google, dan Amazon Web Services (AWS).

Application REST-based Topology

Application REST-based topology mengedepankan pendekatan yang berbeda dari API REST-based topology. Application REST-based topology mengandalkan client request yang diterima melalui aplikasi bisnis berbasis web tradisional.

Client request pada Application REST-based topology memiliki komponen layanan yang lebih besar, bersifat coarse-grained, dan mewakili bagian kecil dari keseluruhan aplikasi bisnis.

Hal ini berbeda dari komponen API REST-based topology yang bersifat fine-grained, single-action services.

Application REST-based topology kerap diterapkan pada aplikasi bisnis berskala kecil hingga menengah yang memiliki kerumitan rendah.

Centralized Messaging Topology

Centralized messaging topology lazim digunakan pada pengaplikasian bisnis berskala besar yang membutuhkan kontrol leluasa atas transport layer antara user interface dan komponen pendukung layanannya (backend).

Keunggulan utamanya terletak pada mekanisme advanced queuing, skalabilitas dan penyeimbangan muatan yang lebih baik, asynchronous messaging, monitoring, serta error handling.

Hanya saja, penggunaan Centralized messaging topology dapat menyebabkan permasalahan single point of failure atau broker federation.

Kedua permasalahan ini kerap muncul pada mekanisme centralized broker.

Kabar baiknya, permasalahan tersebut dapat diselesaikan melalui model pengaplikasian broker clustering dan broker federation.

Model ini memisahkan single-instance broker menjadi beberapa bagian (multiple-instance broker). Tujuannya adalah membagi pesan dalam suatu muatan berdasarkan area fungsional pada sistem.

Pertimbangan Ketika Mengaplikasikan Microservices

Penerapan Microservices menjanjikan sistem yang lebih stabil sekaligus skalabilitas yang lebih baik. Akan tetapi, harap diingat bahwa Microservices dirancang menggunakan mekanisme sistem yang terdistribusi.

Mekanisme ini berpotensi menimbulkan permasalahan kompleks yang kerap terjadi pada sistem yang event-driven.

Permasalahan yang dapat saja muncul misalnya remove system availability, remote access authentication and authorization, serta contract creation, maintenance, and government.

Di samping itu, meskipun performa aplikasi berarsitektur Microservices dapat terbilang cukup baik, sifat dasarnya yang terdistribusi tidak cocok ketika diterapkan pada sistem berperforma tinggi.

Microservices di Niagahoster

Niagahoster pada awalnya bertumpu pada sistem Monolithic. Meskipun tangguh dan dapat diandalkan, sistem tersebut tidak memiliki skalabilitas yang memadai.

Hal ini disebabkan oleh sistem yang bersifat tight-coupling dan adanya pertumbuhan jumlah pengguna layanan yang pesat.

Dengan alasan demikian, Tim Engineer Niagahoster memutuskan untuk beralih ke Microservices. Hingga saat artikel ini ditulis, Niagahoster telah mengaplikasikan Microservices pada pemisahan sistem client area dan landing page.

Pemisahan ini turut berlaku pada pemisahan beberapa layanan tertentu seperti Niagahoster Forum dan Niagahoster Course.

Setelah menerapkan Microservices, skor service reliability dan availability meningkat secara signifikan. Penerapan Microservices turut mencegah terjadinya complete service unavailability atau sistem layanan mati sepenuhnya jika sewaktu-waktu muncul permasalahan dengan salah satu sistem.

Proses migrasi dari sistem Monolithic ke Microservices saat ini masih berjalan. Sistem pembayaran adalah salah satunya.

Tentu ada kesulitan dan dinamika yang ditemukan sepanjang prosesnya. Tidak apa, kami (saya dan teman-teman engineer) sangat senang melakukannya untuk para pelanggan setia Niagahoster.

Ini merupakan salah satu perwujudan nilai Customer Obsession yang tertuang pada company value Niagahsoter.

Sistem berarsitektur Monolithic memang lebih sederhana, lebih cepat, dan berbiaya lebih rendah dibandingkan Microservices.

Dengan alasan ini, sistem Monolithic sangat sesuai bagi perusahaan kecil atau menengah. Akan tetapi, jika memungkinkan, terapkanlah Microservices. Microservices sangat sesuai untuk perusahaan berskala besar dengan ratusan pegawai dan jutaan pelanggan.

Niagahoster hanya salah satu contohnya. Dengan menerapkan Microservices, performa uptime jelas lebih baik. Selain itu, Microservices juga menjanjikan keleluasaan dari segi scalability dan modularity.

--

--

Satrio Wibowo
Niagahoster Product

Just a programmer that loves coding and learning new tech