Service Mesh Dijelaskan: Cara Mesh Open Source Mempermudah Komunikasi Mikroservis
Saat mengembangkan dalam arsitektur mikroservis, ada banyak komponen individual yang perlu dikonfigurasi oleh tim DevOps. Agar mikroservis dapat bekerja bersama, mereka memerlukan saluran komunikasi yang telah ditetapkan untuk berbagi informasi dan transfer data.
Salah satu cara untuk mengelola dan memantau komunikasi di antara layanan adalah menggunakan service mesh.
Apa Itu Service Mesh?
Service mesh adalah lapisan infrastruktur khusus yang ditambahkan ke arsitektur mikroservis. Peran utamanya adalah untuk memastikan komunikasi service-to-service yang cepat dan aman. Alat dengan latensi rendah ini mengelola dan memantau komunikasi dan berbagi data di antara layanan.
Ini terdiri dari control plane dari mana pengembang menerapkan aturan dan kebijakan tertentu ke lapisan jaringan. Control plane bekerja langsung dengan data plane, kumpulan sidecar proxy yang berjalan bersama layanan. Proxy ini bertanggung jawab atas semua komunikasi di antara layanan. Selain itu, mereka memantau dan menyediakan wawasan berharga tentang performa aplikasi secara keseluruhan dan membantu menemukan masalah potensial serta menghindari downtime.
Proxy menyediakan kemampuan berharga, termasuk:
- Penemuan layanan dinamis
- Load balancing
- Health checks
- Enkripsi
- Observability
- Circuit breakers
- Rollout bertahap dengan pembagian lalu lintas berdasarkan persentase
- Autentikasi
- Metrik kaya
- Otorisasi
Kejayaan Arsitektur Service Mesh
Untuk memahami sepenuhnya cara kerja service mesh, kita perlu melihat mengapa alat tersebut dikembangkan. Munculnya arsitektur service mesh muncul sebagai solusi untuk sejumlah masalah terkait mikroservis.
Banyak tim pengembang telah beralih dari mengembangkan aplikasi monolitik ke arsitektur mikroservis. Ini membagi aplikasi dari unit monolitik menjadi sistem layanan individual yang bekerja sama. Aplikasi terdiri dari beberapa layanan otonom dengan fungsionalitas individu masing-masing.
Kesulitan dalam mengembangkan aplikasi semacam itu adalah mengonfigurasi cara terbaik bagi layanan-layanan ini untuk berkomunikasi satu sama lain. Performa aplikasi tergantung pada layanan yang bekerja sama dan berbagi data untuk memberikan pengalaman pengguna terbaik. Misalnya, toko web dapat terdiri dari login service yang berkomunikasi dengan buy service yang membutuhkan informasi dari inventory database dan seterusnya.
Karena mikroservis berkomunikasi melalui API, menemukan solusi terbaik untuk memecahkan discovery dan routing sangat penting. Selain itu, pengembang perlu memastikan komunikasi dalam sistem aman. Sementara firewall melindungi aplikasi dari serangan luar, terdapat jaringan datar dan terbuka dalam arsitektur mikroservis.
Sebelum arsitektur service mesh, tugas ini ditangani oleh load balancer. Namun, ini bukan solusi yang praktis, terutama dalam skala besar, karena masalah deployment dan biaya. Service mesh dikembangkan sebagai solusi akhir untuk semua masalah yang disebutkan di atas. Ini menyajikan lapisan jaringan dengan registri terpusat (control plane) yang mengelola semua layanan dengan sidecar proxy-nya. Proxy ini jauh lebih mudah untuk dikonfigurasi dan diskalakan dibandingkan load balancer. Pengembang dapat menskala proxy naik dan turun sesuai kebutuhan dan mengubah aturan routing tanpa memodifikasi layanan.
Manfaat Service Mesh
Manfaat terbesar dari service mesh adalah:
- Keamanan yang ditingkatkan – Menerapkan service mesh ke dalam arsitektur mikroservis meningkatkan keamanan secara keseluruhan. Lapisan jaringan ini memperkenalkan otorisasi otomatis, autentikasi, enkripsi, dan penegakan kebijakan. Ia menggunakan mutual Transport Layer Security (mTLS) untuk memastikan semua komunikasi service-to-service aman. Layanan mengidentifikasi diri mereka dengan sertifikat TLS mereka untuk mendirikan koneksi. Setelah mereka memvalidasi identitas mereka, mereka mendirikan saluran terenkripsi untuk berbagi data.
- Kontrol lalu lintas dan visibilitas – Salah satu fungsi utama service mesh adalah menyediakan kontrol lalu lintas. Ini mengelola lalu lintas east-west, serta lalu lintas di antara layanan. Semua komunikasi dilakukan melalui sidecar proxy, yang dielola oleh control plane. Lalu lintas dirute secara transparan, memberikan pengembang visibilitas yang lebih baik atas semua pertukaran data. Dengan wawasan yang lebih jelas tentang performa aplikasi, lebih mudah untuk menemukan masalah potensial dalam sistem.
- Observability – Karena platform mengelola semua lalu lintas, ia mengumpulkan wawasan berharga tentang perilaku lalu lintas dan interaksi pengguna. Dengan sejumlah data yang besar, analis bisnis dapat merencanakan strategi untuk meningkatkan aplikasi.
- Pengembang fokus pada pengembangan aplikasi bukan jaringan – Sebaliknya tim pengembang menyiapkan dan mengelola seluruh lapisan jaringan, mereka dapat menerapkan service mesh ke dalam arsitektur. Meskipun platform memerlukan konfigurasi awal, ia mengotomatisasi tugas yang memakan waktu terkait manajemen jaringan. Ini memungkinkan pengembang untuk fokus pada mikroservis. Meninggalkan service mesh untuk mengelola interaksi service-to-service menghemat waktu dan uang sambil meningkatkan produktivitas.
- Resiliensi – Service mesh menyediakan fitur yang membantu menciptakan aplikasi mikroservis yang resilient. Salah satu fitur tersebut adalah pola circuit breaker yang membantu mendeteksi kegagalan dan lonjakan latensi. Selain itu, service mesh menggunakan load balancing untuk penemuan layanan dan routing lalu lintas di seluruh jaringan mikroservis. Fitur lain yang menambahkan ke resiliensinya mencakup retries, timeouts, dan deadlines.
- Siklus pengujian dan deployment yang lebih cepat – Menggunakan sidecar proxy untuk komunikasi pod-to-pod jauh lebih sederhana dan lebih cepat untuk ditetapkan. Sebaliknya mengkodekan fungsi redundan ke dalam setiap layanan, mereka menerapkan proxy dan menghubungkannya ke layanan. Ini mempercepat siklus pengembangan dan pengujian secara keseluruhan.
Daftar Service Mesh Open Source
Ada sejumlah service mesh open source yang tersedia. Istio, Linkerd, dan Consul adalah yang paling banyak digunakan.
Di bawah ini Anda akan menemukan lebih banyak detail tentang setiap platform.
Istio
Istio adalah infrastruktur open source yang dirancang oleh Google, IBM, dan Lyft. Ini adalah salah satu platform service mesh paling awal. Ia menggunakan Istiod, control plane yang terdiri dari beberapa komponen (Pilot, Citadel, dan Mixer) untuk mengoperasikan dan mengonfigurasi service mesh. Data plane terdiri dari proxy Envoy, yang dikembangkan dalam C++. Koneksi HTTP/TCP dikelola oleh Gateway, load balancer Istio. VirtualService dan DestinationRules mendefinisikan aturan dan kebijakan routing.
Linkerd
Linkerd adalah service mesh open source yang ringan, yang dikembangkan oleh proyek Cloud Native Computing Foundation (CNCF). Ini sederhana untuk diinstal di klaster Kubernetes di atas platform apa pun, tanpa konfigurasi tambahan. Tidak ada konfigurasi adalah menguntungkan saat bekerja dengan klaster yang lebih kecil. Namun, proyek skala besar memerlukan kemampuan konfigurasi untuk mengelola semua layanan dalam klaster dengan sukses.
Sidecar proxy-nya ditulis dalam Rust. Linkerd menggunakan Controller untuk control plane dan Web Deployment untuk dasbor. Selain itu, ia menggunakan Prometheus untuk menjelajahi dan menyimpan metrik serta Grafana untuk merender dan menampilkan dasbor.
Consul Connect
Consul pertama kali dirancang sebagai alat penemuan layanan dan kemudian berevolusi menjadi service mesh. Tidak seperti Linkerd, Consul Connect mencakup banyak konfigurasi, memberi Anda lebih banyak kontrol atas lingkungan jaringan. Akibatnya, lebih sulit untuk digunakan daripada Linkerd. Service mesh open source ini platform agnostic, berarti ia tidak memerlukan Kubernetes atau Nomad. Masih, Nomad mempersingkat proses manajemen komunikasi mikroservis melalui Consul.
Microsoft’s Open Service Mesh
Open Service Mesh (OSM) adalah CNCF Envoy project yang mengimplementasikan antarmuka service mesh untuk mengelola dan mengamankan aplikasi mikroservis yang dinamis. Ia menggunakan Envoy xDS sebagai sidecar container. Fitur utamanya mencakup traffic shifting, manajemen sertifikat, mengaktifkan mTLS, sidecar injection otomatis, dan kebijakan kontrol akses.
Kuma
Kuma adalah control plane open source untuk Kubernetes dan VM yang berjalan dalam service mesh. Ia memiliki L4+L7 policy architecture yang mengimplementasikan fitur seperti penemuan layanan, routing, keamanan zero-trust, dan observability. Platform ini sangat diskalakan dan mudah diatur.
OpenShift Service Mesh Red Hat
Red Hat mengembangkan OpenShift Service Mesh untuk mengelola aplikasi mikroservis. Ia menyediakan beberapa antarmuka untuk jaringan dan keamanan yang ditingkatkan dengan Security Context Constraint. Ia mengukur performa dengan Jager dan mengamati interaksi di antara layanan dengan Kiali. Selain itu, OpenShift mencakup Red Hat 3scale Istio Mixer Adapter untuk keamanan API yang lebih baik.
AWS App Mesh
Amazon mengembangkan App Mesh, perangkat lunak service mesh gratis yang mengelola semua layanan Anda dalam arsitektur mikroservis. Ia menyediakan ketersediaan tinggi dan visibilitas ujung ke ujung untuk aplikasi mikroservis Anda. AWS App Mesh terintegrasi dengan AWS Fargate, Amazon ECS, Amazon EC2, Amazon EKS, Kubernetes, dan AWS Outposts. Dengan alat pemantauannya, ia secara otomatis mengekspor data pemantauan.
Network Service Mesh
Network Service Mesh adalah proyek CNCF Sandbox open source. Ini adalah service mesh IP hibrid/multi-cloud yang menggunakan serangkaian API sederhana untuk memfasilitasi konektivitas. Ini mendirikan koneksi di antara layanan yang berjalan dalam kontainer dan dengan endpoint eksternal. Saat diimplementasikan, ia memerlukan perubahan minimal pada Kubernetes.
Kesimpulan
Service mesh menyederhanakan pengelolaan dan pemeliharaan aplikasi yang dikembangkan menggunakan arsitektur mikroservis. Ini meningkatkan keamanan secara keseluruhan dalam arsitektur mikroservis dan memastikan visibilitas dan observabilitas aliran lalu lintas. Secara keseluruhan, fitur service mesh meningkatkan performa dan mempercepat siklus pengembangan. Dengan berbagai macam solusi open source yang tersedia, temukan satu yang paling sesuai dengan kebutuhan aplikasi Anda.