Arsitektur Microservices adalah pendekatan pengembangan aplikasi yang memecah aplikasi menjadi sekumpulan layanan (services) kecil dan independen. Masing-masing layanan memiliki tanggung jawab spesifik. Microservices memungkinkan pengembangan dan deployment layanan secara terpisah. Lawannya adalah arsitektur monolitik yaitu sebuah arsitek yang membangun aplikasi sebagai satu unit tunggal dengan banyak tanggung jawab. Seiring pertumbuhan aplikasi monolitik, kompleksitas dan tanggung jawabnya cenderung terus meningkat.
Analogi Arsitektur Microservices
Bayangkan aplikasi monolitik sebagai seorang pengusaha tunggal tanpa pegawai. Pengusaha tersebut harus menangani semua aspek bisnis sendiri, mulai dari manajemen hingga akuntansi dan penjualan. Sementara itu, microservices seperti perusahaan terstruktur, di mana setiap tugas ditangani oleh tim atau departemen yang fokus. Karena aplikasi monolitik seperti pengusaha tanpa pegawai, setiap permintaan harus ditanganinya sendiri. Sebaliknya, dalam microservices, setiap layanan memiliki tim khusus, sehingga permintaan akan didistribusikan ke tim yang relevan.
Analogi Microservices dan Monolitik
Pengusaha tunggal umumnya hanya memerlukan kantor sederhana. Begitu pula dengan aplikasi monolitik yang cenderung hanya membutuhkan web server, database server, dan aplikasi itu sendiri. Namun, seperti perusahaan dengan banyak departemen, microservices memerlukan infrastruktur yang lebih luas dengan berbagai komponen untuk mengelola setiap layanan.
Arsitektur microservices pada dasarnya terdiri dari sekumpulan layanan (services) independen yang masing-masing memiliki tanggung jawab spesifik dan terbatas. Setiap layanan ini umumnya dikemas dan dijalankan di dalam kontainer. Kontainer adalah sebuah lingkungan terisolasi dan portabel yang berisi semua yang diperlukan layanan untuk berjalan (kode, libraries, konfigurasi, dan dependensi). Kontainer sering dianggap sebagai bentuk virtual server yang lebih ringan dan efisien.
Orchestration
Pengelolaan sejumlah besar kontainer secara manual dapat menimbulkan kerumitan dan inefisiensi, terutama dalam lingkungan yang kompleks. Untuk mengatasi hal ini, diperlukan container orchestration. Container Orchestration adalah sebuah platform yang mengotomatisasi berbagai aspek operasional kontainer, seperti deployment, scaling, pembaruan (updates), dan pemulihan (recovery).
Container Orchestration umumnya mengandalkan Kubernetes, yaitu sebuah platform open-source yang menyediakan kerangka kerja untuk menjalankan dan mengelola aplikasi terdistribusi. Kubernetes menyederhanakan pengelolaan infrastruktur kontainer dengan menyediakan abstraksi yang kuat.

Dalam Kubernetes, unit terkecil yang dapat di-deploy dan dikelola adalah Pod. Agar kontainer dapat berjalan, kita harus membuat Pod yang spesifikasinya mencakup image kontainer yang akan digunakan. Pod berbeda dengan image dalam hal tingkat abstraksi. Image adalah artefak statis yang disimpan dalam registry dan digunakan sebagai dasar untuk membuat kontainer. Pod merupakan representasi dari kontainer yang sedang berjalan di atas sebuah node dalam kluster Kubernetes. Pod menyediakan lingkungan bersama untuk kontainer-kontainer ini, termasuk network dan storage yang terisolasi.
Umumnya, API Gateway adalah titik masuk tunggal (single entry point) yang krusial dalam arsitektur microservices. Selain mengatur dan mengarahkan lalu lintas permintaan dari klien ke layanan yang tepat, ia juga menangani berbagai tugas lintas-layanan penting seperti autentikasi, otorisasi, rate limiting, dan caching. Dengan memusatkan fungsi-fungsi ini, API Gateway menyederhanakan interaksi klien dengan kompleksitas internal microservices.
Penutup Arsitektur Microservices
Demikianlah sedikit penjelasan tentang arsitektur microservices. Selanjutnya munkin aku akan membahas pengetahuan apa saja yang harus kita kuasai saat kita memutuskan untuk mengembangkan aplikasi berbasi microservices. Semoga bermanfaat.

