Apa Itu Service Mesh dan Bagaimana Cara Kerjanya? {8 Alat Mesh Layanan Teratas}


Saat mengembangkan arsitektur layanan mikro, ada banyak komponen individual yang perlu dikonfigurasi oleh tim DevOps. Agar layanan-layanan mikro dapat bekerja sama, mereka memerlukan saluran komunikasi yang mapan untuk berbagi informasi dan transfer data.

Salah satu cara untuk mengelola dan memantau komunikasi antar layanan adalah menggunakan mesh layanan.

Apa itu Jaring Layanan?

jaringan layanan adalah lapisan infrastruktur khusus yang ditambahkan ke arsitektur layanan mikro. Peran utamanya adalah memastikan komunikasi layanan-ke-layanan yang cepat dan aman. Alat berlatensi rendah ini mengelola dan memantau komunikasi antarlayanan dan berbagi data.

Lapisan ini terdiri dari bidang kendali yang menjadi tempat pengembang menerapkan aturan dan kebijakan tertentu pada lapisan jaringan. Bidang kontrol bekerja secara langsung dengan bidang data, kumpulan proksi sespan yang berjalan bersama layanan. Proksi ini bertanggung jawab atas semua komunikasi antar layanan. Selain itu, mereka memantau dan memberikan wawasan berharga mengenai kinerja aplikasi secara keseluruhan dan membantu menemukan potensi masalah dan menghindari downtime.

Proksi memberikan kemampuan yang berharga, termasuk:

  • Penemuan layanan dinamis
  • Penyeimbang beban
  • Pemeriksaan kesehatan
  • Enkripsi
  • Observabilitas
  • Pemutus sirkuit
  • Peluncuran bertahap dengan pembagian lalu lintas berdasarkan persentase
  • Autentikasi
  • Metrik yang kaya
  • Otorisasi

Kebangkitan Arsitektur Service Mesh

Untuk memahami sepenuhnya cara kerja mesh layanan, kita perlu mengetahui alasan alat tersebut dikembangkan. Munculnya arsitektur service mesh muncul sebagai solusi terhadap sejumlah masalah terkait layanan mikro.

Banyak tim pengembangan beralih dari pengembangan aplikasi monolitik ke arsitektur layanan mikro. Ini membagi aplikasi dari unit monolitik menjadi sistem layanan individual yang bekerja bersama. Aplikasi ini terdiri dari beberapa layanan otonom dengan fungsi masing-masing.

Kesulitan dalam mengembangkan aplikasi semacam itu adalah mengonfigurasi cara terbaik agar layanan-layanan ini dapat berkomunikasi satu sama lain. Performa aplikasi bergantung pada layanan yang bekerja sama dan berbagi data untuk memberikan pengalaman pengguna terbaik. Misalnya, toko web dapat terdiri dari layanan login yang berkomunikasi dengan layanan pembelian yang memerlukan informasi dari database inventaris dan seterusnya.

Saat layanan mikro berkomunikasi melalui API, menemukan solusi terbaik untuk menyelesaikan penemuan dan perutean adalah hal yang penting. Selain itu, developer perlu memastikan komunikasi dalam sistem aman. Meskipun firewall melindungi aplikasi dari serangan luar, terdapat jaringan datar dan terbuka dalam arsitektur layanan mikro.

Sebelum arsitektur layanan mesh, tugas ini ditangani oleh penyeimbang beban. Namun, hal ini bukanlah solusi praktis, terutama dalam skala yang lebih besar, karena masalah penerapan dan biaya. Jaring layanan dikembangkan sebagai solusi akhir untuk semua masalah yang disebutkan di atas. Ini menyajikan lapisan jaringan dengan registri terpusat (bidang kendali) yang mengelola semua layanan dengan proksi sespannya. Mereka jauh lebih mudah dikonfigurasi dan diskalakan dibandingkan dengan penyeimbang beban. Pengembang dapat meningkatkan dan menurunkan skala proxy sesuai kebutuhan dan mengubah aturan perutean tanpa mengubah layanan.

Manfaat Layanan Mesh

