Gymterview
middle

Что такое паттерн Sidecar?

Sidecar — это паттерн развёртывания, при котором вспомогательный контейнер работает рядом с основным сервисом в одном pod’е (в Kubernetes) и берёт на себя сквозные задачи: проксирование трафика, логирование, мониторинг, безопасность.

Пример
┌─── Pod ─────────────────────────────┐
│                                     │
│  ┌────────────────┐  ┌───────────┐  │
│  │  Основной      │  │  Sidecar  │  │
│  │  сервис        │◄─►│           │  │
│  │  (Payment App) │  │  (Envoy)  │  │
│  └────────────────┘  └───────────┘  │
│                                     │
│  Общий localhost, общие volumes     │
└─────────────────────────────────────┘

Что может делать Sidecar

  • Проксирование трафика — mTLS, retry, circuit breaker (Envoy в Istio).
  • Логирование — сбор и отправка логов (Fluentd sidecar).
  • Мониторинг — экспорт метрик.
  • Безопасность — аутентификация, авторизация, шифрование трафика.
  • Конфигурация — подтягивание секретов из Vault.
Пример в Kubernetes
apiVersion: v1
kind: Pod
metadata:
  name: payment-service
spec:
  containers:
    # Основной контейнер
    - name: payment-app
      image: bank/payment-service:1.0
      ports:
        - containerPort: 8080

    # Sidecar для логирования
    - name: log-collector
      image: fluent/fluentd:latest
      volumeMounts:
        - name: shared-logs
          mountPath: /var/log/app

    # Sidecar для экспорта метрик
    - name: metrics-exporter
      image: prom/node-exporter:latest
      ports:
        - containerPort: 9100

  volumes:
    - name: shared-logs
      emptyDir: {}
Аспект Преимущества Недостатки
Разделение ответственности Основной сервис не содержит инфраструктурного кода Дополнительное потребление CPU, RAM
Технологическая гибкость Sidecar может быть на другом языке Увеличенная задержка (hop через sidecar)
Единообразие Одна конфигурация sidecar для всех сервисов Сложность отладки

Sidecar — основа Service Mesh (Istio, Linkerd), который активно используется в крупных системах для управления сетевым взаимодействием.

На собеседовании: свяжите Sidecar с Service Mesh — это показывает системное понимание. Ключевой плюс: разработчик пишет только бизнес-логику, а сетевые задачи (mTLS, retry, трассировка) берёт на себя sidecar.