Apa yang dimaksud dengan pola desain layanan mikro?

Dua orang wanita, yang satu menunjuk ke layar laptop yang menampilkan kode atau data, sementara yang lain melihat, dalam suasana profesional.

Penyusun

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Apa yang dimaksud dengan pola desain layanan mikro?

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.

Berita teknologi terbaru, didukung oleh insight dari pakar

Tetap terinformasi tentang tren industri yang paling penting—dan menarik—tentang AI, otomatisasi, data, dan di luarnya dengan buletin Think. Lihat Pernyataan Privasi IBM®.

Terima kasih! Anda telah berlangganan.

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.

Apa yang dimaksud dengan layanan mikro?

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).

layanan mikro

Apa yang dimaksud dengan layanan mikro?

Dalam video ini, Dan Bettinger memberikan gambaran umum tentang layanan mikro. Dengan membandingkan arsitektur aplikasi layanan mikro dengan jenis arsitektur monolitik tradisional melalui contoh aplikasi tiket, Dan menjabarkan banyak sekali keuntungan layanan mikro dan solusi yang mereka berikan untuk tantangan yang dihadirkan oleh monolitik.

Arsitektur layanan mikro versus monolitik

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.

Jenis-jenis pola desain layanan mikro

Pola desain layanan mikro terbagi dalam lima area utama yang menyediakan solusi teruji yang membantu tim memecahkan tantangan arsitektur terdistribusi:

  1. Komunikasi dan penemuan layanan
  2. Manajemen data dan transaksi
  3. Ketahanan dan penanganan kesalahan
  4. Arsitektur dan integrasi
  5. Peristiwa dan komunikasi

1. Komunikasi dan penemuan layanan

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.

2. Manajemen data dan transaksi

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.

3. Ketahanan dan penanganan kesalahan

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.

4. Arsitektur dan integrasi

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.

5. Peristiwa dan komunikasi

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.

Contoh penggunaan desain layanan mikro

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:

  • Platform e-commerce mengandalkan pola desain layanan mikro untuk menangani penyeimbangan beban selama acara penjualan dan mengelola inventaris yang kompleks di beberapa gudang. Pola tersebut juga mengoordinasikan operasi pembayaran, pengiriman, dan layanan pelanggan di berbagai sistem untuk meningkatkan hasil bisnis dan pengalaman pelanggan yang lebih baik.
  • Layanan streaming menggunakan pola layanan mikro untuk mengirimkan konten secara global sambil mengelola preferensi dan rekomendasi pengguna, sehingga memungkinkan layanan ini untuk menangani beban pengguna secara simultan dengan buffering minimal dan pengalaman yang dipersonalisasi.
  • Layanan keuangan menerapkan pola-pola ini untuk memisahkan perdagangan, manajemen risiko, autentikasi, dan operasi yang berhubungan dengan pelanggan dengan tetap menjaga kepatuhan terhadap peraturan yang ketat dan standar keamanan yang disyaratkan oleh lembaga keuangan.
  • Sistem perawatan kesehatan menggunakan pola ini untuk mengintegrasikan catatan pasien, penjadwalan janji temu, dan sistem penagihan dengan tetap menjaga kepatuhan terhadap HIPAA dan terhubung dengan berbagai API perangkat medis di berbagai penyedia layanan kesehatan.
  • Platform media sosial menggunakan pola desain layanan mikro untuk menskalakan pesan, feed konten, dan pemrosesan media secara independen, yang memungkinkan platform menangani miliaran interaksi pengguna setiap hari sambil mempertahankan kinerja responsif di semua fitur.

Manfaat pola desain layanan mikro

Pola desain layanan mikro menawarkan praktik terbaik untuk mengelola sistem terdistribusi yang kompleks saat ini dan menawarkan manfaat luas berikut:

  • Mengurangi kompleksitas: Pendekatan terstandardisasi dan teruji untuk tantangan umum memberikan hasil yang lebih dapat diprediksi, pemecahan masalah yang lebih mudah, dan orientasi tim yang lebih cepat.
  • Ketangkasan dan waktu pemasaran yang lebih cepat: Tim dapat mengembangkan, menerapkan, dan menskalakan layanan secara mandiri, yang akan mengurangi hambatan koordinasi dan mempercepat penyediaan fitur.
  • Toleransi kesalahan yang lebih baik: Teknik isolasi mencegah kegagalan merambat ke seluruh sistem, secara signifikan mengurangi waktu henti dan meningkatkan keandalan sistem secara keseluruhan.
  • Peningkatan skalabilitas dan fleksibilitas:Organisasi dapat mengalokasikan sumber daya secara tepat di bagian yang memerlukan dan beradaptasi dengan cepat terhadap perubahan kebutuhan bisnis tanpa perombakan sistem yang besar. Tim dapat mengembangkan layanan dalam berbagai bahasa pemrograman, seperti Java atau Python, berdasarkan kebutuhan spesifik.
  • Efisiensi biaya: Penskalaan bertarget dan optimalisasi sumber daya, dikombinasikan dengan kemampuan untuk memilih tumpukan teknologi yang optimal untuk layanan tertentu, menghasilkan sistem yang lebih ekonomis.
  • Keberagaman teknologi: Tim dapat memilih alat dan kerangka kerja terbaik untuk setiap persyaratan spesifik layanan yang menghasilkan solusi yang lebih efisien dan dapat dipelihara. Misalnya, Anda dapat memilih Java Spring Boot for enterprise untuk database as a service (DBaaS) atau Python untuk analitik data.

Memilih pola desain layanan mikro yang tepat

Memilih pola yang sesuai bergantung pada persyaratan spesifik sistem dan kemampuan organisasi Anda. Menggunakan pendekatan sistematis dapat memandu keputusan arsitektur ini.

Mulailah dengan pola dasar

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.

Cocokkan kemampuan tim Anda

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.

Tinjau overhead operasional

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.

Terapkan secara bertahap

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.

Solusi terkait
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloud adalah OpenShift Container Platform (OCP) yang dikelola sepenuhnya.

Jelajahi Red Hat OpenShift
Solusi DevOps

Gunakan perangkat lunak dan alat bantu DevOps untuk membangun, menerapkan, dan mengelola aplikasi cloud native di berbagai perangkat dan lingkungan.

Jelajahi solusi DevOps
Layanan Konsultasi Cloud 

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.

Layanan cloud
Ambil langkah selanjutnya

Buka kemampuan baru dan dorong ketangkasan bisnis dengan layanan konsultasi IBM Cloud.

Jelajahi layanan konsultasi IBM® Cloud Buat akun IBM Cloud gratis Anda