Лев Корольков
Руководитель IT-департамента EFSOL Oblako
Время чтения: 16 мин

Service Mesh

Сетевой слой микросервисов

Service Mesh — это инфраструктурный слой для управления сетевым взаимодействием между сервисами распределенного приложения. Он берет на себя задачи маршрутизации, балансировки нагрузки, шифрования трафика, повторных запросов, контроля доступа, сбора метрик и распределенной трассировки.

Service Mesh особенно полезен в микросервисной архитектуре, где приложение состоит из десятков или сотен сервисов. Каждый из них постоянно обращается к другим компонентам, и постепенно управление такими соединениями становится отдельной сложной задачей.

Вместо реализации сетевой логики внутри каждого приложения Service Mesh переносит значительную часть этой функциональности на инфраструктурный уровень.

Что такое Service Mesh простыми словами

Представим интернет-магазин из сервисов каталога, корзины, заказов, платежей и доставки. Сервис заказов должен обратиться к сервису платежей, затем к доставке и базе данных.

Разработчикам необходимо решить, что делать, если платежный сервис временно недоступен, как выбрать один из нескольких его экземпляров, как зашифровать соединение и как измерить время выполнения запроса.

Если эту логику реализовывать отдельно в каждом микросервисе, код быстро усложняется.

Service Mesh выносит типовые задачи взаимодействия сервисов из прикладного кода в общий инфраструктурный слой.

Для чего нужен Service Mesh

Основная задача Service Mesh — сделать взаимодействие между сервисами более управляемым, безопасным и наблюдаемым.

  • маршрутизация запросов;
  • балансировка нагрузки;
  • шифрование service-to-service трафика;
  • взаимная аутентификация сервисов;
  • повторные запросы;
  • таймауты;
  • Circuit Breaker;
  • ограничение доступа;
  • сбор сетевых метрик;
  • распределенная трассировка;
  • Canary Deployment;
  • управление сетевыми политиками.

Что означает Service-to-Service

Service-to-Service — взаимодействие одного внутреннего сервиса с другим.

Например, frontend обращается к API, API — к сервису заказов, а сервис заказов — к платежному сервису.

В микросервисной архитектуре количество таких связей может быть очень большим. Service Mesh помогает применять к ним единые правила.

Как работает Service Mesh

Классическая архитектура Service Mesh состоит из Data Plane и Control Plane.

Data Plane непосредственно обрабатывает сетевой трафик между сервисами. Control Plane хранит и распространяет правила, по которым этот трафик должен обрабатываться.

КомпонентНазначение
Data PlaneОбрабатывает запросы между сервисами
Control PlaneУправляет конфигурацией и политиками

Что такое Data Plane

Data Plane — слой, через который проходит реальный сетевой трафик приложений.

Он выполняет маршрутизацию, балансировку, шифрование, повторные попытки, сбор метрик и другие операции.

В некоторых реализациях Data Plane строится на прокси-компонентах, расположенных рядом с приложениями.

Что такое Control Plane

Control Plane отвечает за управление поведением Service Mesh.

Администратор определяет правила маршрутизации, безопасности и доступа, а Control Plane распространяет соответствующую конфигурацию на компоненты Data Plane.

Таким образом, изменение сетевой политики можно выполнить централизованно без ручной настройки каждого микросервиса.

Что такое Sidecar Proxy

Одна из известных архитектур Service Mesh использует Sidecar Proxy.

Рядом с каждым экземпляром приложения запускается дополнительный прокси. Входящий и исходящий сетевой трафик сервиса проходит через него.

Приложение продолжает выполнять бизнес-логику, а proxy занимается сетевыми функциями.

ПриложениеSidecar Proxy
Бизнес-логикаМаршрутизация
Обработка заказовmTLS
Работа с даннымиRetries и Timeouts
Прикладная логикаМетрики сетевых запросов

Зачем нужен Sidecar

Главное преимущество Sidecar заключается в отделении сетевой логики от приложения.

Например, сервисы написаны на Java, Python и Go. Если каждый должен самостоятельно реализовать одинаковую логику повторных запросов, шифрования и метрик, придется поддерживать несколько реализаций.

