Apa Itu Linkerd?
Linkerd adalah proxy jaringan open-source yang dipasang sebagai service mesh untuk Kubernetes. Awalnya dikembangkan oleh Buoyant, Linkerd menjadi salah satu produk pertama yang dikaitkan dengan istilah service mesh.
Dalam dunia IT, service mesh adalah lapisan infrastruktur khusus yang mengontrol komunikasi antar layanan dan memungkinkan berbagai bagian dalam suatu aplikasi saling berkomunikasi. Service mesh biasanya digunakan dalam aplikasi berbasis cloud, container, dan microservices.
Dalam aplikasi berbasis microservices, mengelola komunikasi antara ratusan layanan bisa menjadi tugas yang rumit. Linkerd berfungsi sebagai alat cloud orchestration untuk mengamankan komunikasi antar layanan dengan menyediakan fitur seperti load balancing, service discovery, integrasi proxy, routing adaptif, pemulihan kegagalan, circuit breaking, dan instrumentasi.
Bagaimana Cara Kerja Linkerd?
Linkerd beroperasi sebagai proxy mandiri. Ia tidak bergantung pada bahasa pemrograman atau pustaka tertentu, sehingga dapat digunakan dalam lingkungan container atau microservices.
Ada dua model deployment utama untuk Linkerd: per host dan sidecar. Pada deployment per host, sebuah instance Linkerd terpasang pada host fisik atau virtual dan mengarahkan seluruh lalu lintas dari setiap layanan aplikasi melalui instance tersebut. Sementara pada deployment sidecar, satu instance Linkerd diinstal untuk setiap instance layanan aplikasi, yang sangat berguna dalam containerized applications.
Linkerd dapat berkomunikasi dengan layanan aplikasi menggunakan tiga konfigurasi:
- Service-to-linker. Setiap instance layanan mengarahkan lalu lintas ke instance Linkerd terkait, yang kemudian menangani aturan lalu lintas lebih lanjut.
- Linker-to-service. Sidecar Linkerd menerima dan meneruskan lalu lintas ke instance layanan terkait, alih-alih layanan menerima lalu lintas langsung.
- Linker-to-linker. Kombinasi dari dua konfigurasi sebelumnya, di mana instance Linkerd menerima lalu lintas, meneruskannya ke layanan terkait, dan layanan tersebut mengembalikan lalu lintas melalui instance Linkerd.
Manfaat Linkerd
Linkerd dirancang untuk mengatasi tantangan dalam mengelola aplikasi dan sistem berskala besar.
Interaksi antar layanan adalah komponen penting dalam perilaku runtime aplikasi. Dengan menyediakan lapisan abstraksi untuk mengontrol komunikasi ini, Linkerd memberi pengembang visibilitas dan keandalan lebih tinggi dalam aplikasi mereka. Tanpa lapisan kontrol ini, sulit untuk menganalisis dan mengatasi masalah aplikasi.
Beberapa manfaat utama Linkerd meliputi:
- Menyederhanakan komunikasi antar layanan dalam lingkungan microservices dan container.
- Memudahkan dokumentasi bagaimana bagian aplikasi saling berinteraksi.
- Memberikan visibilitas dan kontrol lebih besar dengan memisahkan komunikasi dari kode utama aplikasi.
- Memungkinkan pengelola aplikasi menangani masalah komunikasi tanpa mengubah kode aplikasi.
- Menyediakan fitur service mesh umum, seperti load balancing berbasis latensi, service discovery, tracing, dan instrumentasi.
- Memungkinkan penyedia layanan memilih bahasa pemrograman yang paling sesuai untuk layanan mereka.
- Menjadikan kode aplikasi lebih efisien dan mudah untuk diskalakan.
Perbandingan Linkerd vs. Istio
Istio adalah service mesh open-source yang dikembangkan oleh Google, IBM, dan Lyft. Istio awalnya dibuat untuk Kubernetes, tetapi kini telah diperluas untuk mendukung berbagai platform.
Istio memiliki fitur seperti load balancing, manajemen identitas dan kunci, fault injection, deployment hybrid, autentikasi antar layanan, monitoring, dan logging. Selain itu, Istio menyediakan fitur otomatisasi sidecar injection, yang menambahkan proxy sidecar ke pod yang dibuat pengguna.
Baik Linkerd maupun Istio merupakan opsi yang bagus untuk service mesh. Istio memiliki lebih banyak fitur, yang bisa menjadi keuntungan dalam konfigurasi yang lebih kompleks. Namun, Istio juga memiliki kurva pembelajaran yang lebih curam dan kurang ramah pengguna. Misalnya, konfigurasi control plane Istio lebih rumit. Namun, menggunakan opsi dan pengaturan default Istio dapat membuat pengalaman pengguna lebih mudah.