Mikroservis Mimarisi & Servis Ağı 5 dk okuma 2 okunma

Service Mesh: Istio ve Linkerd ile Trafik Yönetimi

Service Mesh, servisler arası iletişimi altyapı katmanında yönetir. Istio, güçlü L7 trafik yönetimi ve gözlemlenebilirlik sunarken; Linkerd hafif yapısı, düşük kaynak tüketimi ve operasyonel basitliğiyle öne çıkar. Trafik yönetimi, ağırlıklı yönlendirme (canary), header tabanlı routing ve hata enjeksiyonu gibi yeteneklerle sağlanır.

Service Mesh: Istio ve Linkerd ile Trafik Yönetimi

Service Mesh: Istio ve Linkerd ile Trafik Yönetimi

Mikroservis mimarisinde servisler arası iletişim, güvenlik ve gözlemlenebilirlik her serviste tekrar tekrar kodlanması gereken yatay kesen endişelerdir. Service Mesh (Servis Ağı), bu yetenekleri uygulama kodundan bağımsız olarak altyapı katmanına taşır. İki önde gelen açık kaynak çözüm olan Istio ve Linkerd, farklı felsefelerle bu sorunu çözer.


1. Service Mesh Nedir?

Service Mesh, servisler arası iletişimi yöneten bir altyapı katmanıdır. İki bileşenden oluşur:

  • Control Plane (Kontrol Düzlemi): Servis keşfi, politika dağıtımı ve sertifika yönetimini yapar.

  • Data Plane (Veri Düzlemi): Her pod'a enjekte edilen proxy'ler aracılığıyla trafiği yönetir.

Sağladığı Yetenekler: mTLS (şifreli iletişim), trafik yönetimi (canary, A/B testi, retry, timeout), gözlemlenebilirlik (metrikler, tracing) ve politika yönetimi.


2. Istio: Özellik Zengini, Kapsamlı

Istio, Google, IBM ve Lyft tarafından 2016'da kurulan, CNCF mezunu bir servis ağıdır. En yaygın ve olgun çözümdür.

Mimari:

  • Data Plane: Envoy proxy (C++ ile yazılmış, yüksek performanslı)

  • Control Plane: Istiod (servis keşfi, konfigürasyon, sertifika yönetimi)

İki Veri Düzlemi Modu:

  • Sidecar Mode: Her pod'a Envoy sidecar enjekte edilir. Tam L7 kontrolü sağlar .

  • Ambient Mode: Node başına L4 proxy (ztunnel) ve gerektiğinde namespace başına L7 proxy (waypoint). Daha düşük kaynak tüketimi .

Güçlü Yönleri:

  • Zengin trafik yönetimi (VirtualService, DestinationRule) ile ağırlıklı routing, header tabanlı routing, trafik aynalama ve hata enjeksiyonu .

  • Kapsamlı gözlemlenebilirlik (Kiali, Prometheus, Grafana, Jaeger entegrasyonu) .

  • Çoklu küme (multi-cluster) ve VM desteği.

  • WebAssembly ile genişletilebilirlik.

Zayıf Yönleri:

  • Yüksek kaynak tüketimi (Envoy sidecar: ~0.20 vCPU ve ~60 MB per pod) .

  • Dik öğrenme eğrisi ve operasyonel karmaşıklık .

  • Yüksek yük altında iç hatalar ve gecikme sıçramaları gözlemlenmiştir .


3. Linkerd: Hafif, Basit, Performanslı

Linkerd, Buoyant tarafından geliştirilen, operasyonel basitliğe odaklanan bir servis ağıdır. CNCF mezunudur.

Mimari:

  • Data Plane: linkerd2-proxy (Rust ile yazılmış, ultralight micro-proxy)

  • Control Plane: destination (servis keşfi), identity (sertifika otoritesi), proxy injector

Güçlü Yönleri:

  • Düşük Kaynak Tüketimi: Rust proxy, Envoy'a göre çok daha hafiftir .

  • Düşük Gecikme: IEEE çalışmasında Linkerd ortalama 104 ms gecikme gösterirken, Istio 135 ms'de kalmıştır . mTLS ile gecikme artışı Linkerd'de %33 iken, Istio sidecar'da %166'dır .

  • Basit Kurulum: linkerd install | kubectl apply -f - ile dakikalar içinde kurulur .

  • Otomatik mTLS: Sıfır konfigürasyonla çalışır .

  • EWMA Tabanlı Yük Dengeleme: Yavaş pod'ları tespit edip trafiği akıllıca yönlendirir; p99 gecikmesini Istio'ya göre çok daha iyi korur .

Zayıf Yönleri:

  • Istio kadar zengin trafik yönetimi yoktur; temel routing (ağırlıklı bölme, failover) sunar .

  • Multi-cluster desteği daha sınırlıdır.

  • Gelişmiş L7 routing özellikleri daha azdır.


4. Trafik Yönetimi: Canary Deployment

Her iki mesh de ağırlıklı yönlendirme ile canary deployment'ı destekler.

Istio ile Canary (VirtualService + DestinationRule):

yaml

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: my-app
spec:
  hosts:
    - my-app
  http:
    - route:
        - destination:
            host: my-app
            subset: v1
          weight: 95
        - destination:
            host: my-app
            subset: v2
          weight: 5

Istio, ağırlıkları istek zamanında uygular; böylece replica sayısından bağımsız olarak tam olarak %5 trafik canary'ye yönlendirilebilir . Kademeli rollout için ağırlıklar 1%, 5%, 10%, 25%, 50%, 100% şeklinde artırılabilir .

Linkerd ile Canary (HTTPRoute):

yaml

apiVersion: policy.linkerd.io/v1beta2
kind: HTTPRoute
metadata:
  name: bb-route
spec:
  parentRefs:
    - name: bb
      kind: Service
      port: 8080
  rules:
    - backendRefs:
        - name: bb
          port: 8080
          weight: 90
        - name: bb-v2
          port: 8080
          weight: 10

Linkerd, HTTPRoute kaynağı ile trafik bölmeyi destekler; eski TrafficSplit SMI uzantısı hala çalışır ancak yeni geliştirme almayacaktır .


5. Performans Karşılaştırması

2025-2026 akademik ve endüstriyel benchmark'ları, iki mesh arasındaki farkları netleştirir:

Metrik Linkerd Istio Sidecar Istio Ambient
Ortalama Gecikme 104 ms 135 ms -
mTLS Gecikme Artışı %33 %166 %8
Yüksek Yük Altında Stabilite Yüksek (hata yok) Düşük (iç hata kayıtlı) Yüksek
Kaynak Tüketimi (per pod) ~10 MB ~60 MB Node-level

IEEE çalışması, Linkerd'in ortalama gecikme (104 ms vs 135 ms), CPU ve RAM tüketiminde Istio'dan üstün olduğunu; Istio'nun yüksek yük altında tüketim zirveleri yaptığını ve iç hatalar kaydettiğini göstermiştir .

Buoyant'ın 2025 benchmark'ında, 2000 RPS yük altında Linkerd, sidecar Istio'dan 163 ms, ambient Istio'dan 11.2 ms daha iyi p99 gecikmesi sunmuştur . gRPC yük dengeleme testinde ise Linkerd'in EWMA algoritması, yavaşlayan pod'ları daha etkin bir şekilde izole ederek Istio'nun LEAST_REQUEST algoritmasına göre belirgin şekilde daha iyi kuyruk gecikmesi (p99) sağlamıştır .


6. Ne Zaman Hangisi?

Senaryo Öneri
Küçük-orta ekip, hızlı başlangıç Linkerd – Basit kurulum, düşük öğrenme eğrisi
Performans kritik workload Linkerd – En düşük latency overhead
Karmaşık trafik yönetimi (canary, A/B, fault injection) Istio – Zengin L7 routing
Çoklu küme, hibrit bulut Istio – Kapsamlı multi-cluster desteği
Gelişmiş güvenlik politikaları (JWT, CUSTOM auth) Istio – Daha esnek AuthorizationPolicy
Kaynak kısıtlı ortam Linkerd – Çok daha düşük kaynak tüketimi
Mevcut Istio yatırımı ve uzmanlığı Istio – Ekosistem ve topluluk desteği

7. En İyi Pratikler

Pratik Açıklama
Kademeli geçiş yapın Mesh'i tüm cluster'a değil, önce bir namespace'e uygulayın.
Kaynak limitleri belirleyin Sidecar proxy'ler için CPU/memory limitleri tanımlayın.
Observability entegrasyonu Kiali (Istio) veya Linkerd Viz ile mesh sağlığını izleyin.
mTLS'i etkinleştirin Güvenlik için mesh genelinde mTLS'i zorunlu kılın.
Retry ve timeout yapılandırın Kod seviyesinde Polly ile altyapı seviyesinde mesh retry'larını birleştirin.
Canary'yi otomatikleştirin Ağırlıkları manuel değiştirmek yerine Argo Rollouts veya Flagger ile otomatikleştirin .

Sonuç

Service Mesh, mikroservislerde güvenlik, gözlemlenebilirlik ve trafik yönetimini kod değişikliği olmadan sağlar. Istio, zengin özellikleri ve kapsamlı trafik yönetimiyle karmaşık, kurumsal senaryolar için idealdir; ancak yüksek kaynak tüketimi ve operasyonel karmaşıklık getirir. Linkerd, hafif Rust proxy'si, düşük gecikmesi ve basit operasyonuyla performans ve verimlilik odaklı ekipler için öne çıkar. Seçim, ekibinizin yetkinliklerine, trafik yönetimi ihtiyaçlarınıza ve kaynak kısıtlarınıza bağlıdır. Unutmayın: Mesh, güçlü bir araçtır; doğru kullanıldığında sisteminizi güçlendirir, yanlış kullanıldığında operasyonel yükü artırır.

Tüm yazılar Soru ya da yorumun mu var? Yaz