Sidecar позволяет применять общую инфраструктурную функциональность независимо от языка приложения.

Обязательно ли Service Mesh использует Sidecar

Нет. Sidecar — распространенная, но не единственная архитектура.

Service Mesh может использовать и другие способы обработки трафика, уменьшающие количество отдельных прокси рядом с каждым workload.

Поэтому понятие Service Mesh шире, чем Sidecar Proxy.

Service Mesh и Kubernetes

Service Mesh особенно часто используется вместе с Kubernetes.

Kubernetes уже предоставляет базовые механизмы Service Discovery и сетевого взаимодействия, но Service Mesh добавляет более детальное управление трафиком, безопасностью и Observability.

Например, Kubernetes Service распределяет запросы между pod, а Service Mesh может дополнительно направлять 5 процентов трафика на новую версию приложения.

Service Discovery

В динамической инфраструктуре IP-адреса экземпляров приложения могут постоянно изменяться.

Service Discovery позволяет сервисам находить друг друга по логическим именам, а не по фиксированным адресам.

Service Mesh использует информацию о доступных экземплярах для маршрутизации запросов и балансировки нагрузки.

Балансировка нагрузки

Если сервис запущен в нескольких экземплярах, запросы необходимо распределять между ними.

Service Mesh может выполнять Load Balancing на уровне взаимодействия сервисов.

Например, сервис каталога имеет десять экземпляров. Сервис заказов отправляет запрос через Service Mesh, который выбирает подходящий экземпляр каталога.

Timeouts

Timeout определяет, сколько времени сервис готов ждать ответа от другого компонента.

Без ограничения зависший запрос может удерживать соединения и ресурсы слишком долго.

Service Mesh позволяет централизованно задавать таймауты для различных направлений взаимодействия.

При этом значение необходимо выбирать с учетом реального поведения приложения: слишком короткий timeout также способен создавать ошибки.

Retries

Retry — повторная попытка выполнить запрос после временной ошибки.

Например, один экземпляр сервиса не ответил из-за кратковременного сетевого сбоя. Service Mesh может повторить запрос.

Однако retries нужно применять осторожно. Если сервис уже перегружен, большое количество повторных запросов может еще сильнее увеличить нагрузку.

Retry Storm

Retry Storm возникает, когда большое количество клиентов одновременно начинает повторять неудачные запросы.

Например, сервис платежей перегружен и отвечает медленно. Сто других сервисов начинают выполнять по несколько retries.

В результате вместо восстановления система получает еще больше запросов.

Поэтому retries желательно сочетать с таймаутами, ограничениями и Circuit Breaker.

Что такое Circuit Breaker

Circuit Breaker — механизм защиты от постоянных обращений к явно неисправному сервису.

Если количество ошибок превышает определенный уровень, дальнейшие запросы временно прекращаются или ограничиваются.

Это дает проблемному сервису время восстановиться и предотвращает бесконтрольное накопление зависших запросов.

Service Mesh и отказоустойчивость

Service Mesh предоставляет инструменты, которые помогают приложениям устойчивее переживать сетевые ошибки.

К ним относятся retries, timeouts, Circuit Breaker и балансировка.

Однако сам Service Mesh не делает приложение автоматически отказоустойчивым. Если существует только одна база данных без резервирования, сетевой proxy не устранит эту архитектурную точку отказа.

Что такое mTLS

mTLS, или Mutual TLS, — взаимная TLS-аутентификация двух сторон соединения.

При обычном HTTPS клиент проверяет сервер. При mTLS обе стороны подтверждают свою идентичность с помощью сертификатов.

Service Mesh может автоматически применять mTLS между внутренними сервисами.

mTLS позволяет не только зашифровать трафик, но и проверить, какой именно сервис участвует в соединении.

Зачем mTLS внутри кластера

Иногда внутреннюю сеть ошибочно считают полностью доверенной. Однако при компрометации одного компонента злоумышленник может попытаться обращаться к другим внутренним сервисам.

mTLS помогает реализовать более строгую модель доверия, при которой сервис должен подтвердить собственную идентичность.

Это особенно полезно в подходах Zero Trust.

Service Identity

