🔅Service Mesh
Service Mesh — архитектурный слой. Управляет сетевым взаимодействием между сервисами в распределённых системах.
Каждый сервис взаимодействует с другими через прокси (sidecar), который управляет всем трафиком между сервисами
☑️ Часто Service Mesh используют в облачных инфраструктурах - в контейнерах и Kubernetes
Основные задачи
🔵Шифрование трафика между сервисами и управление доступом на уровне соединений
🔵Сбор метрик, логов и трассировок для мониторинга взаимодействий между сервисами
🔵Балансировка нагрузки, маршрутизация запросов и отказоустойчивость на уровне сетевых вызовов
🔵Автоматическое переключение при сбоях и лимитирование запросов
Примеры решений для Service Mesh: Istio, Envoy Proxy, Linkerd2, Conduit, Consul Connect
Компоненты Service Mesh
⚙️ Data Plane
💩набор прокси-серверов (например, Envoy), которые развертываются рядом с каждым сервисом (sidecar pattern)
💩отвечает за обработку сетевого трафика между сервисами
💩прокси выполняют функции маршрутизации, шифрования, балансировки нагрузки и сбора метрик
🛡 Control Plane
💩управляет настройками Data Plane, определяет правила маршрутизации, политику безопасности и другие конфигурации
💩централизованно контролирует и управляет прокси в Data Plane
Примеры: Istio, Consul Connect
Плюсы и минусы
✈️ Централизованное управление политиками безопасности (аутентификация, авторизация, шифрование трафика)
Пример: Istio для настройки политики безопасности для взаимодействия микросервисов. Использует мутаторы и проверки на уровне прокси
✈️ Инструменты для мониторинга, сбора метрик и трассировки запросов
Пример: в Linkerd2 есть инструменты (Linkerd Dashboard) для отслеживания состояния микросервисов и анализа метрик производительности в реальном времени
✈️ Упрощает сложные сценарии маршрутизации трафика и балансировки нагрузки между сервисами
Пример: Istio для создания сложных правил маршрутизации (канареечные релизы или A/B тестирование), которые применяются к версиям сервисов без изменения их кода
✈️ Легко управлять версиями сервисов и конфигурациями -> лучше управление релизами и тестированием
Пример: Consul Connect поддерживает версионирование и управление конфигурациями через тегирование сервисов и централизованное хранилище конфигураций.
Позволяет развертывать новые версии сервисов параллельно с существующими, управлять маршрутизацией трафика между версиями и быстро откатывать изменения
Минусы
🧮 Для внедрения нужна сложная настройка и управление доп компонентами -> усложняет инфраструктуру
🧮 Введение прокси-сервисов в Data Plane может добавить расходы на обработку сетевого трафика -> влияет на производительность
Пример: Envoy Proxy, используемый в качестве прокси во многих Service Mesh решений, может добавить дополнительные задержки в обработку запросов
🧮 Может потребовать дополнительных вычислительных ресурсов для работы прокси и Control Plane -> увеличение стоимость эксплуатации
Пример: при развертывании Linkerd2 на большом кластере, увеличивается нагрузка на инфраструктуру из-за работы множества прокси-сервисов. Это потребует доп ресурсы
🧮 Усложняется интеграция с существующими системами и приложениями. Особенно если сервисы не были изначально спроектированы с учётом использования Service Mesh
📎 Материалы
1. Что такое service mesh простыми словами
2. Service Mesh: что нужно знать каждому Software Engineer о самой хайповой технологии
3. 5 самых популярных вопросов при внедрении service mesh в корпорации на примере Istio
4. Istio Service Mesh: как упростить управление микросервисами
5. Что такое service mesh, когда внедрять, альтернативы Istio и другие ответы экспертов с АМА-сессии Слёрм по service mesh
🧑🎓 Больше полезного в базе знаний по системному анализу
#проектирование
Post #487
13.2K
- 🔥 11
- ❤ 5
- 👍 4