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

Service Mesh: Istio ve Linkerd ile Trafik Yönetimi

Service Mesh, servisler arası iletişimi altyapı katmanında yöneten bir yaklaşımdır. Istio güçlü trafik yönetimi ve gözlemlenebilirlik sunarken; Linkerd hafif yapısı ve düşük kaynak tüketimiyle öne çıkar. İki çözüm, mimari, performans ve operasyonel karmaşıklık açısından karşılaştırılı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 (Karşılıklı TLS): Servisler arası şifreli iletişim

  • Trafik Yönetimi: Canary deployment, A/B testi, retry, timeout, circuit breaker

  • Gözlemlenebilirlik: Metrikler, loglar, distributed tracing

  • Politika Yönetimi: Erişim kontrolü, rate limiting


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)

  • 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: ~50MB memory, ~0.1 CPU per pod)

  • Dik öğrenme eğrisi

  • Operasyonel karmaşıklık


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: ~10MB memory, ~0.01 CPU per pod

  • Düşük Gecikme: mTLS ile %33 latency overhead (Istio sidecar'da %166)

  • Basit Kurulum: linkerd install | kubectl apply -f -

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

  • Latency-Aware Load Balancing: EWMA tabanlı akıllı yük dengeleme

Zayıf Yönleri:

  • Istio kadar zengin trafik yönetimi yok

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

  • Gelişmiş L7 routing özellikleri daha az


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

2025-2026 benchmark sonuçlarına göre:

Metrik Linkerd Istio Sidecar Istio Ambient
mTLS Latency Overhead %33 %166 %8
Memory per Pod ~10MB ~50MB Node-level
CPU per Pod ~0.01 core ~0.1 core Node-level
p99 Latency (2000 RPS) Referans +163ms +11.2ms
Yüksek Yük Altında Stabilite Yüksek Düşük (hata kayıtlı) Yüksek

IEEE çalışması: Linkerd, ortalama latency (104ms vs 135ms) ve kaynak tüketiminde Istio'dan üstün; Istio yüksek yük altında iç hatalar kaydetti.


5. 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 – ~10MB per pod vs ~50MB
AI/LLM workload yönetimi Istio – Gateway API Inference Extension desteği

6. Trafik Yönetimi Örnekleri

Istio (VirtualService ile Canary):

yaml

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1
      weight: 90
    - destination:
        host: reviews
        subset: v2
      weight: 10

Linkerd (HTTPRoute ile Trafik Bölme):

yaml

apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
  name: reviews
spec:
  parentRefs:
  - name: reviews
  rules:
  - backendRefs:
    - name: reviews-v1
      port: 8080
      weight: 90
    - name: reviews-v2
      port: 8080
      weight: 10

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.
Politika Yönetimi AuthorizationPolicy ile servis bazlı erişim kontrolü uygulayın.

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