Manfaat paling signifikan dari jaringan layanan adalah:

  • Peningkatan keamanan - Menerapkan mesh layanan ke dalam arsitektur layanan mikro akan meningkatkan keamanan secara keseluruhan. Lapisan jaringan ini memperkenalkan otorisasi, autentikasi, enkripsi, dan penegakan kebijakan otomatis. Layanan ini menggunakan keamanan Transport Layer bersama (mTLS) untuk memastikan semua komunikasi antar layanan aman. Layanan mengidentifikasi dirinya dengan sertifikat TLS untuk membuat koneksi. Setelah memvalidasi identitasnya, mereka membuat saluran terenkripsi untuk berbagi data.
  • Kontrol lalu lintas dan visibilitas - Salah satu fungsi utama jaringan layanan adalah menyediakan kontrol lalu lintas. Ia mengatur lalu lintas timur-barat, serta lalu lintas antar layanan. Semua komunikasi dilakukan melalui proksi sespan, yang dikelola oleh bidang kendali. Lalu lintas disalurkan secara transparan, memberikan pengembang visibilitas yang lebih baik terhadap semua pertukaran data. Dengan wawasan yang lebih jelas mengenai kinerja aplikasi, lebih mudah untuk menemukan potensi masalah dalam sistem.
  • Kemampuan untuk diamati - Saat platform mengelola semua lalu lintas, platform ini mengumpulkan wawasan berharga tentang perilaku lalu lintas dan interaksi pengguna. Dengan data dalam jumlah besar, analis bisnis dapat merencanakan strategi untuk meningkatkan aplikasi.
  • Pengembang berfokus pada pengembangan aplikasi dibandingkan jaringan - Daripada tim pengembangan menyiapkan dan mengelola seluruh lapisan jaringan, mereka dapat mengimplementasikan mesh layanan ke dalam arsitektur. Meskipun platform ini memerlukan konfigurasi awal, platform ini mengotomatiskan tugas-tugas yang memakan waktu terkait dengan manajemen jaringan. Hal ini memungkinkan pengembang untuk fokus pada layanan mikro. Membiarkan jaringan layanan untuk mengelola interaksi layanan-ke-layanan akan menghemat waktu dan uang sekaligus meningkatkan produktivitas.
  • Ketahanan - Jaring layanan menyediakan fitur yang membantu menciptakan aplikasi layanan mikro yang tangguh. Salah satu fitur tersebut adalah pola pemutus sirkuit yang membantu mendeteksi kegagalan dan lonjakan latensi. Selain itu, mesh layanan menggunakan penyeimbangan beban untuk penemuan layanan dan merutekan lalu lintas di seluruh jaringan layanan mikro. Fitur lain yang menambah ketahanannya termasuk percobaan ulang, batas waktu, dan tenggat waktu.
  • Siklus pengujian dan penerapan yang lebih cepat - Menggunakan proxy sidecar untuk komunikasi pod-ke-pod jauh lebih sederhana dan lebih cepat untuk disiapkan. Alih-alih mengkodekan fungsi-fungsi yang berlebihan ke dalam setiap layanan, mereka menyebarkan proxy dan menghubungkannya ke layanan. Ini mempercepat siklus pengembangan dan pengujian secara keseluruhan.

Daftar Jerat Layanan Sumber Terbuka

Ada sejumlah jerat layanan sumber terbuka yang tersedia. Istio, Linkerd, dan Konsul paling banyak digunakan.

Di bawah ini Anda akan menemukan detail lebih lanjut tentang setiap platform.

istio

Istio adalah infrastruktur sumber terbuka yang dirancang oleh Google, IBM, dan Lyft. Ini adalah salah satu platform mesh layanan paling awal. Ia menggunakan Istiod, sebuah bidang kontrol yang terdiri dari beberapa komponen (Pilot, Citadel, dan Mixer) untuk mengoperasikan dan mengkonfigurasi mesh layanan. Bidang data terdiri dari proxy Envoy yang dikembangkan dalam C++. Koneksi HTTP/TCP dikelola oleh Gateway, penyeimbang beban Istio. VirtualService dan DestinationRules menentukan aturan dan kebijakan perutean.

Untuk mempelajari lebih lanjut tentang solusi mesh layanan sumber terbuka paling populer, lihat Apa Itu Istio? - Arsitektur, Fitur, Manfaat Dan Tantangan

Linkerd