Service Identity — идентичность конкретного приложения или workload.

Вместо доверия к IP-адресу система может принимать решение на основании того, какой сервис выполняет запрос.

Например, сервис отчетности может иметь право читать определенные данные, а frontend — нет.

Service Mesh может использовать идентичности при применении политик доступа.

Service Mesh и Zero Trust

Zero Trust предполагает отсутствие автоматического доверия только на основании нахождения внутри корпоративной сети.

Каждое взаимодействие должно быть явно разрешено и по возможности аутентифицировано.

Service Mesh помогает применять этот принцип между микросервисами через mTLS и политики доступа.

Authorization Policies

Помимо шифрования можно ограничивать, какие сервисы имеют право обращаться друг к другу.

Например, API может обращаться к сервису заказов, но сервис аналитики не должен иметь доступ к административному API платежей.

Централизованные политики позволяют формализовать такие правила.

Traffic Management

Traffic Management — управление тем, куда именно направляются запросы и в каких пропорциях.

Это позволяет реализовывать сложные сценарии релизов и тестирования.

  • Canary Deployment;
  • Blue-Green Deployment;
  • A/B-тестирование;
  • перенаправление по HTTP-заголовкам;
  • разделение трафика между версиями;
  • аварийное переключение.

Service Mesh и Canary Deployment

При Canary Deployment новая версия приложения сначала получает небольшую часть реального трафика.

Например, 95 процентов запросов продолжают идти на стабильную версию, а 5 процентов — на новую.

Если метрики остаются нормальными, долю постепенно увеличивают.

Service Mesh позволяет выполнять такое распределение на сетевом уровне без изменения кода приложения.

Service Mesh и Blue-Green Deployment

При Blue-Green Deployment одновременно существуют старая и новая версии системы.

После проверки трафик переключается с одной версии на другую.

Service Mesh может управлять таким переключением и при необходимости быстро вернуть трафик на предыдущую версию.

Маршрутизация по параметрам запроса

Иногда необходимо отправлять определенную группу запросов на отдельную версию.

Например, сотрудники компании тестируют новый backend до массового релиза.

Service Mesh может анализировать технические параметры запроса и использовать их при выборе destination.

Так создаются более гибкие схемы тестирования.

Service Mesh и Observability

Поскольку сетевой трафик проходит через инфраструктурный слой Service Mesh, он может автоматически собирать метрики взаимодействия сервисов.

Например, можно измерять количество запросов, Error Rate и latency между конкретными компонентами.

Это позволяет получить базовую Observability даже без ручного добавления метрик в каждое приложение.

Какие метрики может давать Service Mesh

МетрикаЧто показывает
Request RateКоличество запросов между сервисами
Error RateДоля ошибочных запросов
LatencyВремя выполнения сетевых запросов
Traffic VolumeОбъем передаваемых данных

Эти показатели помогают выявлять проблемные связи в распределенном приложении.

Service Mesh и Prometheus

Метрики Service Mesh часто передаются в Prometheus или другую систему временных рядов.

Например, Prometheus хранит показатели latency и Error Rate между сервисами.

Далее их можно использовать в Grafana для построения дашбордов и алертов.

Service Mesh и Grafana

Grafana используется для визуализации метрик Service Mesh.

На дашборде можно показать количество запросов между сервисами, долю ошибок и распределение latency.

Это помогает инженеру быстро определить, какое взаимодействие стало узким местом.

Service Mesh и распределенная трассировка

Service Mesh способен создавать часть данных, необходимых для Distributed Tracing, поскольку видит сетевые переходы между сервисами.

Однако для полноценного сквозного trace приложению часто необходимо корректно передавать соответствующий контекст запросов.

Поэтому Service Mesh и OpenTelemetry могут использоваться совместно.

Service Mesh и OpenTelemetry

OpenTelemetry инструментирует приложение и позволяет собирать метрики, логи и traces. Service Mesh предоставляет сетевую телеметрию на инфраструктурном уровне.

Они дополняют друг друга.

Например, Service Mesh показывает, что вызов payment-service занимает две секунды, а OpenTelemetry trace помогает увидеть, на какой внутренней операции самого payment-service возникает задержка.

