Service Mesh: Pengertian, Cara Kerja, Arsitektur, Komponen, Manfaat, Kelebihan, Kekurangan, dan Implementasinya | Dewa234
Service Mesh: Pengertian, Cara Kerja, Arsitektur, Komponen, Manfaat, Kelebihan, Kekurangan, dan Implementasinya
Seiring berkembangnya aplikasi modern, arsitektur microservices semakin banyak digunakan untuk membangun sistem yang skalabel dan fleksibel. Dalam arsitektur ini, sebuah aplikasi Dewa234 tidak lagi berjalan sebagai satu kesatuan besar, melainkan terdiri dari banyak service yang saling berkomunikasi melalui jaringan.
Pendekatan tersebut memberikan banyak keuntungan, tetapi juga menghadirkan tantangan baru. Pengembang dan administrator harus menangani service discovery, traffic routing, load balancing, keamanan komunikasi, observability, retry, timeout, serta berbagai kebutuhan komunikasi antar-service.
Jika seluruh fungsi tersebut harus dibuat secara manual di dalam setiap aplikasi, kompleksitas kode akan semakin tinggi. Di sinilah Service Mesh menjadi penting.
Service Mesh merupakan lapisan infrastruktur yang dirancang untuk mengelola komunikasi antar-service secara terpusat tanpa mengharuskan pengembang menambahkan seluruh fungsi networking, security, dan observability ke dalam kode aplikasi.
Dalam ekosistem cloud-native, Service Mesh dapat digunakan bersama Kubernetes untuk meningkatkan keamanan, pengelolaan traffic, reliability, dan observability aplikasi microservices.
Apa Itu Service Mesh?
Service Mesh adalah lapisan infrastruktur yang digunakan untuk mengatur, mengamankan, dan mengamati komunikasi antar-service dalam aplikasi terdistribusi atau microservices.
Service Mesh memindahkan sebagian fungsi komunikasi service-to-service dari kode aplikasi ke lapisan infrastruktur khusus. Dengan pendekatan tersebut, aplikasi dapat berfokus pada business logic, sementara Service Mesh menangani kebutuhan komunikasi jaringan.
Fungsi Service Mesh dapat mencakup:
- Traffic management.
- Service discovery.
- Load balancing.
- Security komunikasi antar-service.
- Mutual TLS atau mTLS.
- Access control.
- Metrics.
- Distributed tracing.
- Access logging.
- Retry dan timeout.
- Traffic shifting.
- Resilience dan fault handling.
Istio mendefinisikan service mesh sebagai lapisan infrastruktur yang memberikan kemampuan seperti zero-trust security, observability, dan advanced traffic management pada aplikasi. :contentReference[oaicite:1]{index=1}
Mengapa Service Mesh Dibutuhkan?
Pada aplikasi sederhana dengan sedikit service, komunikasi antar-service mungkin masih dapat dikelola langsung oleh aplikasi. Namun, ketika jumlah service meningkat menjadi puluhan atau ratusan, pengelolaan komunikasi menjadi jauh lebih kompleks.
Tanpa Service Mesh, developer mungkin harus memasukkan fungsi berikut ke banyak aplikasi:
Service A │ ├── Retry ├── Timeout ├── TLS ├── Authentication ├── Logging ├── Metrics └── Routing Service B │ ├── Retry ├── Timeout ├── TLS ├── Authentication ├── Logging ├── Metrics └── Routing
Jika fungsi tersebut diimplementasikan berulang kali pada setiap service, kode aplikasi menjadi lebih kompleks.
Service Mesh mencoba memindahkan fungsi tersebut ke infrastructure layer sehingga pola komunikasi dapat dikelola secara lebih konsisten.
Service Mesh dan Microservices
Service Mesh sangat erat hubungannya dengan microservices karena microservices menghasilkan banyak komunikasi antar-service.
Contohnya sebuah aplikasi e-commerce dapat terdiri dari:
- User Service.
- Product Service.
- Cart Service.
- Order Service.
- Payment Service.
- Inventory Service.
- Notification Service.
Ketika pengguna melakukan checkout, beberapa service dapat saling berkomunikasi.
User │ ▼ API Gateway │ ▼ Order Service │ ├────► Product Service │ ├────► Inventory Service │ ├────► Payment Service │ └────► Notification Service
Service Mesh dapat berada pada lapisan komunikasi yang menghubungkan service-service tersebut.
Bagaimana Cara Kerja Service Mesh?
Secara umum, Service Mesh menggunakan proxy untuk menangani traffic komunikasi antar-service.
Pada Istio sidecar mode, proxy Envoy dapat ditempatkan bersama workload. Proxy tersebut menjadi perantara traffic masuk dan keluar dari service.
Control plane kemudian menyediakan konfigurasi yang digunakan oleh proxy untuk mengatur traffic dan kebijakan komunikasi. Istio menjelaskan bahwa data plane terdiri dari proxy yang menangani komunikasi antar-service, sedangkan control plane mengelola dan mengonfigurasi proxy tersebut. :contentReference[oaicite:2]{index=2}
Ilustrasi Cara Kerja Service Mesh
Service Mesh
│
┌────────────┴────────────┐
▼ ▼
+---------------+ +---------------+
| Service A | | Service B |
|---------------| |---------------|
| Application | | Application |
| Envoy Proxy |◄───────►| Envoy Proxy |
+---------------+ +---------------+
│ │
└──────────┬──────────────┘
▼
Service Network
Ketika Service A memanggil Service B, traffic dapat melewati proxy. Proxy dapat menerapkan routing, security policy, telemetry, retry, timeout, dan berbagai mekanisme lainnya sesuai konfigurasi.
Arsitektur Service Mesh
Arsitektur Service Mesh secara umum terdiri dari dua bagian utama, yaitu Control Plane dan Data Plane.
+--------------------------------------------------+
| CONTROL PLANE |
| |
| Configuration |
| Service Discovery |
| Policy |
| Certificate Management |
+--------------------------------------------------+
│
│ Configuration
▼
+--------------------------------------------------+
| DATA PLANE |
| |
| +-------------+ +-------------+ |
| | Service A | | Service B | |
| | Envoy |◄─────►| Envoy | |
| +-------------+ +-------------+ |
| |
| Service-to-Service Traffic |
+--------------------------------------------------+
Dalam arsitektur Istio, Envoy merupakan komponen data plane yang menangani traffic, sedangkan Istiod menyediakan fungsi control plane seperti service discovery, konfigurasi, dan certificate management. :contentReference[oaicite:3]{index=3}
Apa Itu Data Plane?
Data Plane adalah bagian Service Mesh yang menangani traffic komunikasi aktual antar-service.
Pada Istio sidecar mode, data plane terdiri dari proxy Envoy yang ditempatkan sebagai sidecar pada workload.
Data plane bertanggung jawab terhadap:
- Menerima traffic.
- Mengirim traffic.
- Routing request.
- Load balancing.
- Enkripsi komunikasi.
- Authentication.
- Authorization.
- Metrics.
- Tracing.
- Access logging.
Apa Itu Control Plane?
Control Plane merupakan bagian yang mengelola konfigurasi dan kebijakan yang digunakan oleh data plane.
Control plane tidak menjadi jalur utama traffic aplikasi. Sebaliknya, control plane menyediakan informasi dan konfigurasi yang dibutuhkan proxy data plane.
Pada Istio, komponen utama control plane adalah Istiod.
Istiod menyediakan service discovery, configuration management, serta certificate management dan menerjemahkan aturan tingkat tinggi menjadi konfigurasi yang dapat dipahami oleh Envoy. :contentReference[oaicite:4]{index=4}
Perbedaan Control Plane dan Data Plane
| Aspek | Control Plane | Data Plane |
|---|---|---|
| Fungsi | Mengelola konfigurasi dan policy. | Menangani traffic aplikasi. |
| Contoh Istio | Istiod. | Envoy Proxy. |
| Traffic aplikasi | Tidak menangani request aplikasi secara langsung. | Menangani traffic service-to-service. |
| Konfigurasi | Menyediakan konfigurasi. | Menerapkan konfigurasi. |
Komponen Utama Service Mesh
| Komponen | Fungsi |
|---|---|
| Control Plane | Mengelola konfigurasi dan policy Service Mesh. |
| Data Plane | Menangani komunikasi aktual antar-service. |
| Proxy | Menjadi perantara traffic service. |
| Service Discovery | Membantu menemukan endpoint service. |
| Traffic Management | Mengatur bagaimana request diarahkan. |
| Security | Mengamankan komunikasi dan mengatur akses. |
| Telemetry | Menghasilkan metrics, logs, dan traces. |
| Policy | Mengatur aturan komunikasi antar-workload. |
| Certificate Management | Mendukung identitas dan sertifikat workload. |
Service Mesh Proxy
Proxy merupakan komponen penting dalam Service Mesh karena proxy dapat menangani komunikasi tanpa mengharuskan seluruh fungsi networking dibuat ulang dalam aplikasi.
Pada Istio, proxy yang digunakan adalah Envoy. Envoy menangani inbound dan outbound traffic pada data plane serta menyediakan kemampuan seperti service discovery, load balancing, TLS, circuit breaking, health checks, traffic splitting, fault injection, dan metrics. :contentReference[oaicite:5]{index=5}
Service Mesh dan Envoy
Application
│
▼
+----------------+
| Envoy Proxy |
+----------------+
│
▼
Service Network
│
▼
+----------------+
| Envoy Proxy |
+----------------+
│
▼
Application
Dengan pola tersebut, Envoy dapat menjadi perantara komunikasi antar-service.
Service Mesh dan Istio
Istio merupakan salah satu implementasi Service Mesh yang banyak digunakan pada ekosistem cloud-native.
Istio menyediakan beberapa kemampuan utama:
- Traffic Management.
- Security.
- Observability.
- Service Discovery.
- Load Balancing.
- mTLS.
- Authorization.
- Distributed Tracing.
- Fault Injection.
- Traffic Shifting.
Istio dirancang agar kemampuan tersebut dapat diberikan pada aplikasi tanpa mengharuskan developer mengubah kode aplikasi untuk setiap fitur jaringan. :contentReference[oaicite:6]{index=6}
Service Mesh dan Kubernetes
Kubernetes menyediakan platform untuk menjalankan container dan mengelola workload. Service Mesh menambahkan lapisan khusus untuk mengatur komunikasi antar-workload.
+--------------------------------------+ | Kubernetes | | | | +------------+ +------------+ | | | Service A | | Service B | | | | Pod | | Pod | | | +------------+ +------------+ | | │ │ | | ▼ ▼ | | +----------+ +----------+ | | | Proxy |◄─────►| Proxy | | | +----------+ +----------+ | | | | Service Mesh Layer | +--------------------------------------+
Kubernetes dan Service Mesh memiliki peran yang berbeda. Kubernetes berfokus pada orchestration workload, sedangkan Service Mesh berfokus pada komunikasi dan kebijakan service-to-service.
Service Mesh dan Service Discovery
Dalam microservices, service perlu mengetahui lokasi service lain sebelum melakukan komunikasi.
Service Mesh dapat memanfaatkan informasi service discovery dari platform seperti Kubernetes dan menyebarkannya ke proxy data plane.
Istiod, misalnya, mengabstraksikan mekanisme service discovery dari platform seperti Kubernetes atau VM dan menerjemahkan informasi tersebut ke konfigurasi yang dapat digunakan oleh Envoy. :contentReference[oaicite:7]{index=7}
Service Mesh untuk Traffic Management
Salah satu fungsi utama Service Mesh adalah mengontrol traffic.
Administrator dapat membuat aturan untuk:
- Routing request.
- Load balancing.
- Retry.
- Timeout.
- Traffic shifting.
- Canary deployment.
- A/B testing.
- Fault injection.
- Failover.
Istio menyediakan kemampuan routing dan traffic control yang dapat digunakan untuk canary deployment, A/B testing, load balancing, serta staged rollout dengan traffic split. :contentReference[oaicite:8]{index=8}
Service Mesh untuk Canary Deployment
Canary deployment memungkinkan versi aplikasi baru menerima sebagian traffic sebelum digunakan secara penuh.
100% Traffic
│
▼
Service Mesh
/ \
/ \
▼ ▼
Version 1 Version 2
90% 10%
Jika versi baru berjalan dengan baik, traffic dapat dinaikkan secara bertahap.
Tahap 1
Version 1 = 90%
Version 2 = 10%
↓
Tahap 2
Version 1 = 70%
Version 2 = 30%
↓
Tahap 3
Version 1 = 30%
Version 2 = 70%
↓
Tahap 4
Version 1 = 0%
Version 2 = 100%
Service Mesh untuk Security
Service Mesh dapat menjadi lapisan keamanan untuk komunikasi antar-service.
Kemampuan security dapat mencakup:
- Workload identity.
- Mutual TLS.
- Authentication.
- Authorization.
- Policy enforcement.
- Certificate management.
- Encrypted service-to-service communication.
Istio menggunakan identity dan policy untuk membantu mengamankan komunikasi antar-service. Istiod juga dapat bertindak sebagai Certificate Authority untuk menyediakan sertifikat yang digunakan pada komunikasi mTLS data plane. :contentReference[oaicite:9]{index=9}
Service Mesh dan Zero Trust
Konsep Zero Trust mengasumsikan bahwa komunikasi tidak otomatis dipercaya hanya karena berasal dari jaringan internal.
Service Mesh dapat membantu menerapkan prinsip tersebut dengan identitas workload, mTLS, authentication, dan authorization policy.
Service A │ │ Identity │ mTLS │ Authorization ▼ Service B
Dengan pendekatan tersebut, komunikasi antar-service dapat dikontrol berdasarkan identitas dan policy, bukan hanya alamat IP.
Service Mesh untuk Observability
Service Mesh juga menyediakan visibility terhadap komunikasi antar-service.
Istio dapat menghasilkan tiga kategori telemetry utama:
- Metrics.
- Distributed Traces.
- Access Logs.
Metrics membantu memahami kondisi sistem secara agregat, distributed tracing menunjukkan call flow dan dependency, sedangkan access logs memberikan detail request. :contentReference[oaicite:10]{index=10}
Service Mesh dan Distributed Tracing
Pada artikel sebelumnya, kita telah membahas Distributed Tracing. Teknologi tersebut sangat berkaitan dengan Service Mesh karena proxy dapat membantu menghasilkan telemetry dari komunikasi service.
Service A │ ▼ Envoy │ │ Trace ▼ Envoy │ ▼ Service B │ ▼ Tracing Backend
Dengan demikian, distributed tracing dapat menjadi salah satu kemampuan observability yang disediakan oleh Service Mesh.
Service Mesh dan Telemetry
Telemetry merupakan bagian penting dari Service Mesh. Administrator dapat menggunakannya untuk memahami bagaimana service berkomunikasi dan bagaimana performa sistem.
Service Mesh
│
├── Metrics
│
├── Logs
│
└── Tracing
│
▼
Observability
Hal ini menghubungkan artikel Service Mesh dengan pembahasan sebelumnya mengenai Telemetry Istio dan Distributed Tracing.
Service Mesh dan Resilience
Aplikasi microservices dapat mengalami berbagai kegagalan, seperti service timeout, network error, dependency lambat, atau service tidak tersedia.
Service Mesh dapat menyediakan fitur untuk meningkatkan resilience, seperti:
- Timeout.
- Retry.
- Circuit breaking.
- Failover.
- Load balancing.
- Health checking.
- Fault injection untuk pengujian.
Kemampuan tersebut membantu administrator mengontrol bagaimana sistem bereaksi ketika terjadi kegagalan pada service atau dependency.
Service Mesh dan Retry
Retry memungkinkan request dicoba kembali ketika terjadi kegagalan tertentu.
Client │ ▼ Service A │ ▼ Service B │ X Error │ ▼ Retry │ ▼ Service B │ ▼ Success
Retry harus dikonfigurasi dengan hati-hati karena retry yang berlebihan dapat meningkatkan beban service.
Service Mesh dan Timeout
Timeout menentukan batas waktu tunggu sebuah request.
Service A │ ▼ Service B │ │ Waiting... │ X Timeout
Timeout membantu mencegah request menunggu dependency tanpa batas waktu.
Service Mesh dan Circuit Breaker
Circuit breaker digunakan untuk mencegah request terus-menerus dikirim ke service yang sedang mengalami masalah.
Service A
│
▼
Service B
│
X Failure
│
▼
Circuit Breaker
│
X Stop Request
Pendekatan ini dapat membantu membatasi dampak kegagalan dependency terhadap service lainnya.
Service Mesh dan Load Balancing
Service Mesh dapat mengatur distribusi request ke beberapa instance service.
Service Mesh
│
┌───────────┼───────────┐
▼ ▼ ▼
Pod A Pod B Pod C
33% 33% 34%
Load balancing membantu membagi traffic sehingga request tidak hanya terpusat pada satu instance.
Service Mesh dan Multi-Cluster
Service Mesh dapat digunakan pada arsitektur yang terdiri dari beberapa cluster.
+-------------------+ +-------------------+
| Cluster A | | Cluster B |
| | | |
| Service A |◄─────►| Service B |
| Envoy | | Envoy |
+-------------------+ +-------------------+
\ /
\ /
+-----------------+
| Service Mesh |
+-----------------+
Istio mendukung deployment yang melibatkan single cluster maupun multiple cluster. Multi-cluster dapat digunakan untuk kebutuhan fault isolation, failover, location-aware routing, dan availability yang lebih tinggi, meskipun kompleksitas operasional juga meningkat. :contentReference[oaicite:11]{index=11}
Service Mesh dan Multi-Cloud
Service Mesh juga dapat menjadi bagian dari arsitektur yang menjalankan workload pada beberapa lingkungan.
Contohnya:
- Kubernetes Cloud A.
- Kubernetes Cloud B.
- On-Premises Kubernetes.
- Virtual Machine.
Istio dapat menghubungkan workload pada Kubernetes maupun virtual machine ke dalam mesh sesuai model deployment yang digunakan. :contentReference[oaicite:12]{index=12}
Service Mesh Sidecar Mode
Pada model sidecar, proxy ditempatkan bersama workload aplikasi.
+--------------------------------+ | Pod | | | | +------------+ +-------------+ | | | Application| | Envoy Proxy | | | +------------+ +-------------+ | | | +--------------------------------+
Model ini merupakan pola yang lama dan sangat dikenal dalam implementasi Istio. Envoy menjadi proxy yang menangani traffic aplikasi.
Service Mesh Ambient Mode
Istio saat ini juga mendukung ambient mode, yaitu model data plane yang tidak mengharuskan setiap Pod menjalankan sidecar proxy.
Ambient mode menggunakan proxy Layer 4 per node yang disebut ztunnel dan dapat menggunakan waypoint proxy untuk kebutuhan Layer 7.
Istio Ambient
│
+-------+-------+
│ │
▼ ▼
ztunnel ztunnel
Node A Node B
│ │
└───────┬───────┘
│
▼
Waypoint Proxy
│
▼
L7 Processing
Dalam ambient mode, ztunnel menangani secure overlay pada Layer 4, sedangkan waypoint proxy berbasis Envoy dapat digunakan untuk fitur Layer 7 seperti advanced traffic management dan L7 policy. :contentReference[oaicite:13]{index=13}
Perbedaan Sidecar dan Ambient Mode
| Aspek | Sidecar | Ambient |
|---|---|---|
| Proxy | Envoy pada setiap workload/pod. | Proxy L4 per node dan waypoint untuk kebutuhan L7. |
| Model | Sidecar-based. | Sidecar-less data plane. |
| Resource | Proxy dialokasikan bersama workload. | Proxy tidak harus ditempatkan pada setiap Pod. |
| L7 | Ditangani melalui Envoy sidecar. | Dapat menggunakan waypoint proxy. |
| Adopsi | Model Istio yang sudah lama digunakan. | Model ambient modern. |
Istio memungkinkan namespace atau workload tertentu menggunakan mode data plane yang sesuai kebutuhan. :contentReference[oaicite:14]{index=14}
Service Mesh dan Gateway
Service Mesh tidak hanya mengatur komunikasi internal. Gateway dapat digunakan untuk menghubungkan traffic dari luar mesh maupun traffic menuju lingkungan eksternal.
Internet │ ▼ Ingress Gateway │ ▼ Service Mesh │ ├── Service A ├── Service B └── Service C │ ▼ Egress Gateway │ ▼ External Service
Konsep ini menghubungkan Service Mesh dengan pembahasan sebelumnya mengenai Ingress Gateway dan Egress Gateway.
Service Mesh dan API Gateway
API Gateway dan Service Mesh memiliki fungsi yang berbeda meskipun keduanya sama-sama berhubungan dengan traffic.
| Aspek | API Gateway | Service Mesh |
|---|---|---|
| Fokus | Traffic API dari client ke backend. | Komunikasi antar-service. |
| Posisi | Umumnya berada pada edge. | Berada pada komunikasi service. |
| Contoh fungsi | Authentication, routing, rate limiting. | mTLS, routing, telemetry, retries. |
| Traffic | North-South. | East-West. |
North-South Traffic dan East-West Traffic
Internet
│
│
North-South Traffic
│
▼
Ingress Gateway
│
▼
+-------------+
| Service Mesh|
+-------------+
│ │
│ │
East-West │ │ East-West
▼ ▼
Service A Service B
│ │
└────┬────┘
▼
Service C
North-South traffic biasanya menggambarkan traffic yang masuk dan keluar dari lingkungan aplikasi, sedangkan East-West traffic menggambarkan komunikasi internal antar-service.
Service Mesh dan Policy
Policy memungkinkan administrator menentukan aturan mengenai bagaimana workload berkomunikasi.
Contoh policy:
- Service A boleh mengakses Service B.
- Service C tidak boleh mengakses Service B.
- Traffic tertentu harus menggunakan TLS.
- Request tertentu hanya boleh diarahkan ke versi tertentu.
- Traffic dari namespace tertentu memiliki aturan khusus.
Pada Istio, policy dapat digunakan untuk security dan traffic behavior melalui berbagai resource konfigurasi.
Service Mesh dan mTLS
mTLS atau Mutual TLS memungkinkan kedua sisi komunikasi saling mengautentikasi sekaligus mengenkripsi traffic.
Service A │ │ Certificate │ Authentication │ Encryption ▼ Service B │ │ Certificate │ Authentication │ Encryption ▼ Secure Communication
Dalam Istio, certificate management dan mTLS merupakan bagian penting dari security model Service Mesh. :contentReference[oaicite:15]{index=15}
Service Mesh untuk High Availability
Service Mesh dapat membantu meningkatkan reliability dan availability aplikasi melalui load balancing, failover, timeout, retry, circuit breaking, serta pengaturan traffic.
Pada deployment multi-cluster, Istio juga mendukung failover dan fault isolation. Namun, semakin kompleks arsitektur mesh, semakin besar pula kebutuhan terhadap perencanaan operasional. :contentReference[oaicite:16]{index=16}
Manfaat Service Mesh
- Menyederhanakan komunikasi antar-service.
- Meningkatkan keamanan service-to-service.
- Mendukung mTLS.
- Menyediakan observability.
- Membantu traffic management.
- Mendukung canary deployment.
- Mendukung traffic shifting.
- Membantu meningkatkan resilience.
- Menyediakan policy enforcement.
- Mengurangi kebutuhan memasukkan networking logic ke aplikasi.
- Mendukung microservices skala besar.
- Dapat digunakan pada lingkungan multi-cluster.
Kelebihan Service Mesh
- Memisahkan networking concern dari business logic.
- Meningkatkan konsistensi konfigurasi komunikasi.
- Mendukung keamanan antar-service.
- Menyediakan observability terpusat.
- Mendukung advanced traffic management.
- Mendukung resilience mechanism.
- Mendukung deployment cloud-native.
- Dapat membantu pengelolaan microservices dalam skala besar.
Kekurangan Service Mesh
- Menambah kompleksitas infrastruktur.
- Membutuhkan pemahaman networking yang baik.
- Proxy membutuhkan resource tambahan.
- Control plane harus dikelola dengan baik.
- Troubleshooting mesh dapat menjadi kompleks.
- Konfigurasi yang terlalu banyak dapat sulit dipelihara.
- Deployment multi-cluster meningkatkan kompleksitas operasional.
Kapan Service Mesh Dibutuhkan?
Service Mesh tidak selalu diperlukan untuk setiap aplikasi.
Service Mesh lebih relevan ketika aplikasi memiliki:
- Banyak microservices.
- Komunikasi service-to-service yang kompleks.
- Kebutuhan mTLS.
- Kebutuhan traffic routing lanjutan.
- Kebutuhan observability antar-service.
- Kebutuhan canary deployment.
- Kebutuhan policy terpusat.
- Kebutuhan resilience dan traffic control.
Untuk aplikasi sederhana dengan beberapa service, kompleksitas tambahan dari Service Mesh mungkin belum memberikan manfaat yang sebanding.
Best Practice Menggunakan Service Mesh
- Mulai dari kebutuhan yang jelas.
- Jangan memasukkan semua workload ke mesh tanpa perencanaan.
- Gunakan policy secara bertahap.
- Pantau resource proxy dan control plane.
- Gunakan telemetry untuk mengawasi kesehatan mesh.
- Dokumentasikan konfigurasi traffic.
- Gunakan mTLS sesuai kebutuhan security.
- Uji retry dan timeout agar tidak menimbulkan traffic berlebihan.
- Gunakan canary deployment untuk perubahan besar.
- Rencanakan high availability control plane untuk production.
- Evaluasi sidecar atau ambient sesuai kebutuhan workload.
Contoh Arsitektur Service Mesh pada Kubernetes
Internet
│
▼
Ingress Gateway
│
▼
+-------------------+
| Service Mesh |
+-------------------+
│ │ │
▼ ▼ ▼
Service A Service B Service C
│ │ │
▼ ▼ ▼
Envoy Envoy Envoy
│ │ │
└──────┼──────┘
▼
Internal Services
│
▼
Database
Control Plane
│
▼
Istiod
Contoh Alur Request pada Service Mesh
- Client mengirim request.
- Request diterima oleh Gateway.
- Gateway meneruskan request ke service.
- Proxy memproses traffic.
- Service melakukan komunikasi dengan service lainnya.
- Proxy menerapkan routing dan policy.
- mTLS dapat digunakan untuk mengamankan komunikasi.
- Telemetry dikumpulkan dari traffic.
- Request menghasilkan response.
Service Mesh dan DevOps
Service Mesh dapat mendukung workflow DevOps dengan menyediakan mekanisme traffic management dan observability yang dapat digunakan selama deployment aplikasi.
Misalnya ketika versi baru aplikasi dirilis, traffic dapat diarahkan secara bertahap.
CI/CD
│
▼
Build
│
▼
Container Image
│
▼
Kubernetes Deployment
│
▼
Service Mesh
│
├── 90% Version 1
└── 10% Version 2
│
▼
Observability
│
▼
Evaluation
Jika versi baru menunjukkan performa dan error rate yang baik, traffic dapat ditingkatkan secara bertahap.
Service Mesh dan Cloud-Native
Service Mesh merupakan bagian dari ekosistem cloud-native karena dirancang untuk membantu mengelola komunikasi pada aplikasi yang terdistribusi dan dinamis.
Service Mesh dapat dikombinasikan dengan:
- Kubernetes.
- Docker.
- Container Registry.
- CI/CD.
- Observability.
- Cloud Computing.
- Microservices.
- Infrastructure as Code.
Service Mesh vs Tanpa Service Mesh
| Aspek | Tanpa Service Mesh | Dengan Service Mesh |
|---|---|---|
| Routing | Banyak bergantung pada aplikasi atau platform. | Dapat dikelola pada mesh layer. |
| mTLS | Harus diimplementasikan atau dikelola terpisah. | Dapat dikelola melalui mesh. |
| Observability | Memerlukan integrasi individual. | Dapat dikumpulkan dari proxy. |
| Retry | Sering diimplementasikan pada aplikasi. | Dapat dikelola pada traffic layer. |
| Traffic Splitting | Lebih kompleks. | Dapat dikonfigurasi pada mesh. |
| Policy | Dapat tersebar pada berbagai aplikasi. | Dapat dikelola secara lebih terpusat. |
Service Mesh dan Observability End-to-End
Salah satu kekuatan Service Mesh adalah kemampuan menghubungkan komunikasi antar-service dengan telemetry.
Request │ ▼ Service A │ ├── Metrics ├── Logs └── Trace │ ▼ Service B │ ├── Metrics ├── Logs └── Trace │ ▼ Service C
Dengan pendekatan tersebut, administrator dapat melihat kondisi sistem secara lebih menyeluruh.
Hubungan Service Mesh dengan Artikel Sebelumnya
Artikel ini menjadi penghubung dari beberapa topik Istio yang telah dibahas sebelumnya.
mTLS │ ▼ PeerAuthentication │ ▼ RequestAuthentication │ ▼ Authorization Policy │ ▼ Telemetry Istio │ ▼ Distributed Tracing │ ▼ SERVICE MESH
mTLS dan policy menjelaskan sisi keamanan, sedangkan Telemetry dan Distributed Tracing menjelaskan sisi observability. Service Mesh menyatukan berbagai kemampuan tersebut dalam satu lapisan infrastruktur untuk komunikasi service-to-service.
Baca Juga
- Distributed Tracing
- Telemetry Istio
- Authorization Policy Istio
- RequestAuthentication Istio
- PeerAuthentication Istio
- Mutual TLS (mTLS) Istio
- Kubernetes
Artikel Selanjutnya
Setelah memahami konsep Service Mesh secara keseluruhan, pembahasan berikutnya akan masuk ke alternatif Service Mesh lain yang populer di ekosistem cloud-native, yaitu Linkerd.
Jika Istio dikenal memiliki fitur yang sangat luas untuk traffic management, security, dan observability, Linkerd dapat dipelajari sebagai pendekatan Service Mesh lain dengan karakteristik dan arsitektur yang berbeda.
Distributed Tracing
│
▼
Service Mesh
│
▼
Linkerd
│
▼
Gateway API
Pertanyaan yang Sering Diajukan (FAQ)
Apa itu Service Mesh?
Service Mesh adalah lapisan infrastruktur yang digunakan untuk mengelola komunikasi antar-service pada aplikasi terdistribusi atau microservices.
Apa fungsi utama Service Mesh?
Service Mesh digunakan untuk membantu mengelola traffic, security, service discovery, observability, policy, dan reliability pada komunikasi antar-service.
Apa hubungan Service Mesh dengan Kubernetes?
Kubernetes berfungsi mengelola workload dan container, sedangkan Service Mesh berfokus pada komunikasi antar-service dan berbagai kebijakan yang diterapkan pada traffic tersebut.
Apa itu Data Plane pada Service Mesh?
Data Plane adalah bagian Service Mesh yang menangani traffic komunikasi aktual antar-service. Pada Istio sidecar mode, fungsi ini terutama dijalankan oleh Envoy Proxy.
Apa itu Control Plane pada Service Mesh?
Control Plane adalah bagian yang mengelola konfigurasi, service discovery, policy, dan informasi lain yang diperlukan oleh proxy data plane. Pada Istio, fungsi utama tersebut disediakan oleh Istiod.
Apa itu Sidecar pada Service Mesh?
Sidecar adalah pola deployment proxy yang ditempatkan bersama workload aplikasi. Dalam Istio sidecar mode, Envoy digunakan sebagai proxy untuk menangani traffic workload.
Apa itu Ambient Mode?
Ambient Mode adalah model data plane Istio yang tidak mengharuskan setiap Pod menjalankan sidecar. Istio menggunakan ztunnel sebagai proxy Layer 4 per node dan waypoint proxy untuk kebutuhan Layer 7 tertentu. :contentReference[oaicite:17]{index=17}
Apakah Service Mesh sama dengan API Gateway?
Tidak. API Gateway umumnya berfokus pada traffic yang masuk atau keluar dari sistem, sedangkan Service Mesh terutama mengelola komunikasi antar-service di dalam sistem.
Apakah Service Mesh wajib digunakan pada Kubernetes?
Tidak. Kubernetes dapat digunakan tanpa Service Mesh. Service Mesh menjadi relevan ketika aplikasi membutuhkan pengelolaan komunikasi, security, traffic management, atau observability yang lebih kompleks.
Apakah Service Mesh dapat meningkatkan keamanan?
Ya. Service Mesh seperti Istio dapat menyediakan workload identity, mTLS, authentication, authorization, dan policy enforcement untuk membantu mengamankan komunikasi antar-service. :contentReference[oaicite:18]{index=18}
Kesimpulan
Service Mesh merupakan lapisan infrastruktur yang dirancang untuk mengelola komunikasi antar-service pada aplikasi modern, khususnya microservices dan cloud-native. Dengan Service Mesh, fungsi seperti traffic management, security, observability, service discovery, load balancing, retry, timeout, dan policy enforcement dapat dikelola pada lapisan infrastruktur tanpa harus menempatkan seluruh logic tersebut di dalam kode aplikasi.
Arsitektur Service Mesh secara umum terdiri dari Control Plane dan Data Plane. Control Plane bertanggung jawab menyediakan konfigurasi dan policy, sedangkan Data Plane menangani traffic aktual antar-service. Pada Istio, Istiod menjadi komponen utama control plane dan Envoy menjadi proxy penting pada data plane. :contentReference[oaicite:19]{index=19}
Service Mesh juga memiliki hubungan erat dengan keamanan. Dengan mTLS, workload identity, authentication, dan authorization policy, komunikasi antar-service dapat diamankan menggunakan pendekatan yang lebih terstruktur.
Dari sisi observability, Service Mesh dapat menghasilkan metrics, access logs, dan distributed traces. Hal ini membuat pembahasan Telemetry Istio dan Distributed Tracing pada artikel sebelumnya menjadi bagian penting dalam memahami Service Mesh secara keseluruhan. :contentReference[oaicite:20]{index=20}
Istio juga memiliki dua model data plane utama, yaitu sidecar dan ambient. Sidecar menggunakan proxy pada workload, sedangkan ambient menggunakan ztunnel pada level node dan dapat menggunakan waypoint proxy untuk kebutuhan Layer 7. :contentReference[oaicite:21]{index=21}
Setelah memahami Service Mesh, pembahasan berikutnya akan beralih ke Linkerd untuk membandingkan pendekatan Service Mesh lainnya dalam ekosistem cloud-native.