Apa itu Service Mesh? Apa Mesh Layanan Open-Source yang Tersedia?
Saat berkembang dalam arsitektur layanan mikro, ada banyak komponen individual yang perlu dikonfigurasi oleh tim DevOps. Agar layanan mikro dapat bekerja bersama, 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 Jala Layanan?
A Jaring layanan adalah lapisan infrastruktur khusus yang ditambahkan ke arsitektur layanan mikro. Peran utamanya adalah untuk memastikan komunikasi layanan-ke-layanan yang cepat dan aman. Alat latensi rendah ini mengelola dan memantau komunikasi antarlayanan dan berbagi data.
Ini terdiri dari pesawat kontrol dari mana pengembang menerapkan aturan dan kebijakan khusus ke lapisan jaringan. Bidang kontrol bekerja secara langsung dengan bidang data, kumpulan proxy sespan yang berjalan di samping layanan. Proxy ini bertanggung jawab untuk semua komunikasi antar layanan. Selain itu, mereka memantau dan memberikan wawasan berharga tentang kinerja aplikasi secara keseluruhan dan membantu menemukan potensi masalah dan menghindari waktu henti.
Proxy memberikan kemampuan yang berharga, termasuk:
- Penemuan layanan dinamis
- Penimbangan beban
- Pemeriksaan kesehatan
- Enkripsi
- Keterlihatan
- Pemutus sirkuit
- Peluncuran bertahap dengan pembagian traffic berbasis persentase
- Otentikasi
- Metrik yang kaya
- Otorisasi
Bangkitnya Arsitektur Layanan Mesh
Untuk sepenuhnya memahami cara kerja mesh layanan, kita perlu melihat mengapa alat semacam itu dikembangkan. Munculnya arsitektur jala layanan muncul sebagai solusi untuk sejumlah masalah yang berkaitan dengan layanan mikro.
Banyak tim pengembangan beralih dari mengembangkan aplikasi monolitik ke arsitektur layanan mikro . Ini membagi aplikasi dari unit monolitik ke sistem layanan individu yang bekerja bersama. Aplikasi ini terdiri dari beberapa layanan otonom dengan fungsi masing-masing.
Kesulitan dalam mengembangkan aplikasi semacam itu adalah mengonfigurasi cara terbaik bagi layanan ini untuk berbicara satu sama lain. Kinerja aplikasi bergantung pada layanan yang bekerja bersama dan berbagi data untuk memberikan pengalaman pengguna terbaik. Misalnya, toko web dapat terdiri dari layanan masuk 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 itu penting. Selain itu, developer perlu memastikan komunikasi dalam sistem aman . Meskipun firewall melindungi aplikasi dari serangan luar, ada jaringan terbuka yang datar di dalam arsitektur layanan mikro.
Sebelum arsitektur layanan mesh, tugas ini ditangani oleh load balancer . Namun, itu bukan solusi praktis, terutama dalam skala yang lebih besar, karena masalah penerapan dan biaya. Jala layanan dikembangkan sebagai solusi akhir untuk semua masalah yang disebutkan di atas. Ini menyajikan lapisan jaringan dengan registri terpusat (pesawat kontrol) yang mengelola semua layanan dengan proxy sespannya. Mereka jauh lebih mudah untuk dikonfigurasi dan diskalakan dibandingkan dengan penyeimbang beban. Pengembang dapat menaikkan dan menurunkan skala proxy sesuai kebutuhan dan mengubah aturan perutean tanpa mengubah layanan.
Manfaat Jala Layanan
Manfaat paling signifikan dari mesh layanan adalah:
- Keamanan yang ditingkatkan – Menerapkan mesh layanan ke dalam arsitektur layanan mikro meningkatkan keamanan secara keseluruhan. Lapisan jaringan ini memperkenalkan otorisasi automatic otomatis , autentikasi , enkripsi , dan penegakan kebijakan . Menggunakan mutual Transport Layer Security (mTLS) untuk memastikan semua komunikasi layanan-ke-layanan aman. Layanan mengidentifikasi diri mereka dengan sertifikat TLS mereka untuk membuat koneksi. Setelah memvalidasi identitasnya, mereka membuat saluran terenkripsi untuk berbagi data.
- Kontrol lalu lintas dan visibilitas – Salah satu fungsi utama mesh layanan adalah menyediakan kontrol lalu lintas. Ini mengatur lalu lintas timur-barat, serta lalu lintas antar layanan. Semua komunikasi dilakukan melalui proxy sespan, yang dikelola oleh bidang kontrol. Lalu lintas dirutekan secara transparan, memberikan pengembang visibilitas yang lebih baik dari semua pertukaran data. Dengan wawasan yang lebih jelas tentang kinerja aplikasi, akan lebih mudah untuk menemukan potensi masalah dalam sistem.
- Keterlihatan – Saat platform mengelola semua lalu lintas, ia mengumpulkan wawasan berharga tentang perilaku lalu lintas dan interaksi pengguna. Dengan jumlah data yang begitu besar, analis bisnis dapat merencanakan strategi untuk meningkatkan aplikasi.
- Pengembang yang berfokus pada pengembangan aplikasi daripada jaringan – Alih-alih tim pengembangan menyiapkan dan mengelola seluruh lapisan jaringan, mereka dapat mengimplementasikan mesh layanan ke dalam arsitektur. Meskipun platform memang memerlukan konfigurasi awal, platform ini mengotomatiskan tugas-tugas yang memakan waktu terkait dengan manajemen jaringan. Ini memungkinkan pengembang untuk fokus pada layanan mikro. Membiarkan mesh layanan untuk mengelola interaksi layanan-ke-layanan menghemat waktu dan uang sekaligus meningkatkan produktivitas.
- Ketahanan – Jala layanan menyediakan fitur yang membantu membuat 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 lebih cepat – Menggunakan proxy sespan untuk komunikasi pod-to-pod jauh lebih sederhana dan lebih cepat untuk disiapkan. Alih-alih mengkodekan fungsi yang berlebihan ke setiap layanan, mereka menggunakan proxy dan menghubungkannya ke layanan. Ini mempercepat siklus pengembangan dan pengujian secara keseluruhan.
Daftar Mesh Layanan Sumber Terbuka
Ada sejumlah mesh layanan open source yang tersedia. Istio, Linkerd, dan Consul paling banyak digunakan.
Di bawah ini Anda akan menemukan detail lebih lanjut tentang setiap platform.
Istio
Istio adalah infrastruktur open source yang dirancang oleh Google, IBM, dan Lyft. Ini adalah salah satu platform mesh layanan paling awal. Ini menggunakan Istiod , bidang kontrol yang terdiri dari beberapa komponen (Pilot , Benteng , dan Mixer ) untuk mengoperasikan dan mengonfigurasi mesh layanan. Bidang data terdiri dari Utusan proxy, dikembangkan di C++ . Koneksi HTTP/TCP dikelola oleh Gateway , penyeimbang beban Istio. Layanan Virtual dan Aturan Tujuan menentukan aturan dan kebijakan perutean.
Linkerd
Linkerd adalah mesh layanan open source ringan, yang dikembangkan oleh proyek Cloud Native Computing Foundation (CNCF). Mudah dipasang di kluster Kubernetes di atas platform apa pun, tanpa konfigurasi tambahan. Tidak memiliki konfigurasi bermanfaat saat bekerja dengan cluster yang lebih kecil. Namun, proyek berskala besar memerlukan kemungkinan konfigurasi untuk mengelola semua layanan dalam cluster dengan sukses.
Proksi sespannya ditulis dalam Rust . Linkerd menggunakan Pengontrol untuk bidang kontrol dan Web Deployment untuk dasbor. Selain itu, ia menggunakan Prometheus untuk menjelajahi dan menyimpan metrik dan Grafana untuk merender dan menampilkan dasbor.
Konsul Terhubung
Konsul pertama kali dirancang sebagai alat penemuan layanan dan kemudian berkembang menjadi jaring layanan. Tidak seperti Linkerd, Consul Connect menyertakan banyak konfigurasi, memberi Anda lebih banyak kendali atas lingkungan jaringan. Oleh karena itu, lebih sulit digunakan daripada Linkerd. Jala layanan sumber terbuka ini adalah platform agnostik, artinya tidak memerlukan Kubernetes atau Nomad. Namun, Nomad menyederhanakan proses pengelolaan komunikasi layanan mikro melalui Konsul.
Jaring Layanan Terbuka Microsoft
Open Service Mesh (OSM) adalah proyek Utusan CNCF yang mengimplementasikan antarmuka mesh layanan untuk mengelola dan mengamankan aplikasi layanan mikro dinamis. Ini menggunakan Envoy xDS sebagai wadah sespan. Fitur utamanya termasuk pengalihan lalu lintas, manajemen sertifikat, mengaktifkan mTLS, injeksi sespan otomatis, dan kebijakan kontrol akses.
Kuma
Kuma adalah bidang kontrol sumber terbuka untuk Kubernetes dan VM yang berjalan dalam mesh layanan. Ini memiliki arsitektur kebijakan L4+L7 yang mengimplementasikan fitur seperti penemuan layanan, perutean, keamanan tanpa kepercayaan, dan observabilitas. Platform ini sangat skalabel dan mudah diatur.
OpenShift Service Mesh Red Hat
Red Hat mengembangkan OpenShift Service Mesh untuk mengelola aplikasi layanan mikro. Ini menyediakan beberapa antarmuka untuk jaringan dan peningkatan keamanan dengan Security Context Constraint . Ini mengukur kinerja dengan Jager dan mengamati interaksi antara layanan dengan Kiali . Selain itu, OpenShift menyertakan Adaptor Mixer Istio 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 ujung ke ujung untuk aplikasi layanan mikro Anda. AWS App Mesh terintegrasi dengan AWS Fargate , ECS Amazon , Amazon EC2 , Amazon EKS , Kubernetes , dan AWS Outposts . Dengan alat pemantauannya, data pemantauan secara otomatis diekspor.
Jaringan Layanan Jaringan
Network Service Mesh adalah proyek Kotak Pasir CNCF 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 wadah dan dengan titik akhir eksternal. Saat diimplementasikan, dibutuhkan sedikit perubahan pada Kubernetes.
Kesimpulan
Jala layanan menyederhanakan pengelolaan dan pemeliharaan aplikasi yang dikembangkan menggunakan arsitektur layanan mikro. Ini meningkatkan keamanan keseluruhan dalam arsitektur layanan mikro dan memastikan visibilitas dan pengamatan arus lalu lintas. Secara keseluruhan, fitur mesh layanan meningkatkan kinerja dan mempercepat siklus pengembangan. Dengan berbagai macam solusi open source yang tersedia, temukan solusi yang paling sesuai dengan kebutuhan aplikasi Anda.