(0275) 2974 127
Dalam perkembangan cloud computing dan arsitektur cloud-native, aplikasi semakin banyak dibangun menggunakan pendekatan microservices. Dengan pendekatan ini, aplikasi tidak lagi terdiri dari satu komponen besar, tetapi terbagi menjadi banyak service yang dapat dikembangkan, dijalankan, dan diskalakan secara lebih independen.
Pendekatan microservices memberikan banyak keuntungan, tetapi juga menghadirkan tantangan baru. Semakin banyak service yang digunakan, semakin kompleks komunikasi antarservice, pengaturan traffic, keamanan, monitoring, dan penanganan gangguan.
Salah satu teknologi yang dapat membantu mengatasi kompleksitas tersebut adalah Istio. Istio merupakan platform service mesh open source yang menyediakan berbagai kemampuan untuk menghubungkan, mengamankan, mengendalikan, dan mengamati komunikasi antarservice dalam aplikasi terdistribusi.
Istio banyak digunakan dalam lingkungan Kubernetes dan cloud-native, tetapi konsep dan komponennya juga dapat digunakan untuk workload yang berjalan pada virtual machine (VM). Lalu, apa itu Istio dalam cloud computing? Bagaimana cara kerjanya, apa saja fungsi dan komponennya, serta apa perbedaannya dengan Kubernetes dan API Gateway? Berikut pembahasannya.
Istio adalah platform service mesh open source yang digunakan untuk mengelola, mengamankan, dan memantau komunikasi antarservice dalam aplikasi terdistribusi. Teknologi ini banyak digunakan pada arsitektur microservices dan lingkungan cloud-native karena membantu mengatasi kompleksitas komunikasi ketika sebuah aplikasi memiliki banyak service.
Dalam arsitektur microservices, service seperti User, Product, Order, atau Payment perlu saling berkomunikasi melalui jaringan. Istio menyediakan lapisan infrastruktur yang membantu mengatur komunikasi tersebut tanpa mengharuskan developer memasukkan seluruh logika networking ke dalam kode aplikasi.
Istio dapat digunakan untuk mengatur traffic routing, load balancing, authentication, authorization, mTLS, retry, timeout, dan circuit breaking. Selain itu, telemetry yang dihasilkan dapat membantu tim memantau traffic, latency, dan error antarservice sehingga proses troubleshooting menjadi lebih mudah.
Dengan demikian, Istio membantu memisahkan kebutuhan komunikasi dan keamanan jaringan dari business logic aplikasi. Pendekatan ini membuat pengelolaan microservices menjadi lebih terstruktur, terutama ketika aplikasi sudah berjalan dalam skala yang besar dan kompleks.
Untuk memahami Istio, terlebih dahulu perlu memahami konsep service mesh. Service mesh merupakan lapisan infrastruktur yang digunakan untuk mengelola komunikasi antarservice dalam aplikasi terdistribusi. Dalam aplikasi microservices sederhana, komunikasi dapat digambarkan seperti berikut:
Service A
|
v
Service B
Ketika jumlah service bertambah, pola komunikasinya menjadi lebih kompleks:
Service A -----> Service B
| |
v v
Service C -----> Service D
|
v
Service E
Setiap komunikasi tersebut dapat membutuhkan:
Jika seluruh fungsi tersebut harus ditambahkan ke setiap aplikasi, kode dan proses pemeliharaan dapat menjadi semakin kompleks. Service mesh memindahkan sebagian tanggung jawab komunikasi tersebut ke lapisan infrastruktur. Istio merupakan salah satu implementasi service mesh yang dirancang untuk kebutuhan aplikasi terdistribusi dan cloud-native.
Pada aplikasi yang hanya memiliki sedikit service, komunikasi antarservice biasanya masih relatif mudah dikelola. Namun, ketika aplikasi berkembang menjadi puluhan atau bahkan ratusan service, berbagai permasalahan dapat muncul.
1. Kompleksitas Komunikasi
Semakin banyak service yang berkomunikasi, semakin sulit bagi tim untuk mengelola hubungan antarservice secara manual. Istio dapat membantu menerapkan aturan komunikasi secara lebih terstruktur.
2. Keamanan Antarservice
Komunikasi internal bukan berarti selalu aman. Service tetap perlu memiliki identitas dan mekanisme autentikasi yang sesuai. Istio menyediakan fitur keamanan seperti mTLS dan authorization policy yang dapat digunakan untuk mengontrol komunikasi antarworkload.
3. Kesulitan Monitoring
Dalam sistem microservices, satu request pengguna dapat melewati banyak service. Jika request mengalami latency tinggi, tim perlu mengetahui service mana yang menjadi sumber masalah. Istio menyediakan telemetry yang dapat membantu menganalisis traffic dan performa komunikasi antarservice.
4. Deployment yang Kompleks
Ketika versi baru aplikasi dirilis, organisasi mungkin tidak ingin langsung mengarahkan seluruh traffic ke versi tersebut. Istio dapat digunakan untuk membagi traffic secara bertahap, misalnya sebagian kecil traffic diarahkan ke versi baru sebelum deployment dilakukan secara penuh.
5. Gangguan pada Service
Ketika satu service mengalami masalah, dampaknya dapat menyebar ke service lain. Fitur seperti timeout, retry, dan circuit breaking dapat membantu mengelola pola komunikasi ketika terjadi gangguan.
Secara sederhana, Istio menempatkan kemampuan pengelolaan traffic dan komunikasi di antara workload aplikasi. Dalam pola komunikasi langsung:
Service A
|
v
Service B
Pada implementasi service mesh, traffic dapat melewati komponen data plane yang menjalankan fungsi jaringan:
Service A
|
v
Istio Data Plane
|
v
Service B
Cara implementasinya bergantung pada mode data plane yang digunakan. Istio saat ini mendukung dua pendekatan utama yaitu Sidecar mode dan Ambient mode. Keduanya memiliki tujuan yang sama, yaitu menyediakan kemampuan service mesh, tetapi memiliki arsitektur data plane yang berbeda. Berikut ini penjelasannya:
1. Sidecar Mode
Dalam sidecar mode, proxy dijalankan bersama workload aplikasi. Secara sederhana, sebuah Pod dapat memiliki:
+-------------------------+
| Pod |
| |
| +-------------------+ |
| | Application | |
| +-------------------+ |
| | |
| +-------------------+ |
| | Envoy Proxy | |
| +-------------------+ |
+-------------------------+
Istio menggunakan Envoy sebagai proxy data plane dalam model ini. Traffic aplikasi dapat melewati proxy tersebut sehingga Istio dapat menerapkan berbagai kebijakan seperti routing, security, telemetry, retry, dan timeout. Sidecar mode telah lama menjadi pendekatan utama dalam implementasi Istio dan masih didukung.
2. Ambient Mode
Istio juga menyediakan ambient mode, yaitu model data plane yang dirancang untuk mengurangi kebutuhan menjalankan sidecar proxy pada setiap Pod. Dalam ambient mode, Istio menggunakan komponen bernama ztunnel untuk menyediakan fungsi networking Layer 4 pada tingkat node. Untuk kebutuhan Layer 7, Istio dapat menggunakan waypoint proxy. Gambaran sederhananya:
+------------------------------+
| Kubernetes Node |
| |
| Workload A |
| Workload B |
| | |
| v |
| ztunnel |
| | |
| v |
| Waypoint Proxy (opsional) |
+------------------------------+
Pendekatan ini memungkinkan penerapan service mesh dilakukan secara lebih bertahap. Ambient mode sangat penting untuk dipahami ketika mempelajari Istio versi modern karena Istio saat ini tidak hanya menggunakan model sidecar.
Sidecar mode menempatkan proxy bersama workload.
Ambient mode menggunakan ztunnel sebagai proxy Layer 4 pada node dan waypoint proxy untuk kebutuhan Layer 7.
Keduanya tetap dapat menyediakan kemampuan seperti security, traffic management, dan observability, tetapi arsitektur dan cara pengelolaannya berbeda.
Arsitektur Istio secara umum terdiri dari dua bagian utama, yaitu control plane dan data plane. Keduanya memiliki fungsi berbeda, tetapi saling bekerja sama untuk mengelola komunikasi dan kebijakan dalam service mesh.
1. Control Plane
Control plane berfungsi mengatur konfigurasi dan kebijakan yang digunakan dalam service mesh. Komponen utamanya adalah istiod, yang menangani service discovery, distribusi konfigurasi, serta pengelolaan identitas dan sertifikat. Control plane memberikan informasi dan konfigurasi yang dibutuhkan komponen data plane untuk menjalankan kebijakan yang telah ditentukan.
2. Data Plane
Data plane bertugas menangani traffic aktual antarworkload. Pada sidecar mode, fungsi ini dijalankan melalui Envoy proxy yang berjalan bersama workload. Sementara pada ambient mode, ztunnel menangani komunikasi Layer 4 dan waypoint proxy dapat digunakan untuk kebutuhan Layer 7. Pemisahan ini membuat pengelolaan kebijakan dan pemrosesan traffic dapat dilakukan secara terstruktur.
Envoy merupakan proxy yang digunakan dalam data plane Istio, terutama pada sidecar mode, dan juga dapat digunakan sebagai bagian dari waypoint proxy pada ambient mode. Envoy menangani berbagai kebutuhan komunikasi seperti traffic routing, load balancing, TLS, retry, timeout, dan telemetry.
Meskipun memiliki peran penting, Istio tidak sama dengan Envoy. Istio merupakan platform service mesh yang mencakup control plane dan berbagai komponen data plane, sedangkan Envoy merupakan salah satu teknologi proxy yang digunakan untuk menangani komunikasi dalam arsitektur tersebut.
Istio memiliki sejumlah fungsi yang dapat membantu pengelolaan aplikasi cloud-native.
1. Traffic Management
Istio dapat digunakan untuk mengatur bagaimana traffic diarahkan dari satu service ke service lainnya. Misalnya, terdapat dua versi aplikasi:
Payment Service v1
Payment Service v2
Traffic dapat dibagi:
90% → v1
10% → v2
Jika versi baru berjalan dengan baik, distribusinya dapat ditingkatkan secara bertahap.
2. Load Balancing
Istio dapat membantu mendistribusikan traffic ke instance service berdasarkan kebijakan yang diterapkan. Hal ini bermanfaat ketika satu service memiliki beberapa instance yang berjalan secara bersamaan.
3. Traffic Splitting
Traffic splitting memungkinkan organisasi membagi request berdasarkan aturan tertentu. Fitur ini dapat digunakan untuk:
4. Retry
Istio dapat mengatur retry terhadap request tertentu yang gagal. Namun, retry harus digunakan secara hati-hati karena retry yang terlalu agresif dapat meningkatkan beban sistem dan memperburuk kondisi ketika service sedang mengalami gangguan.
5. Timeout
Timeout digunakan untuk menentukan batas waktu sebuah request menunggu respons. Hal ini dapat membantu mencegah request menunggu tanpa batas ketika service tujuan mengalami masalah.
6. Circuit Breaking
Circuit breaking membantu membatasi dampak kegagalan service. Jika sebuah service mengalami kegagalan berulang, kebijakan circuit breaking dapat digunakan untuk mencegah traffic berlebihan terus dikirimkan ke service tersebut.
7. Fault Injection
Istio dapat digunakan untuk melakukan fault injection sebagai bagian dari pengujian ketahanan aplikasi. Tim dapat mensimulasikan kondisi seperti delay atau error tertentu untuk mengetahui bagaimana sistem merespons gangguan.
Keamanan merupakan salah satu fungsi penting service mesh. Dalam arsitektur microservices, komunikasi antarservice dapat membawa data dan menjalankan operasi penting. Oleh karena itu, komunikasi internal tetap membutuhkan kontrol keamanan. Istio menyediakan beberapa kemampuan yang dapat digunakan untuk meningkatkan keamanan service-to-service.
1. Mutual TLS atau mTLS
Mutual TLS (mTLS) memungkinkan kedua sisi komunikasi melakukan autentikasi menggunakan sertifikat. Dalam konteks service mesh, mTLS dapat digunakan untuk membantu memastikan bahwa komunikasi terjadi antara workload yang memiliki identitas yang valid sekaligus melindungi traffic selama transmisi.
2. Service Identity
Istio menggunakan identitas workload untuk membantu menerapkan kebijakan keamanan. Dengan pendekatan identity-based security, aturan akses dapat didasarkan pada identitas service, bukan hanya alamat IP.
3. Authorization Policy
Authorization policy dapat digunakan untuk menentukan workload mana yang diperbolehkan mengakses workload lainnya. Misalnya, hanya Order Service yang diperbolehkan melakukan request tertentu ke Payment Service. Pendekatan ini dapat membantu menerapkan prinsip least privilege.
Aplikasi microservices membutuhkan observability karena satu request dapat melewati banyak komponen. Istio menyediakan telemetry yang dapat membantu tim memahami kondisi komunikasi antarservice.
Metrics
Metrics dapat memberikan informasi seperti:
Data tersebut dapat digunakan untuk memantau performa dan kesehatan service.
Logs
Log membantu mencatat kejadian yang terjadi pada sistem dan dapat digunakan sebagai salah satu sumber informasi ketika melakukan troubleshooting.
Distributed Tracing
Distributed tracing memungkinkan tim mengikuti perjalanan sebuah request melalui beberapa service.
Contohnya:
Client
↓
Frontend
↓
API Service
↓
Order Service
↓
Payment Service
Jika request membutuhkan waktu terlalu lama, tracing dapat membantu mengidentifikasi service yang berkontribusi terhadap latency.
Istio juga menyediakan kemampuan untuk mengelola traffic yang masuk dan keluar dari service mesh.
Ingress Gateway
Ingress gateway menangani traffic dari luar menuju workload yang berada di dalam lingkungan aplikasi.
Contohnya:
Internet
|
v
Ingress Gateway
|
v
Service Mesh
|
+---- Service A
+---- Service B
+---- Service C
Pendekatan ini memungkinkan traffic eksternal dikontrol sebelum diteruskan ke service internal.
Egress Gateway
Egress gateway digunakan untuk mengontrol traffic yang keluar dari service mesh menuju sistem eksternal. Contohnya adalah ketika aplikasi internal harus berkomunikasi dengan:
Pengelolaan egress dapat memberikan visibilitas dan kontrol tambahan terhadap koneksi keluar.
Selain konfigurasi Istio, ekosistem Istio juga mendukung Kubernetes Gateway API. Gateway API merupakan kumpulan resource Kubernetes yang dirancang untuk menyediakan model konfigurasi traffic yang lebih terstruktur dan ekspresif.
Dukungan terhadap Gateway API penting karena memungkinkan pengelolaan traffic menggunakan API yang dirancang sebagai standar Kubernetes untuk berbagai kebutuhan networking. Dalam implementasi modern, pengguna Istio dapat mempertimbangkan Gateway API sesuai kebutuhan arsitektur dan pola deployment yang digunakan.
Istio dan Kubernetes memiliki fungsi yang berbeda tetapi dapat digunakan secara bersamaan.
Kubernetes berfokus pada orkestrasi workload berbasis container, termasuk deployment, scheduling, scaling, dan service discovery.
Istio menambahkan lapisan kemampuan untuk mengelola komunikasi, keamanan, traffic, dan observability antarservice.
Secara sederhana:
Kubernetes
|
+-- Mengelola workload
+-- Menjalankan container
+-- Scheduling
+-- Scaling
|
v
Istio
|
+-- Mengelola komunikasi
+-- Traffic management
+-- Security
+-- Observability
Karena itu, Istio bukan pengganti Kubernetes. Istio justru sering digunakan sebagai lapisan tambahan di atas lingkungan Kubernetes. Istio juga dapat mendukung workload berbasis virtual machine, sehingga penggunaannya tidak terbatas pada container atau Kubernetes saja.
Istio dan API Gateway memiliki beberapa fungsi yang dapat terlihat mirip, tetapi fokus penggunaannya berbeda. API Gateway umumnya digunakan sebagai titik masuk bagi traffic dari client menuju backend. Contohnya:
Client
|
v
API Gateway
|
+---- User Service
+---- Product Service
+---- Order Service
Sementara itu, service mesh berfokus pada komunikasi antarservice.
Service A
|
v
Service Mesh
|
v
Service B
Namun, keduanya tidak harus dipilih salah satu. API Gateway dan Istio dapat digunakan secara bersamaan apabila arsitektur aplikasi membutuhkannya. Istio sendiri juga menyediakan mekanisme gateway untuk mengelola traffic ingress dan egress.
Penerapan Istio dapat memberikan sejumlah manfaat, terutama pada aplikasi yang memiliki banyak microservices.
Meskipun menawarkan banyak fitur, Istio bukan solusi yang selalu diperlukan untuk semua aplikasi.
Istio lebih relevan untuk aplikasi yang memiliki kebutuhan seperti:
Sebaliknya, aplikasi sederhana dengan jumlah service yang sedikit mungkin belum membutuhkan service mesh. Jika kompleksitas aplikasi belum tinggi, menambahkan Istio justru dapat meningkatkan beban operasional tanpa memberikan manfaat yang sepadan.
Bayangkan sebuah platform e-commerce memiliki beberapa microservices:
Internet
|
v
Ingress Gateway
|
v
API Service
|
+------------+------------+
| | |
v v v
Product Order Payment
Service Service Service
| | |
+------------+------------+
|
Database
Istio dapat digunakan untuk mengatur komunikasi antarservice tersebut.
Misalnya, perusahaan sedang mengembangkan Payment Service versi baru.
Daripada langsung mengalihkan seluruh traffic ke versi baru, perusahaan dapat menggunakan traffic splitting:
Payment Service v1 → 90%
Payment Service v2 → 10%
Jika versi baru berjalan dengan stabil, traffic dapat ditingkatkan secara bertahap.
Pada saat yang sama, Istio dapat digunakan untuk:
Dengan pendekatan tersebut, deployment dapat dilakukan secara lebih terkontrol.
Istio dapat menjadi salah satu komponen dalam ekosistem cloud-native yang lebih besar. Contohnya:
Cloud Infrastructure
|
Kubernetes
|
Istio
|
Microservices
|
+-------+-------+
| |
Monitoring Tracing
Dalam implementasi nyata, ekosistem tersebut dapat melibatkan berbagai komponen lain seperti container runtime, CI/CD, monitoring, logging, distributed tracing, database, dan layanan cloud. Istio tidak menggantikan komponen-komponen tersebut. Fokus utamanya adalah menyediakan lapisan pengelolaan komunikasi dan kebijakan service mesh.
Konsep Zero Trust berangkat dari prinsip bahwa komunikasi tidak seharusnya otomatis dipercaya hanya karena berasal dari jaringan internal. Dalam aplikasi microservices, pendekatan tersebut dapat diterapkan dengan memastikan setiap workload memiliki identitas dan akses yang sesuai. Istio dapat membantu mendukung pendekatan tersebut melalui:
Dengan demikian, komunikasi antarservice dapat dikontrol berdasarkan identitas dan kebijakan yang telah ditentukan. Namun, Istio bukanlah keseluruhan implementasi Zero Trust. Zero Trust merupakan pendekatan keamanan yang lebih luas dan biasanya membutuhkan berbagai kontrol tambahan di luar service mesh.
Sebelum mengadopsi Istio, organisasi sebaiknya mengevaluasi kebutuhan teknis dan operasional. Beberapa hal yang perlu diperhatikan antara lain:
Istio adalah platform service mesh open source yang membantu mengelola, mengamankan, dan mengamati komunikasi antarservice dalam aplikasi terdistribusi. Dalam lingkungan cloud computing dan cloud-native, teknologi ini dapat membantu mengatasi kompleksitas komunikasi ketika aplikasi berkembang menjadi banyak microservices.
Istio menyediakan berbagai kemampuan, seperti traffic management, load balancing, traffic splitting, retry, timeout, circuit breaking, mTLS, authorization policy, dan observability. Istio dapat digunakan bersama Kubernetes untuk memberikan kontrol lebih baik terhadap komunikasi dan keamanan antarworkload. Selain itu, Istio mendukung sidecar mode dan ambient mode dengan arsitektur data plane yang berbeda sesuai kebutuhan.
Meskipun menawarkan banyak manfaat, penggunaan Istio juga menambah kompleksitas dan kebutuhan resource. Karena itu, penerapannya perlu disesuaikan dengan skala aplikasi, kebutuhan keamanan, observability, serta kemampuan tim dalam mengelola infrastruktur.
Bagi Anda yang ingin mempelajari lebih banyak tentang cloud computing, hosting, server, jaringan, dan teknologi website, berbagai panduan dan informasi terkait dapat ditemukan di Blog Hosteko. Sementara itu, untuk kebutuhan menjalankan website dan aplikasi secara online, Hosteko Hosting Indonesia menyediakan layanan domain dan hosting yang dapat menjadi salah satu pilihan untuk mendukung kebutuhan infrastruktur website dan bisnis digital Anda.
Ketika menghubungkan laptop atau smartphone ke jaringan WiFi, biasanya kita akan melihat daftar nama jaringan…
Setelah memahami pengertian dan fungsi SSID, langkah berikutnya adalah mengetahui cara melihat serta mengatur SSID…
Apa Itu Event-Driven Architecture? Pengertian, Cara Kerja, Komponen, Manfaat, dan Contohnya Perkembangan aplikasi digital membuat…
Cara Membuat Sitemap XML untuk Website agar Mudah Diindeks Google Sitemap XML merupakan salah satu…
Setelah memahami pengertian, perbedaan, serta kelebihan dan kekurangan masing-masing strategi pemasaran, pertanyaan yang sering muncul…
Setelah memahami pengertian churn rate pada bagian sebelumnya, langkah berikutnya adalah mengetahui bagaimana cara mengukurnya.…