Service Mesh и логирование

Proxy-компоненты Service Mesh могут создавать access logs с информацией о сетевых запросах.

Такие журналы полезны для анализа маршрутизации и ошибок соединения.

Однако они не заменяют прикладные логи. Proxy знает, что запрос завершился кодом ошибки, но может не знать бизнес-причину сбоя.

Service Mesh и API Gateway

Service Mesh и API Gateway иногда путают, поскольку оба работают с сетевым трафиком.

API Gateway обычно находится на границе системы и управляет запросами внешних клиентов. Service Mesh прежде всего управляет внутренними взаимодействиями сервисов.

API GatewayService Mesh
North-South TrafficEast-West Traffic
Работа с внешними клиентамиВзаимодействие внутренних сервисов
Публичные APIService-to-Service коммуникации
Rate Limit и аутентификация клиентовmTLS и внутренние политики

В одной архитектуре API Gateway и Service Mesh могут использоваться одновременно.

Что такое East-West Traffic

East-West Traffic — внутренний сетевой трафик между сервисами и компонентами инфраструктуры.

Именно этот тип трафика является основной областью Service Mesh.

Например, запрос от order-service к payment-service относится к East-West взаимодействию.

Что такое North-South Traffic

North-South Traffic — запросы, входящие во внутреннюю инфраструктуру извне или выходящие из нее.

Например, браузер пользователя обращается к публичному API.

Для такого трафика чаще используются Load Balancer, Reverse Proxy, Ingress или API Gateway.

Service Mesh и Ingress

Ingress управляет входящим трафиком к приложениям Kubernetes, а Service Mesh преимущественно занимается внутренним взаимодействием.

Некоторые платформы позволяют управлять обоими направлениями через связанные компоненты.

Важно разделять понятия: внутренняя сервисная сеть и точка входа внешнего пользователя решают разные задачи.

Service Mesh и Reverse Proxy

Reverse Proxy обычно находится перед одним или несколькими backend-приложениями.

Service Mesh масштабирует похожие proxy-механизмы на всю внутреннюю сеть микросервисов и добавляет централизованные политики, идентичности и Observability.

Поэтому Service Mesh можно рассматривать как более системный подход к управлению service-to-service коммуникациями.

Service Mesh и Load Balancer

Обычный Load Balancer распределяет трафик между экземплярами приложения.

Service Mesh также может выполнять балансировку, но дополнительно знает сервисную топологию, политики, версии приложений и идентичности workload.

Это позволяет реализовывать более сложное управление трафиком.

Популярные реализации Service Mesh

Существуют разные реализации Service Mesh с собственными архитектурами и наборами функций.

РешениеТипичный контекст
IstioРасширенное управление трафиком, безопасностью и Observability в Kubernetes
LinkerdService Mesh с акцентом на простоту эксплуатации
Consul Service MeshService networking в распределенной инфраструктуре

Выбор зависит от масштаба, требований безопасности, существующей инфраструктуры и компетенций команды.

Service Mesh и Istio

Istio — одна из известных реализаций Service Mesh.

Он предоставляет управление трафиком, политики безопасности, mTLS и телеметрию.

Istio часто применяется в Kubernetes, когда стандартных возможностей Service и Ingress недостаточно для сложного управления взаимодействиями.

При этом использование такого решения увеличивает сложность инфраструктуры.

Service Mesh и микросервисная архитектура

Чем больше микросервисов, тем больше потенциальных сетевых взаимодействий.

Например, 50 сервисов могут иметь сотни логических связей между собой.

Без общего уровня управления разные команды могут реализовывать retries, TLS и метрики по-разному.

Service Mesh стандартизирует эти механизмы.

Service Mesh и монолит

Для одного монолитного приложения Service Mesh обычно дает значительно меньше пользы.

Если приложение имеет несколько простых сетевых связей, дополнительные proxy и Control Plane могут только усложнить эксплуатацию.

Основная ценность Service Mesh появляется именно при большом количестве service-to-service взаимодействий.

Service Mesh и SRE

SRE-команды могут использовать Service Mesh для унификации сетевых метрик, управления надежностью вызовов и анализа зависимостей.

