Tutorial Layanan Mikro: Apa itu, Architekstur dan contoh
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” mengacu pada ukuran layanan mikro yang harus dikelola oleh satu tim pengembangan (5 hingga 10 pengembang). Dalam metodologi ini, aplikasi besar dibagi menjadi unit-unit independen terkecil.
Apa itu Monolitik Architekstur?
Secara awam, Anda dapat mengatakan bahwa arsitektur Monolitik seperti sebuah wadah besar di mana semua komponen perangkat lunak dari suatu aplikasi digabungkan menjadi satu paket.
Mari kita bahas contoh toko eCommerce dalam konteks arsitektur Monolitik.

Dalam aplikasi e-niaga mana pun, ada beberapa fitur standar seperti Pencarian, Revlihat & Peringkat, dan Pembayaran. Fitur-fitur ini dapat diakses oleh pelanggan menggunakan browser atau aplikasi mereka. Ketika pengembang situs eCommerce menyebarkan aplikasinya, itu adalah satu unit Monolitik. Kode untuk berbagai fitur seperti Penelusuran, Review & Peringkat, dan Pembayaran berada di server yang sama. Untuk menskalakan aplikasi, Anda perlu menjalankan beberapa instance (server) dari 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 layanan mikro. Dalam contoh arsitektur layanan mikro ini, setiap layanan mikro difokuskan pada kapabilitas bisnis tunggal. Pencarian, Penilaian & Review dan Payment masing-masing memiliki instance (server) dan berkomunikasi satu sama lain.
Dalam Monolitik Architecture, semua komponen menyatu menjadi satu modul. Tapi, di Layanan Mikro Archisecara tektur mereka tersebar ke dalam modul individual (layanan mikro) yang berkomunikasi satu sama lain seperti yang ditunjukkan pada contoh Layanan Mikro 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 Architecture, Data difederasi. Setiap Microservice memiliki penyimpanan data terpisah. Berikutnya dalam hal ini Java Tutorial layanan mikro, kita akan mempelajari perbedaan antara arsitektur layanan mikro dan arsitektur monolitik.
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. | Basis kode tunggal untuk semua tujuan bisnis |
Startup Layanan relatif cepat | Memulai layanan membutuhkan lebih banyak waktu |
Isolasi kesalahan itu mudah. Sekalipun satu layanan terhenti, layanan lainnya tetap dapat berfungsi. | Isolasi kesalahan sulit dilakukan. Jika fitur tertentu tidak berfungsi, seluruh sistem akan mati. Untuk mengatasi masalah ini, aplikasi perlu dibangun kembali, diuji ulang, dan juga diterapkan kembali. |
Semua layanan mikro harus digabungkan secara longgar sehingga perubahan yang dilakukan pada salah satu layanan tidak memengaruhi layanan lainnya. | Arsitektur monolitik saling terkait erat. Perubahan pada satu modul kode akan memengaruhi modul lainnya. |
Bisnis dapat mengerahkan lebih banyak sumber daya ke layanan yang menghasilkan ROI lebih tinggi | Karena layanan tidak terisolasi, alokasi sumber daya individual tidak mungkin dilakukan |
Lebih banyak sumber daya perangkat keras dapat dialokasikan ke layanan yang sering digunakan. Dalam contoh e-commerce di atas, lebih banyak pengguna yang memeriksa daftar produk dan mencari dibandingkan dengan pembayaran. Jadi, lebih banyak sumber daya dapat dialokasikan ke layanan mikro pencarian dan daftar produk. | Penskalaan aplikasi merupakan hal yang menantang dan juga boros. |
Layanan mikro selalu konsisten dan tersedia terus menerus. | Alat pengembangan menjadi terbebani karena prosesnya harus dimulai dari awal. |
Data digabungkan. Hal ini memungkinkan setiap Microservice untuk mengadopsi model data yang paling sesuai dengan kebutuhannya. | Data terpusat. |
Tim Kecil yang Berfokus. Perkembangan paralel dan lebih cepat | Dibutuhkan tim yang besar dan upaya manajemen tim yang besar |
Perubahan model data satu Layanan Mikro tidak memengaruhi Layanan Mikro lainnya. | Perubahan model data mempengaruhi keseluruhan database |
Berinteraksi dengan layanan mikro lainnya menggunakan antarmuka yang terdefinisi dengan baik | Tidak berlaku |
Layanan mikro bekerja berdasarkan prinsip yang berfokus pada produk, bukan proyek | Berikan penekanan 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
- MicroServices bergantung satu sama lain, dan mereka harus berkomunikasi satu sama lain.
- 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 tersendiri, sehingga menghasilkan sejumlah besar memori untuk data tidak terstruktur.
- Manajemen dan kerja sama tim yang efektif diperlukan untuk mencegah masalah yang berlarut-larut
- Mereproduksi suatu masalah akan menjadi tugas yang sulit jika masalah tersebut hilang dalam satu versi, dan muncul kembali dalam versi terbaru.
- Penerapan Independen menjadi rumit dengan Layanan Mikro.
- Arsitektur layanan mikro menghadirkan banyak overhead operasi.
- Sulit untuk mengelola aplikasi ketika layanan baru ditambahkan ke sistem
- Berbagai macam profesional terampil diperlukan 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 registri yang bertindak sebagai daftar direktori. Aplikasi perlu mencari layanan di registri dan menjalankan layanan tersebut.
Di dunia 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 merupakan bentuk gaya arsitektur berorientasi layanan di mana aplikasi dibangun sebagai kumpulan berbagai layanan kecil, alih-alih satu perangkat lunak atau aplikasi.
Layanan mikro seperti sebuah kelompok penari yang masing-masing penarinya mandiri dan tahu apa yang harus mereka lakukan. Jadi, jika mereka melewatkan beberapa langkah, mereka tahu cara untuk kembali ke urutan yang benar. Sekarang dalam tutorial arsitektur Layanan Mikro ini, mari kita pelajari tentang perbedaan antara SOA dan Layanan Mikro.
Berikut adalah perbandingan rinci 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 lebih besar dibandingkan perangkat lunak konvensional | Ukuran Perangkat Lunak selalu kecil di Layanan Mikro |
Teknologi Stack | Tumpukan teknologi lebih rendah dibandingkan dengan Microservice. | Tumpukan teknologi layanan mikro bisa sangat besar |
Sifat aplikasi | Sifatnya monolitik | Tumpukan penuh di alam |
Mandiri dan Fokus | Aplikasi SOA dibangun untuk melakukan banyak tugas bisnis. | Mereka dibangun untuk melakukan satu tugas bisnis. |
Penyebaran | Proses penerapannya 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 domain layanan tunggal. Protokol kabel sederhana (HTTP dengan XML JSON) API digerakkan dengan SDK/Klien | Logika bisnis dapat hidup di seluruh domain Bus Layanan perusahaan seperti lapisan antar layanan Middleware |
Alat Layanan Mikro
1) Wiremock: Menguji Layanan Mikro
WireMock adalah perpustakaan fleksibel untuk mematikan dan mengejek layanan web. Itu dapat mengonfigurasi respons yang dikembalikan oleh API HTTP ketika menerima permintaan tertentu. Ini juga digunakan untuk menguji Layanan Mikro.
Download link:http://wiremock.org/
2) buruh pelabuhan
Docker adalah proyek sumber terbuka yang memungkinkan kita membuat, menyebarkan, dan menjalankan aplikasi dengan menggunakan container. Dengan menggunakan container ini, pengembang dapat menjalankan aplikasi sebagai satu paket. Ini memungkinkan Anda mengirimkan perpustakaan dan dependensi lainnya dalam satu paket.
Download link:https://www.docker.com/
3) Histriks
Hystrix adalah perpustakaan Java yang memiliki toleransi kesalahan. Alat ini dirancang untuk memisahkan titik akses ke layanan jarak jauh, sistem, dan perpustakaan pihak ketiga di lingkungan terdistribusi seperti Microservices. Ini meningkatkan sistem secara keseluruhan dengan mengisolasi layanan yang gagal dan mencegah dampak kegagalan yang berjenjang.
Ambil Link:https://github.com/Netflix/Hystrix
Praktik Terbaik Layanan Mikro Architekstur
- Penyimpanan data terpisah untuk setiap Layanan Mikro
- Simpan kode dengan tingkat kematangan yang sama.
- Bangunan terpisah untuk setiap layanan Mikro.
- Selalu perlakukan – parah seperti tanpa kewarganegaraan.
Kesimpulan
- Layanan mikro adalah pola arsitektur berorientasi layanan di mana aplikasi dibangun sebagai kumpulan berbagai unit layanan independen terkecil.
- Layanan mikro ArchiArsitektur adalah gaya pengembangan arsitektur yang memungkinkan pembangunan aplikasi sebagai kumpulan layanan otonom kecil yang dikembangkan untuk domain bisnis.
- Arsitektur monolitik seperti wadah besar di mana semua komponen perangkat lunak aplikasi digabungkan menjadi satu paket
- Dalam Microservice, setiap unit dari keseluruhan aplikasi harus berukuran terkecil, dan harus mampu mencapai satu tujuan bisnis tertentu
- Dalam arsitektur Monolitik, basis kode yang besar dapat memperlambat seluruh proses pengembangan. Rilis baru dapat memakan waktu berbulan-bulan. Pemeliharaan kode sulit dilakukan
- Dua jenis Layanan Mikro adalah 1) Stateless 2) Stateful
- Layanan mikro di Java bergantung satu sama lain, dan mereka harus berkomunikasi satu sama lain. Membantu Anda memberi penekanan pada fitur dan kebutuhan bisnis tertentu
- Arsitektur berorientasi layanan yang dikenal sebagai SOA merupakan evolusi komputasi terdistribusi berdasarkan model desain permintaan atau balasan untuk aplikasi sinkron dan asinkron.
- Dalam SOA, komponen perangkat lunak diekspos ke dunia luar untuk digunakan dalam bentuk layanan sedangkan Layanan Mikro adalah bagian dari SOA. Ini adalah implementasi SOA
- Wiremock, Docker, dan Hystrix adalah beberapa Alat Microservices yang populer