Linkerd adalah mesh layanan sumber terbuka ringan, yang dikembangkan oleh proyek Cloud Native Computing Foundation (CNCF). Penginstalannya mudah di cluster Kubernetes pada platform apa pun, tanpa konfigurasi tambahan. Tidak adanya konfigurasi bermanfaat ketika bekerja dengan cluster yang lebih kecil. Namun, proyek berskala besar memerlukan kemungkinan konfigurasi untuk mengelola semua layanan di cluster dengan sukses.

Proksi sespannya ditulis dalam Rust. Linkerd menggunakan Pengontrol untuk bidang kendali dan Penerapan Web untuk dasbor. Selain itu, aplikasi ini menggunakan Prometheus untuk menjelajahi dan menyimpan metrik, serta Grafana untuk merender dan menampilkan dasbor.

Konsul Hubungkan

Konsul pertama kali dirancang sebagai alat penemuan layanan dan kemudian berkembang menjadi jaringan layanan. Tidak seperti Linkerd, Consul Connect menyertakan banyak konfigurasi, memberi Anda kontrol lebih besar atas lingkungan jaringan. Oleh karena itu, lebih sulit digunakan daripada Linkerd. Jaring layanan sumber terbuka ini adalah platform agnostik, artinya tidak memerlukan Kubernetes atau Nomad. Namun, Nomad menyederhanakan proses pengelolaan komunikasi layanan mikro melalui Konsul.

Mesh Layanan Terbuka Microsoft

Open Service Mesh (OSM) adalah proyek Utusan CNCF yang mengimplementasikan antarmuka mesh layanan untuk mengelola dan mengamankan aplikasi layanan mikro dinamis. Ia menggunakan Envoy xDS sebagai kontainer sespan. Fitur utamanya meliputi peralihan lalu lintas, manajemen sertifikat, pengaktifan mTLS, injeksi sespan otomatis, dan kebijakan kontrol akses.

kuma

Kuma adalah bidang kendali sumber terbuka untuk Kubernetes dan VM yang berjalan dalam mesh layanan. Layanan ini memiliki arsitektur kebijakan L4+L7 yang mengimplementasikan fitur seperti penemuan layanan, perutean, keamanan tanpa kepercayaan, dan kemampuan observasi. Platform ini sangat terukur dan mudah diatur.

Topi Merah Jaring Layanan OpenShift

Red Hat mengembangkan OpenShift Service Mesh untuk mengelola aplikasi layanan mikro. Ini menyediakan banyak antarmuka untuk jaringan dan peningkatan keamanan dengan Batasan Konteks Keamanan. Ini mengukur kinerja dengan Jager dan mengamati interaksi antara layanan dengan Kiali. Selain itu, OpenShift menyertakan Adaptor Istio Mixer Skala 3 Red Hat untuk keamanan API yang lebih baik.

AWS App Mesh

>

Amazon mengembangkan App Mesh, perangkat lunak mesh layanan gratis yang mengelola semua layanan Anda dalam arsitektur layanan mikro. Ini memberikan ketersediaan tinggi dan visibilitas menyeluruh untuk aplikasi layanan mikro Anda. AWS App Mesh terintegrasi dengan AWS Fargate, Amazon ECS, Amazon EC2, Amazon EKS, Kubernetes<, dan Pos Luar AWS. Dengan alat pemantauannya, data pemantauan secara otomatis diekspor.

Lihat artikel kami tentang ECS vs Kubernetes untuk mempelajari bagaimana keduanya saling melengkapi.

Jaring Layanan Jaringan

Network Service Mesh adalah proyek CNCF Sandbox sumber terbuka. Ini adalah mesh layanan IP hybrid/multi-cloud yang menggunakan serangkaian API sederhana untuk memfasilitasi konektivitas. Ini membuat koneksi antara layanan yang berjalan di dalam container dan dengan titik akhir eksternal. Saat diterapkan, ini hanya memerlukan sedikit perubahan pada Kubernetes.

Kesimpulannya

Jaring layanan menyederhanakan pengelolaan dan pemeliharaan aplikasi yang dikembangkan menggunakan arsitektur layanan mikro. Ini meningkatkan keamanan keseluruhan dalam arsitektur layanan mikro dan memastikan visibilitas dan observasi arus lalu lintas. Secara keseluruhan, fitur mesh layanan meningkatkan kinerja dan mempercepat siklus pengembangan. Dengan beragam solusi sumber terbuka yang tersedia, temukan solusi yang paling sesuai dengan kebutuhan aplikasi Anda.

Artikel terkait