Например, можно установить общий timeout для определенного класса сервисов и отслеживать Error Rate взаимодействий.

Service Mesh также помогает проводить безопасные Canary Deployment и анализировать результат релиза.

Service Mesh и SLI

Метрики сетевых запросов могут использоваться для вычисления SLI.

Например, доля успешных ответов и latency между клиентом и сервисом позволяют оценивать качество его работы.

Однако важно выбирать SLI, которые действительно отражают пользовательский опыт, а не просто наличие сетевого соединения.

Service Mesh и CI/CD

Service Mesh может быть частью стратегии безопасного deployment.

CI/CD устанавливает новую версию приложения, после чего сетевые политики постепенно направляют на нее часть запросов.

Если Error Rate растет, процесс можно остановить или вернуть трафик на стабильную версию.

Это позволяет отделить выпуск программного кода от полного переключения пользовательского трафика.

Service Mesh и GitOps

Правила маршрутизации и безопасности Service Mesh можно хранить в Git как декларативную конфигурацию.

Изменения проходят Code Review, после чего GitOps-система синхронизирует их с кластером.

Это дает историю изменений сетевых политик и уменьшает количество ручных настроек.

Service Mesh и Helm

Компоненты Service Mesh и их конфигурации могут устанавливаться в Kubernetes с помощью Helm.

Helm при этом является механизмом пакетного развертывания, а Service Mesh — сетевым инфраструктурным слоем.

Они решают разные задачи и могут использоваться совместно.

Service Mesh и Infrastructure as Code

Конфигурации Service Mesh можно рассматривать как часть Infrastructure as Code.

Маршруты, политики доступа и настройки mTLS описываются декларативно, хранятся в Git и применяются автоматически.

Terraform может создавать инфраструктуру Kubernetes, Helm устанавливать Service Mesh, а GitOps управлять его текущими политиками.

Service Mesh и Multi-cloud

В распределенной инфраструктуре сервисы могут работать в нескольких кластерах и облаках.

Service Mesh потенциально помогает создать единый слой идентичности, безопасности и управления трафиком между такими средами.

Однако multi-cloud Service Mesh значительно сложнее обычной установки в одном кластере и требует продуманной сетевой архитектуры.

Service Mesh и производительность

Дополнительная обработка сетевого трафика не является бесплатной.

Proxy-компоненты потребляют CPU и оперативную память, а прохождение запроса через дополнительный слой может добавлять задержку.

В небольшом приложении стоимость и сложность такого слоя могут превышать практическую пользу.

Перед внедрением необходимо оценивать реальную нагрузку и требования.

Resource Overhead

Если архитектура использует отдельный proxy рядом с каждым workload, количество дополнительных процессов растет вместе с количеством приложений.

В большом кластере это может означать заметное дополнительное потребление памяти и CPU.

Поэтому инфраструктурная команда должна учитывать Service Mesh при Capacity Planning.

Service Mesh и задержка

Каждый дополнительный сетевой уровень способен увеличить latency.

Для обычного веб-приложения небольшая дополнительная задержка может быть незаметной, но для высокочастотных или latency-sensitive систем она имеет значение.

Service Mesh следует тестировать на реальной нагрузке, а не оценивать только функционально.

Безопасность Service Mesh

Service Mesh способен значительно улучшить безопасность внутренних соединений, но сам становится критичным инфраструктурным компонентом.

Control Plane необходимо защищать, политики доступа — проверять, а сертификаты — корректно управлять.

Ошибка в централизованной политике может сразу повлиять на большое количество сервисов.

Опасность неправильных политик

Централизованное управление удобно, но повышает масштаб последствий ошибок.

Например, неправильно настроенная политика может запретить платежному сервису обращаться к базе данных или, наоборот, предоставить лишний доступ.

Поэтому изменения желательно проводить через Git, Code Review и тестовое окружение.

Преимущества Service Mesh

  • единое управление service-to-service трафиком;
  • централизованное mTLS;
  • балансировка нагрузки;
  • retries и timeouts;
  • Circuit Breaker;
  • гибкая маршрутизация;
  • Canary Deployment;
  • сетевые метрики без изменения каждого приложения;
  • политики доступа;
  • стандартизация взаимодействий микросервисов.

Недостатки и ограничения Service Mesh

  • увеличивает сложность инфраструктуры;
  • требует дополнительных CPU и RAM;
  • может добавлять сетевую задержку;
  • усложняет диагностику сетевых проблем;
  • требует компетенций команды;
  • ошибка общей политики влияет сразу на множество сервисов;
  • не заменяет прикладную Observability;
  • для небольших систем может быть избыточным.

Типичные ошибки при внедрении Service Mesh

  1. Внедрять Service Mesh только потому, что используется Kubernetes.
  2. Не определять конкретные проблемы, которые он должен решить.
  3. Включать агрессивные retries без оценки нагрузки.
  4. Не контролировать ресурсные затраты proxy.
  5. Считать mTLS полной реализацией всей информационной безопасности.
  6. Не тестировать сетевые политики.
  7. Включать слишком сложную маршрутизацию без необходимости.
  8. Не мониторить сам Control Plane.
  9. Игнорировать дополнительную latency.
  10. Считать Service Mesh заменой OpenTelemetry и прикладным логам.

Как внедрить Service Mesh

Шаг 1. Определить проблему

Необходимо понять, зачем нужен Service Mesh: для mTLS, Canary Deployment, Observability или управления сетевой надежностью.

Шаг 2. Выбрать ограниченный набор сервисов

Лучше начать с нескольких некритичных приложений и проверить эксплуатационную модель.

Шаг 3. Измерить базовые показатели

До внедрения полезно знать текущую latency, CPU и потребление памяти.

Шаг 4. Настроить Observability

Команда должна видеть метрики самих proxy и Control Plane.

Шаг 5. Вводить политики постепенно

Сначала можно включить наблюдение, затем mTLS и только после этого сложные правила доступа и маршрутизации.

Шаг 6. Проверить отказные сценарии

Нужно протестировать недоступность зависимых сервисов, таймауты и поведение retries.

Шаг 7. Автоматизировать конфигурацию

Политики желательно хранить в Git и применять через управляемый процесс.

Практический пример

Компания развивает интернет-магазин из 40 микросервисов в Kubernetes. Разные команды реализовали собственные механизмы HTTP retries и таймаутов, а часть сервисов использовала внутренние соединения без шифрования.

После одного из инцидентов платежный сервис начал отвечать медленно. Несколько зависимых сервисов одновременно запустили агрессивные retries, что еще сильнее увеличило нагрузку.

Компания внедрила Service Mesh сначала для ограниченной группы сервисов.

Через единые политики настроили timeouts, ограниченное количество retries и mTLS. Метрики взаимодействий начали поступать в Prometheus и отображаться в Grafana.

При следующем релизе новой версии payment-service сначала направили только небольшую долю трафика. После проверки Error Rate и latency долю постепенно увеличили.

В результате управление сетевой надежностью и rollout стало более единообразным. При этом команда отдельно контролировала дополнительное потребление ресурсов и не переносила в Service Mesh бизнес-логику приложений.

Когда нужен Service Mesh

  • приложение состоит из большого количества микросервисов;
  • нужно централизованное mTLS;
  • требуются сложные политики service-to-service доступа;
  • часто используются Canary Deployment;
  • нужно единообразно управлять retries и timeouts;
  • важна сетевой Observability;
  • работает несколько команд разработки;
  • используется Kubernetes в достаточно крупном масштабе;
  • необходимо стандартизировать межсервисные коммуникации.

Когда Service Mesh может быть избыточным

Для небольшого приложения из нескольких сервисов Service Mesh может добавить больше сложности, чем пользы.

Если маршрутизация проста, TLS уже решен на инфраструктурном уровне, а взаимодействия легко контролируются через обычные Kubernetes Service и Ingress, дополнительный слой может не требоваться.

Внедрять Service Mesh следует ради конкретных эксплуатационных задач, а не как обязательную часть любого Kubernetes-кластера.

Service Mesh для бизнеса

Service Mesh напрямую не создает бизнес-функции, но помогает крупным цифровым продуктам управлять сложностью распределенной инфраструктуры.

Единые правила безопасности уменьшают количество различных реализаций mTLS, а централизованная маршрутизация позволяет безопаснее выпускать новые версии.

Observability межсервисных соединений помогает быстрее находить узкие места и сокращать время диагностики.

При этом экономический эффект появляется только при достаточном масштабе. Для небольшой системы расходы на внедрение и сопровождение могут быть выше потенциальной выгоды.

Связанные термины

ТерминСвязь с Service Mesh
MicroservicesАрхитектура, в которой Service Mesh особенно полезен
KubernetesПопулярная среда для использования Service Mesh
Sidecar ProxyОдин из способов реализации Data Plane
mTLSМеханизм взаимной аутентификации и шифрования сервисов
Service DiscoveryПоиск доступных экземпляров сервисов
Load BalancingРаспределение запросов между экземплярами
Circuit BreakerЗащита от постоянных запросов к неисправному сервису
Canary DeploymentПостепенное направление трафика на новую версию
ObservabilityАнализ метрик, логов и traces межсервисного взаимодействия
OpenTelemetryДополняет сетевую телеметрию Service Mesh прикладной трассировкой
API GatewayУправляет преимущественно внешним API-трафиком
Zero TrustПодход безопасности, для которого полезны идентичности и mTLS

Краткий итог

Service Mesh — инфраструктурный слой для управления сетевым взаимодействием между сервисами. Он помогает централизовать маршрутизацию, балансировку, retries, timeouts, Circuit Breaker, mTLS, политики доступа и сбор сетевой телеметрии.

Service Mesh особенно полезен в крупной микросервисной архитектуре и Kubernetes, где количество service-to-service соединений становится слишком большим для независимого управления каждой командой. Data Plane обрабатывает трафик, а Control Plane распространяет политики и конфигурацию.

При этом Service Mesh увеличивает сложность и потребление ресурсов, поэтому не является обязательным компонентом любого Kubernetes-кластера. Его имеет смысл внедрять тогда, когда существуют конкретные проблемы с безопасностью, маршрутизацией, надежностью или Observability межсервисных коммуникаций.

Частые вопросы

6 вопросов
Что такое Service Mesh?

Service Mesh — инфраструктурный слой для управления сетевым взаимодействием микросервисов. Он может выполнять маршрутизацию, балансировку, mTLS, retries, timeouts, контроль доступа и сбор телеметрии.

Зачем нужен Service Mesh в Kubernetes?

Kubernetes предоставляет базовую сетевую связанность и Service Discovery, а Service Mesh добавляет более детальное управление service-to-service трафиком, mTLS, политиками доступа, Canary Deployment и сетевой Observability.

Что такое Sidecar Proxy в Service Mesh?

Sidecar Proxy — дополнительный прокси-компонент, который работает рядом с приложением и обрабатывает его входящий и исходящий сетевой трафик. Он может выполнять маршрутизацию, mTLS, retries и сбор метрик.

Чем Service Mesh отличается от API Gateway?

API Gateway обычно управляет внешними запросами клиентов к API, то есть North-South Traffic. Service Mesh в первую очередь управляет внутренним East-West Traffic между микросервисами.

Что такое mTLS в Service Mesh?

mTLS — взаимная TLS-аутентификация сервисов. Она позволяет зашифровать соединение и одновременно проверить идентичность обеих сторон, что полезно для Zero Trust и внутренних политик безопасности.

Всегда ли нужен Service Mesh для микросервисов?

Нет. Для небольшой системы из нескольких сервисов Service Mesh может быть избыточным. Он наиболее полезен при большом количестве сервисов, сложных требованиях к mTLS, маршрутизации, Canary Deployment и наблюдаемости сетевых взаимодействий.

Была ли статья полезна?
Документ обновляется командой EFSOL. Свяжитесь с нами, если нашли неточность.
Нужна консультация?

Поможем спроектировать, развернуть и сопроводить облачную или гибридную инфраструктуру под задачи вашего бизнеса.

Ответим в течение часа в рабочее время
Заказать звонок

Оставьте свои данные для того, чтобы специалист с вами связался.

Заказать звонок

Оставьте свои данные для того, чтобы специалист с вами связался.