Tutorial Layanan Mikro: Apa itu, Architekstur dan contoh
โก Ringkasan Cerdas
Microservices adalah pola arsitektur berorientasi layanan di mana sebuah aplikasi dibangun sebagai kumpulan unit layanan kecil dan independen. Sumber daya ini menjelaskan arsitektur monolitik versus microservice, perbedaannya, tantangan, perbandingan SOA, alat-alat populer, dan praktik terbaik.
Apa itu Layanan Mikro?
Microservices adalah pola arsitektur berorientasi layanan di mana aplikasi dibangun sebagai kumpulan berbagai unit layanan independen terkecil. Ini adalah rekayasa Perangkat Lunak pendekatan yang berfokus pada penguraian aplikasi menjadi modul fungsi tunggal dengan antarmuka yang terdefinisi dengan baik. Modul-modul ini dapat disebarkan dan dioperasikan secara mandiri oleh tim kecil yang memiliki seluruh siklus hidup layanan.
Istilah โmikroโ merujuk pada ukuran sebuah microservice, yang harus dapat dikelola oleh satu tim pengembang (5 hingga 10 pengembang). Dalam metodologi ini, aplikasi besar dibagi menjadi unit-unit independen terkecil.
Apa itu Monolitik Architekstur?
Secara sederhana, arsitektur monolitik dapat dikatakan seperti sebuah wadah besar tempat semua komponen perangkat lunak suatu aplikasi dikelompokkan menjadi satu paket. Mari kita bahas contoh toko eCommerce dalam konteks arsitektur monolitik.
Monolitis Architekstur Aplikasi eCommerce
Dalam aplikasi e-niaga mana pun, ada beberapa fitur standar seperti Pencarian, RevTampilan & Peringkat, dan Pembayaran. Fitur-fitur ini dapat diakses oleh pelanggan menggunakan browser atau aplikasi mereka. Ketika pengembang situs eCommerce menerapkan aplikasi, itu adalah satu unit Monolitik. Kode untuk berbagai fitur seperti Pencarian, RevTampilan & Peringkat, dan Pembayaran berada di server yang sama. Untuk meningkatkan skala aplikasi, Anda perlu menjalankan beberapa instance (server) dari aplikasi-aplikasi ini.
Apa itu Layanan Mikro Architekstur?
Layanan mikro Architekstur adalah gaya pengembangan arsitektur yang memungkinkan pembuatan aplikasi sebagai kumpulan layanan otonom kecil yang dikembangkan untuk domain bisnis. Ini adalah varian arsitektur gaya struktural yang membantu mengatur aplikasi sebagai kumpulan layanan yang saling terkait secara longgar. Layanan Mikro Architecture berisi layanan terperinci dan protokol ringan.
Mari kita ambil contoh aplikasi e-commerce yang dikembangkan dengan arsitektur microservice. Dalam contoh arsitektur Microservices ini, setiap microservice berfokus pada satu kemampuan bisnis tunggal. Pencarian, Penilaian & Review, dan Payment masing-masing memiliki instance (server) sendiri dan berkomunikasi satu sama lain.
Microservices Architekstur
Dalam Monolitik ArchiDalam arsitektur arsitektur, semua komponen menyatu menjadi satu modul. Namun dalam arsitektur Microservices ... ArchiDalam arsitektur tersebut, mereka tersebar ke dalam modul-modul individual (mikroservis) yang saling berkomunikasi, seperti yang ditunjukkan pada contoh Mikroservis di atas.
Komunikasi antar layanan mikro adalah komunikasi tanpa kewarganegaraan di mana setiap pasangan permintaan dan respons bersifat independen. Oleh karena itu, Microservices dapat berkomunikasi dengan mudah. Di Layanan Mikro ArchiDalam arsitektur ini, data diintegrasikan. Setiap Microservice memiliki penyimpanan datanya sendiri.
Layanan Mikro vs. Monolitik Architekstur
| Microservices | Monolitis Architekstur |
|---|---|
| Setiap unit dari keseluruhan aplikasi harus menjadi yang terkecil, dan harus mampu mencapai satu tujuan bisnis tertentu. | Satu basis kode tunggal untuk semua tujuan bisnis. |
| Proses memulai layanan relatif cepat. | Proses memulai layanan membutuhkan waktu lebih lama. |
| Pengisolasian kesalahan itu mudah. โโBahkan jika satu layanan mengalami gangguan, layanan lain dapat terus berfungsi. | Mengisolasi kesalahan itu sulit. Jika ada fitur tertentu yang tidak berfungsi, seluruh sistem akan mati. Untuk mengatasi masalah ini, aplikasi perlu dibangun ulang, diuji ulang, dan diimplementasikan kembali. |
| Semua layanan mikro harus memiliki keterkaitan yang longgar sehingga perubahan yang dilakukan pada satu layanan tidak memengaruhi layanan lainnya. | Arsitektur monolitik memiliki keterkaitan yang erat. Perubahan pada satu modul kode akan memengaruhi modul lainnya. |
| Bisnis dapat mengalokasikan lebih banyak sumber daya ke layanan yang menghasilkan ROI (Return on Investment) yang lebih tinggi. | Karena layanan tidak terisolasi, alokasi sumber daya individual tidak mungkin dilakukan. |
| Sumber daya perangkat keras yang lebih banyak dapat dialokasikan ke layanan yang sering digunakan. Dalam contoh e-commerce di atas, lebih banyak pengguna memeriksa daftar produk dan melakukan pencarian dibandingkan pembayaran, sehingga lebih banyak sumber daya dapat dialokasikan ke layanan mikro pencarian dan daftar produk. | Penskalaan aplikasi merupakan hal yang menantang dan juga boros. |
| Arsitektur microservices selalu konsisten dan tersedia secara terus-menerus. | Alat pengembangan menjadi kewalahan karena prosesnya perlu dimulai dari awal. |
| Data diintegrasikan. Hal ini memungkinkan setiap Microservice untuk mengadopsi model data yang paling sesuai dengan kebutuhan mereka. | Data terpusat. |
| Tim kecil yang fokus. Pengembangan paralel dan lebih cepat. | Diperlukan tim yang besar dan upaya manajemen tim yang cukup besar. |
| Perubahan model data satu Layanan Mikro tidak memengaruhi Layanan Mikro lainnya. | Perubahan pada model data akan memengaruhi seluruh basis data. |
| Berinteraksi dengan layanan mikro lainnya menggunakan antarmuka yang terdefinisi dengan baik. | Tak dapat diterapkan. |
| Arsitektur microservices berprinsip pada fokus produk, bukan proyek. | Menekankan pada keseluruhan proyek. |
| Tidak ada ketergantungan silang antar basis kode. Anda dapat menggunakan teknologi berbeda untuk Layanan Mikro yang berbeda. | Satu fungsi atau program bergantung pada fungsi atau program lainnya. |
Tantangan Layanan Mikro
- Mikroservis saling bergantung satu sama lain, dan mereka harus saling berkomunikasi.
- Dibandingkan dengan sistem monolitik, ada lebih banyak layanan untuk dipantau yang dikembangkan menggunakan metode berbeda bahasa pemrograman.
- Karena merupakan sistem terdistribusi, modelnya pada hakikatnya rumit.
- Layanan yang berbeda akan memiliki mekanisme masing-masing, sehingga membutuhkan banyak memori untuk data yang tidak terstruktur.
- Manajemen yang efektif dan kerja tim diperlukan untuk mencegah masalah yang berantai.
- Mereproduksi masalah akan menjadi tugas yang sulit ketika masalah tersebut hilang di satu versi dan muncul kembali di versi terbaru.
- Implementasi independen menjadi rumit dengan arsitektur Microservices.
- Arsitektur layanan mikro menghadirkan banyak overhead operasi.
- Mengelola aplikasi menjadi sulit ketika layanan baru ditambahkan ke sistem.
- Diperlukan beragam profesional terampil untuk mendukung layanan mikro yang terdistribusi secara heterogen.
- Layanan mikro itu mahal, karena Anda perlu mempertahankan ruang server yang berbeda untuk tugas bisnis yang berbeda.
SOA vs. Layanan Mikro
Layanan SOA dikelola dalam organisasi oleh sebuah registri yang berfungsi sebagai daftar direktori. Aplikasi perlu mencari layanan di dalam registri dan memanggil layanan tersebut. Dengan kata lain, SOA Ibarat sebuah orkestra di mana masing-masing artis tampil dengan alat musiknya sementara pengarah musik memberikan instruksi kepada semuanya.
Di sisi lain, Microservices adalah bentuk gaya arsitektur berorientasi layanan di mana aplikasi dibangun sebagai kumpulan berbagai layanan kecil yang berbeda, bukan sebagai satu perangkat lunak atau aplikasi. Microservices seperti sebuah kelompok tari di mana setiap penari independen dan tahu apa yang perlu mereka lakukan. Jadi, jika mereka melewatkan beberapa langkah, mereka tahu bagaimana kembali ke urutan yang benar. Berikut adalah perbandingan detail antara SOA dan Microservices.
| Parameter | SOA | Microservices |
|---|---|---|
| Tipe desain | Dalam SOA, komponen perangkat lunak diekspos ke dunia luar untuk digunakan dalam bentuk layanan. | Layanan Mikro adalah bagian dari SOA. Ini adalah implementasi SOA. |
| Ketergantungan | Unit bisnis bergantung. | Mereka independen satu sama lain. |
| Ukuran Perangkat Lunak | Ukuran perangkat lunak ini lebih besar daripada perangkat lunak konvensional mana pun. | Ukuran perangkat lunak selalu kecil dalam arsitektur Microservices. |
| Teknologi Stack | Tumpukan teknologi lebih rendah dibandingkan dengan Microservice. | Tumpukan teknologi layanan mikro bisa sangat besar. |
| Sifat aplikasi | Bersifat monolitik. | Bersifat full stack. |
| Mandiri dan Fokus | Aplikasi SOA dibangun untuk melakukan banyak tugas bisnis. | Mereka dibangun untuk melakukan satu tugas bisnis. |
| Penyebaran | Proses penyebaran memakan waktu. | Penerapannya mudah dan tidak memakan waktu lama. |
| Efektivitas biaya | Lebih hemat biaya. | Less hemat biaya. |
| Skalabilitas | Less dibandingkan dengan Layanan Mikro. | Sangat skalabel. |
| Logika bisnis | Komponen logika bisnis disimpan di dalam satu domain layanan tunggal, dengan protokol komunikasi sederhana (HTTP dengan XML atau JSON) dan API yang didukung oleh SDK/Klien. | Logika bisnis dapat berjalan lintas domain, dengan lapisan mirip Enterprise Service Bus di antara layanan (Middleware). |
Alat Layanan Mikro
1) Wiremock: Menguji Layanan Mikro
WireMock adalah pustaka fleksibel untuk membuat stub dan mock layanan web. Pustaka ini dapat mengkonfigurasi respons yang dikembalikan oleh API HTTP ketika menerima permintaan tertentu. Pustaka ini juga digunakan untuk menguji Microservices.
Download link: http://wiremock.org/
2) buruh pelabuhan
Docker adalah proyek sumber terbuka yang memungkinkan kita untuk membuat, menyebarkan, dan menjalankan aplikasi dengan menggunakan kontainer. Dengan menggunakan kontainer ini, pengembang dapat menjalankan aplikasi sebagai satu paket tunggal. Ini memungkinkan Anda untuk mengirimkan pustaka dan dependensi lainnya dalam satu paket.
Download link: https://www.docker.com/
3) Histriks
Hystrix adalah sistem toleransi kesalahan. Java Alat ini dirancang untuk memisahkan titik akses ke layanan jarak jauh, sistem, dan pustaka pihak ketiga dalam lingkungan terdistribusi seperti Microservices. Ini meningkatkan sistem secara keseluruhan dengan mengisolasi layanan yang gagal dan mencegah efek berantai dari kegagalan.
Ambil Link: https://github.com/Netflix/Hystrix
Praktik Terbaik Layanan Mikro Architekstur
- Penyimpanan data terpisah untuk setiap Microservice.
- Pertahankan tingkat kematangan kode yang serupa.
- Lakukan build terpisah untuk setiap Microservice.
- Selalu perlakukan setiap server sebagai server tanpa status (stateless).



