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.

  • ๐Ÿงฉ Konsep Inti: Arsitektur microservices memecah aplikasi menjadi modul-modul yang memiliki fungsi tunggal dan dapat diimplementasikan secara independen, yang masing-masing dikelola oleh tim kecil yang terdiri dari 5 hingga 10 pengembang.
  • ๐Ÿ“ฆ Kontras Monolitik: Aplikasi monolitik menggabungkan semua fitur ke dalam satu paket pada satu server, sehingga penskalaan berarti menjalankan beberapa salinan lengkap.
  • ๏ธ Layanan mikro Architekstur: Setiap layanan menangani satu kemampuan bisnis, berjalan pada instance-nya sendiri, dan berkomunikasi melalui protokol yang ringan dan tanpa status.
  • ๏ธ Data Terpadu: Setiap microservice memiliki penyimpanan datanya sendiri, sehingga perubahan pada model data satu layanan tidak akan memengaruhi layanan lainnya.
  • ๏ธ Peralatan dan Praktik: Alat-alat seperti WireMockDocker dan Hystrix mendukung pengujian, penerapan, dan toleransi kesalahan; menjaga setiap layanan tetap stateless dengan build-nya sendiri.

Tutorial Layanan Mikro

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

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

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

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

ParameterSOAMicroservices
Tipe desainDalam SOA, komponen perangkat lunak diekspos ke dunia luar untuk digunakan dalam bentuk layanan.Layanan Mikro adalah bagian dari SOA. Ini adalah implementasi SOA.
KetergantunganUnit bisnis bergantung.Mereka independen satu sama lain.
Ukuran Perangkat LunakUkuran perangkat lunak ini lebih besar daripada perangkat lunak konvensional mana pun.Ukuran perangkat lunak selalu kecil dalam arsitektur Microservices.
Teknologi StackTumpukan teknologi lebih rendah dibandingkan dengan Microservice.Tumpukan teknologi layanan mikro bisa sangat besar.
Sifat aplikasiBersifat monolitik.Bersifat full stack.
Mandiri dan FokusAplikasi SOA dibangun untuk melakukan banyak tugas bisnis.Mereka dibangun untuk melakukan satu tugas bisnis.
PenyebaranProses penyebaran memakan waktu.Penerapannya mudah dan tidak memakan waktu lama.
Efektivitas biayaLebih hemat biaya.Less hemat biaya.
SkalabilitasLess dibandingkan dengan Layanan Mikro.Sangat skalabel.
Logika bisnisKomponen 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).

Pertanyaan Umum Demo Slot

Kemampuan AI sering dikemas sebagai layanan mikro individual, sehingga aplikasi dapat memanggil model melalui API tanpa perlu menyematkannya. AI juga mendukung perutean cerdas, penskalaan otomatis, dan deteksi anomali di berbagai layanan.

Ya. Alat observabilitas berbasis AI mengkorelasikan log, metrik, dan tracmenggunakan pemantauan lintas layanan untuk mendeteksi kegagalan, memprediksi hambatan, dan menemukan akar penyebab lebih cepat daripada analisis manual dalam sistem terdistribusi yang besar.

Secara umum, microservices diklasifikasikan sebagai stateless dan stateful. Microservices stateless tidak menyimpan data di antara permintaan, sedangkan microservices stateful menyimpan data atau status sesi, yang sering kali didukung oleh penyimpanan data khusus mereka sendiri.

Perusahaan teknologi besar seperti Netflix, Amazon, Uber, dan Spotify Gunakan microservices untuk melakukan penskalaan secara independen dan penyebaran secara sering. Pendekatan ini cocok untuk aplikasi cloud-native dengan trafik tinggi yang membutuhkan rilis cepat dan terisolasi.

Ringkaslah postingan ini dengan: