Pola desain layanan mikro berfungsi sebagai strategi untuk membangun perangkat lunak dengan menggunakan arsitektur layanan mikro, pendekatan yang memecah satu aplikasi menjadi komponen atau layanan yang lebih kecil.
Pola arsitektur ini memberikan solusi standar untuk tantangan sehari-hari yang dihadapi tim pengembangan ketika menerapkan sistem komputasi terdistribusi, termasuk komunikasi layanan, konsistensi data, toleransi kesalahan, dan skalabilitas sistem.
Banyak pengalaman digital saat ini yang diandalkan dunia dimungkinkan oleh pola desain layanan mikro dan dapat dilihat dalam banyak contoh penggunaan dunia nyata. Misalnya, jika Anda melakukan streaming acara di Netflix, Anda melibatkan ratusan layanan terpisah yang bekerja sama untuk mengirimkan konten, mengelola profil pengguna, dan menyarankan apa yang harus ditonton selanjutnya.
Demikian pula, Amazon mengoordinasikan inventaris, pembayaran, dan pengiriman melalui layanan yang berbeda. Dalam industri keuangan, bank dan lembaga lain juga mengandalkan pola desain layanan mikro untuk memisahkan manajemen risiko dan layanan pelanggan, menjaga uang tetap aman dan dapat diakses.
Menurut survei IBM, Microservices in the Enterprise, 2021, 88% organisasi melaporkan bahwa microservices memberikan banyak manfaat bagi tim pengembangan. Manfaat ini termasuk peningkatan 20—50% dalam produktivitas pengembang karena pengelolaan kode yang lebih baik, pemeliharaan yang lebih mudah, dan siklus penerapan yang lebih cepat.
Buletin industri
Tetap terinformasi tentang tren industri yang paling penting—dan menarik—tentang AI, otomatisasi, data, dan di luarnya dengan buletin Think. Lihat Pernyataan Privasi IBM®.
Langganan Anda akan disediakan dalam bahasa Inggris. Anda akan menemukan tautan berhenti berlangganan di setiap buletin. Anda dapat mengelola langganan atau berhenti berlangganan di sini. Lihat Pernyataan Privasi IBM® kami untuk informasi lebih lanjut.
Arsitektur layanan mikro adalah metode cloud-native yang memecah aplikasi menjadi layanan independen yang digabungkan secara longgar yang diterapkan dalam kontainer yang dikelola oleh platform orkestrasi seperti Kubernetes.
Setiap layanan beroperasi secara independen dengan tumpukan teknologinya sendiri, termasuk basis data khusus dan model manajemen data. Komunikasi antar layanan terjadi melalui REST API, platform streaming peristiwa, seperti Apache Kafka, dan broker pesan, sementara tim merancang layanan terkait kemampuan bisnis dengan batasan yang jelas yang disebut konteks terbatas.
Pendekatan modern untuk pengembangan perangkat lunak ini mendukung fleksibilitas operasional yang diperlukan untuk inisiatif transformasi digital modern, seperti otomatisasi DevOps dan pipeline CI/CD, migrasi cloud, modernisasi aplikasi, dan integrasi kecerdasan buatan (AI).
Sementara layanan mikro menawarkan keuntungan yang signifikan untuk aplikasi modern. Memahami kapan harus memilih arsitektur ini memerlukan perbandingan dengan pendekatan monolitik tradisional.
Arsitektur monolitik membangun aplikasi sebagai unit tunggal yang dapat diterapkan di mana semua fungsi bisnis terintegrasi dan berbagi basis kode, database, dan waktu proses yang sama. Arsitektur layanan mikro membagi aplikasi menjadi layanan independen yang lebih kecil yang berkomunikasi melalui antarmuka pemrograman aplikasi (API) yang terdefinisi dengan baik, masing-masing berpotensi memiliki database dan siklus penerapannya sendiri.
Perbedaan utama di antara berbagai metode desain ini adalah ketergantungan—yaitu seberapa eratnya hubungan berbagai bagian sistem. Monolit memiliki ketergantungan internal yang tinggi tetapi penerapan sederhana, sementara layanan mikro memiliki ketergantungan longgar antar layanan tetapi persyaratan infrastruktur TI yang lebih kompleks.
Insinyur perangkat lunak sering kali memilih arsitektur monolitik untuk aplikasi yang lebih kecil dan lebih sederhana, seperti untuk bisnis kecil atau startup yang ingin mengendalikan biaya dan mempercepat pengembangan. Dalam skenario kompleks yang membutuhkan skalabilitas, ketahanan, dan fleksibilitas tinggi (misalnya, platform media sosial, aplikasi perbankan), layanan mikro adalah pilihan yang lebih baik.
Ketika memutuskan pendekatan mana yang akan diambil, organisasi harus mengevaluasi masing-masing pendekatan terhadap persyaratan spesifik mereka, termasuk ukuran tim, kompleksitas aplikasi, kebutuhan skalabilitas, dan tingkat kematangan DevOps.
Pelajari lebih lanjut tentang arsitektur monolitik versus layanan mikro.
Pola desain layanan mikro terbagi dalam lima area utama yang menyediakan solusi teruji yang membantu tim memecahkan tantangan arsitektur terdistribusi:
Pola registri layanan
Pola registri layanan menciptakan direktori pusat tempat layanan mendaftarkan titik akhir dan status kesehatan, sehingga menghilangkan kebutuhan akan alamat tetap. Ketika layanan perlu berkomunikasi, layanan akan menanyakan registri untuk menemukan instance server yang tersedia. Sebagai contoh, ketika layanan pembayaran perlu menghubungi layanan inventaris, layanan ini akan memeriksa registri untuk menemukan contoh inventaris yang sehat.
Pola API gateway
Pola API gateway menciptakan satu titik masuk antara klien dan beberapa layanan mikro back-end. Alih-alih klien membuat panggilan terpisah ke layanan yang berbeda, API gateway menerima satu permintaan, merutekannya ke layanan mikro yang sesuai dan menggabungkan respons menjadi satu hasil.
Misalnya, saat memuat halaman produk, gateway dapat secara bersamaan mengambil detail produk, harga, inventaris, dan ulasan dari berbagai layanan. Kemudian gateway menampilkan semua informasi ini dalam satu tanggapan gabungan kepada klien.
Pola penemuan layanan
Pola penemuan layanan memecahkan tantangan bagi layanan saat mencari lokasi satu sama lain di lingkungan yang dinamis. Ketika layanan mikro meningkat atau diperbarui ke versi baru, lokasi jaringannya terus berubah. Pola penemuan layanan menyediakan mekanisme otomatis bagi layanan untuk mendaftarkan diri sendiri dan menemukan layanan lain yang diperlukan untuk berkomunikasi, sehingga tidak perlu lagi menggunakan alamat yang dikodekan.
Pola basis data per layanan
Pola basis data per layanan memastikan bahwa setiap layanan mikro memiliki dan mengelola basis datanya sendiri, sehingga menghilangkan ketergantungan data bersama di antara layanan. Pendekatan ini mencegah akses data langsung antar layanan dan mengurangi penggabungan, meskipun mengharuskan layanan untuk berkomunikasi melalui API ketika mereka membutuhkan informasi dari sumber informasi lain. Misalnya, dalam sistem perencanaan sumber daya perusahaan (ERP), layanan akuntansi mengelola data keuangan secara independen dari database karyawan layanan SDM.
Pola saga
Pola saga mengelola transaksi yang mencakup beberapa layanan mikro dengan memecahnya menjadi langkah-langkah terkoordinasi. Setiap layanan menyelesaikan transaksi lokalnya dan memicu langkah selanjutnya dalam rantai. Jika ada langkah yang gagal, pola secara otomatis menjalankan tindakan untuk membatalkan langkah sebelumnya. Misalnya, ketika memproses pesanan online, jika pembayaran gagal setelah inventaris dipesan, saga secara otomatis melepaskan item yang dipesan.
CQRS (pola segregasi tanggung jawab kueri perintah)
Pola CQRS memisahkan modifikasi data (perintah) dari pengambilan data (kueri) dengan menggunakan model khusus untuk masing-masing. Pembagian ini memungkinkan sistem untuk mengoptimalkan setiap jalur secara independen—meminimalkan perselisihan tulis di sisi perintah dan mengurangi latensi kueri di sisi baca. Dalam sistem e-commerce, menempatkan pesanan menggunakan model perintah yang dioptimalkan untuk menulis, sementara menghasilkan laporan penjualan memanfaatkan model kueri yang dioptimalkan untuk membaca.
Pola pemutus rangkaian (circuit breaker)
Pola pemutus rangkaian mencegah kegagalan pada satu layanan menyebar ke seluruh sistem dengan memantau panggilan ke layanan hilir dan menghentikan permintaan ketika kegagalan terdeteksi. Ketika layanan menjadi tidak responsif, pemutus rangkaian akan "memutus" dan memblokir panggilan lebih lanjut, melindungi sumber daya sistem dan mencegah kegagalan beruntun.
Misalnya, jika layanan inventaris mati, pemutus rangkaian menghentikan layanan pesanan agar tidak berulang kali membuat permintaan yang gagal. Hal ini memungkinkan sistem lainnya untuk terus berfungsi sambil memberikan respons penggantian kepada pelanggan.
Pola sekat (bulkhead)
Pola sekat mengisolasi sumber daya sistem untuk mencegah kegagalan di satu area memengaruhi seluruh sistem. Seperti kompartemen dalam lambung kapal, sekat memisahkan fungsi yang berbeda sehingga jika salah satu gagal, yang lain tetap beroperasi. Pola ini membatasi jumlah permintaan bersamaan atau sumber daya yang dialokasikan ke layanan tertentu.
Pola backend-untuk-frontend (BFF)
Pola backend-for-frontend (BFF) menciptakan layanan backend khusus yang disesuaikan untuk setiap antarmuka front-end tertentu. Karena aplikasi seluler memiliki persyaratan yang berbeda dari aplikasi web (misalnya, layar yang lebih kecil, bandwidth terbatas, kemampuan kinerja yang bervariasi), pola BFF memungkinkan pengembang mengoptimalkan setiap backend untuk front-end tertentu.
Pola entitas dan agregat (entity and aggregate)
Pola entitas dan agregat mengatur data terkait ke dalam unit-unit logis berdasarkan konsep desain berbasis domain (DDD). Entitas mewakili objek yang berbeda dengan identitas unik, seperti akun pelanggan yang diidentifikasi oleh alamat email. Sebuah agregat menggabungkan entitas terkait yang harus diperbarui bersama sebagai satu unit.
Misalnya, dalam sistem e-commerce, agregat pesanan akan mencakup detail pesanan, item baris, dan informasi pengiriman, yang semuanya harus tetap tersinkronisasi ketika terjadi perubahan.
Pola pencengkeram (strangler)
Pola pencengkeram membantu mengelola proses pemfaktoran ulang aplikasi monolitik menjadi arsitektur layanan mikro yang lebih mudah dikelola. Layanan mikro baru secara bertahap dibangun bersama monolit yang ada, dan secara perlahan mengambil alih fungsionalitas hingga sistem lama digantikan sepenuhnya. Nama ini berasal dari metafora tentang bagaimana tanaman merambat (layanan mikro) secara bertahap tumbuh di sekitar dan akhirnya mencengkeram pohon (aplikasi monolitik) dari waktu ke waktu.
Pola yang digerakkan oleh peristiwa (event-driven)
Pola yang digerakkan oleh peristiwa memungkinkan layanan mikro untuk berkomunikasi secara asinkron dengan menerbitkan dan mengonsumsi peristiwa, bukan melakukan panggilan layanan langsung. Ketika sebuah layanan menyelesaikan sebuah tindakan, layanan tersebut menyiarkan sebuah peristiwa yang dapat didengarkan oleh layanan lain yang berkepentingan dan meresponsnya. Pendekatan ini menciptakan ketergantungan yang rendah antara layanan, memungkinkan layanan untuk beroperasi secara independen sambil tetap mengoordinasikan aktivitas melalui sistem peristiwa bersama (shared event system).
Pola sidecar
Pola sidecar mengacu pada penerapan kontainer sekunder ("sidecar ") bersama aplikasi atau layanan utama dalam lingkungan eksekusi yang sama. Sidecar ini menangani masalah lintas sektoral (misalnya, pencatatan, pemantauan, keamanan, observabilitas), memperluas fungsionalitas aplikasi utama tanpa memodifikasi basis kodenya.
Pola layanan mikro adaptor
Pola layanan mikro adaptor memungkinkan komunikasi antara sistem atau antarmuka yang tidak kompatibel. Sama seperti adaptor portabel yang memungkinkan Anda menyambungkan perangkat Anda ke stopkontak asing, pola adaptor mengonversi berbagai format data, protokol, atau API yang berbeda. Pola ini bermanfaat ketika mengintegrasikan dengan sistem lama atau layanan pihak ketiga yang menggunakan standar komunikasi yang berbeda.
Pola desain layanan mikro sangat penting dalam industri yang membutuhkan skalabilitas tinggi, logika bisnis yang kompleks, dan kinerja sistem yang andal. Contoh penggunaan teratas meliputi:
Pola desain layanan mikro menawarkan praktik terbaik untuk mengelola sistem terdistribusi yang kompleks saat ini dan menawarkan manfaat luas berikut:
Memilih pola yang sesuai bergantung pada persyaratan spesifik sistem dan kemampuan organisasi Anda. Menggunakan pendekatan sistematis dapat memandu keputusan arsitektur ini.
Mulailah dengan API gateway dan penemuan layanan sebelum menerapkan pola kompleks seperti sumber peristiwa atau CQRS. Pola-pola inti ini membangun infrastruktur komunikasi yang dibutuhkan untuk implementasi yang lebih canggih.
Pertimbangkan pengalaman Anda dengan sistem terdistribusi, kematangan operasional, dan praktik DevOps. Tim yang baru mengenal layanan mikro pada awalnya memperoleh manfaat dari pola yang lebih sederhana, sementara tim yang sudah berpengalaman dapat menangani pola koordinasi yang lebih canggih yang membutuhkan pengetahuan operasional yang lebih dalam.
Setiap pola memiliki kompleksitas yang harus dikelola tim Anda dalam jangka panjang. Basis data per layanan memerlukan strategi sinkronisasi data. Pola yang digerakkan oleh peristiwa membutuhkan infrastruktur broker pesan. Pastikan Anda memiliki kemampuan untuk mendukung pola yang Anda pilih.
Mulailah dengan beberapa layanan menggunakan pola dasar, dapatkan pengalaman, lalu perluas seiring berkembangnya keahlian Anda. Pendekatan inkremental ini mencegah rekayasa yang berlebihan dan memungkinkan pembelajaran sejak implementasi awal.
Red Hat OpenShift on IBM Cloud adalah OpenShift Container Platform (OCP) yang dikelola sepenuhnya.
Gunakan perangkat lunak dan alat bantu DevOps untuk membangun, menerapkan, dan mengelola aplikasi cloud native di berbagai perangkat dan lingkungan.
Dapatkan kemampuan baru dan dorong ketangkasan bisnis dengan layanan konsultasi cloud IBM. Temukan cara berkolaborasi dalam menciptakan solusi, mempercepat transformasi digital, dan mengoptimalkan kinerja melalui strategi hybrid cloud dan kemitraan pakar.