Ana içeriğe geç

Sidecar Deseni

İngilizcesi
Sidecar Pattern
Okunuşu
saydkar
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/sidecar-pattern

Kısaca

Sidecar deseni, bir uygulamanın yanında yaşam döngüsünü ve ağını paylaşan yardımcı bir süreç çalıştırarak loglama, proxy ya da güvenlik gibi özellikler ekler.

Sidecar deseni (sidecar pattern) nedir?

Sidecar, ana uygulamanın yanına dağıtılan ayrı bir süreç ya da konteynerdir; bir motosikletin yanına takılan sepet gibi: uygulama nereye giderse o da gider, onunla birlikte başlar ve durur, ağını ve depolamasını paylaşır. Uygulama kendi işini yapar, sidecar ise log göndermek, sertifikaları yenilemek, metrik toplamak ya da trafiğe proxy'lik etmek gibi destekleyici bir işi üstlenir.

Kazanç ayrıştırmadır. Destekleyici bir özellik kendi kodunda, kendi dilinde ve kendi sürümleriyle yaşar; aynı sidecar Java, Go ya da Python ile yazılmış uygulamalara onları değiştirmeden hizmet verebilir. Service mesh'ler bu fikir üzerine kuruludur: her servis, Envoy gibi, her çağrı için şifrelemeyi, yeniden denemeleri ve yönlendirmeyi üstlenen bir proxy sidecar alır; böylece uygulama kodunun bunlarla uğraşması gerekmez.

Kubernetes'te sidecar aynı pod içindeki başka bir konteynerdir; bu yüzden pod'un ağını paylaşır ve volume'lerini de paylaşabilir. Kubernetes yerleşik sidecar konteynerlerini 1.28 sürümünde ekledi ve 1.33'te kararlı hâle getirdi: restartPolicy: Always olan bir init konteyneri uygulamadan önce başlar ve onun yanında çalışmayı sürdürür. Bedeli kaynak ve karmaşıklıktır, çünkü her örnek fazladan bir süreç taşır; bu yüzden bazı service mesh'ler artık bunun yerine her node için tek bir ortak proxy de sunuyor.

Önemli noktalar

  • Sidecar, bir uygulamanın yanına dağıtılan ve onun yaşam döngüsünü paylaşan yardımcı bir süreçtir.
  • Uygulamayı değiştirmeden loglama ya da proxy gibi destekleyici özellikler ekler.
  • Kubernetes'te sidecar aynı pod içindeki başka bir konteynerdir.
  • Service mesh'ler her servisin yanına bir proxy sidecar koyar.

Örnek

Bir Kubernetes pod'unda log gönderen sidecaryaml
apiVersion: v1
kind: Pod
metadata:
  name: web
spec:
  initContainers:
    - name: log-shipper         # the sidecar: starts first, then runs alongside
      image: example/log-shipper:1.0
      restartPolicy: Always
      volumeMounts:
        - { name: logs, mountPath: /var/log/app }
  containers:
    - name: app                 # the application writes logs, the sidecar ships them
      image: example/web:1.4
      volumeMounts:
        - { name: logs, mountPath: /var/log/app }
  volumes:
    - name: logs
      emptyDir: {}

Sık sorulan sorular

Sidecar ile kütüphane arasındaki fark nedir?

Kütüphane uygulamanın süreci içinde çalışır ve uygulamanın diline uygun bir sürümünün olması gerekir. Sidecar ise ayrı bir süreç olarak çalışır; bu yüzden her dille çalışır ve kendi başına güncellenebilir, bedeli de fazladan bir süreç ve ağda fazladan bir adımdır.

Sidecar'lar istekleri yavaşlatır mı?

Bir proxy sidecar aynı makinede kısa bir adım ekler, genellikle milisaniyenin bir kesri kadar, ve her örnekte biraz bellek ve CPU kullanır. Çoğu servis için üstlendiği işler düşünüldüğünde makul bir bedeldir, ama binlerce örnekte toplam maliyet birikir.

İlgili sayfalar

Kaynaklar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar