Что такое сетка сервисов?

Сетка сервисов – это программный уровень, осуществляющий обработку всех процессов взаимодействия между сервисами в приложениях. Этот слой состоит из микросервисов, размещенных в контейнерах. По мере масштабирования приложений и увеличения количества микросервисов отслеживать работу сервисов становится все сложнее. Для управления подключениями между сервисами сетка сервисов предоставляет новые функции, такие как мониторинг, ведение журнала, отслеживание и управление трафиком. Она не зависит от кода каждого сервиса, что позволяет ей работать между границами сети и с несколькими системами управления сервисами.

Зачем нужна сетка сервисов?

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

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

Существует два основных фактора внедрения сеток сервисов, о которых мы подробно расскажем ниже.

Подробнее о микросервисах »

Наблюдаемость за уровнем обслуживания

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

Контроль уровня обслуживания

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

В чем преимущества сетки сервисов?

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

Обнаружение сервисов

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

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

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

Управление трафиком

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

Разделение трафика

Входящий трафик можно разделить между разными версиями или конфигурациями сервиса. Сетка направляет часть трафика на обновленную версию, что позволяет контролировать и постепенно внедрять изменения. Это обеспечивает плавный переход и минимизирует влияние изменений.

Запрос зеркального отображения

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

Развертывание пробного выпуска

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

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

Сетки сервисов предоставляют функции безопасной связи, такие как взаимное шифрование по протоколу TLS (MTLS), аутентификация и авторизация. Mutual TLS обеспечивает проверку личности при обмене данными между сервисами. Это помогает обеспечить конфиденциальность и целостность данных за счет шифрования трафика. Можно также применять политики авторизации, чтобы контролировать доступ сервисов к определенным адресам или выполнение определенных действий.

Мониторинг

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

  • Сбор таких показателей, как задержка, количество ошибок и использование ресурсов, для анализа общей производительности системы
  • Выполнение распределенной трассировки для просмотра полного пути и времени прохождения запросов через несколько сервисов
  • Фиксация событий сервиса в журналах для целей аудита, отладки и соответствия нормативным требованиям

Как работает сетка сервисов?

Сетка сервисов устраняет логику, регулирующую обмен данными между сервисами, и абстрагирует обмен данными на собственный уровень инфраструктуры. Это решение использует несколько сетевых прокси для маршрутизации и отслеживания связи между сервисами.

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

 

В архитектуре сетки сервисов есть два основных компонента – плоскость управления и плоскость данных.

Плоскость данных

Плоскость данных – это компонент обработки данных сетки сервисов. Он включает в себя все прокси-серверы Sidecar и их функции. Когда сервис хочет связаться с другим сервисом, прокси-сервер Sidecar выполняет следующие действия:

  1. Sidecar перехватывает запрос
  2. Он инкапсулирует запрос в отдельное сетевое соединение
  3. Он устанавливает безопасный и зашифрованный канал между исходными и целевыми прокси-серверами

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

Плоскость управления

Плоскость управления выступает в качестве центрального уровня управления и настройки сетки сервисов.

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

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

Реализации сетки сервисов обычно включают в себя следующие возможности на уровне управления:

  • Реестр сервисов, который отслеживает все сервисы в сети
  • Автоматическое обнаружение новых сервисов и удаление неактивных
  • Сбор и агрегирование телеметрических данных, таких как метрики, журналы и распределенная информация о трассировке

 

Что такое Istio?

Istio – это проект сеток сервисов с открытым исходным кодом, предназначенный в основном для работы с Kubernetes. Kubernetes – платформа для оркестрации контейнеров с открытым исходным кодом, позволяющая развертывать контейнерные приложения и управлять ими в любом масштабе.

Компоненты панели управления Istio функционируют как самостоятельные рабочие нагрузки Kubernetes. В качестве основы для создания прокси Sidecar используется Kubernetes Pod – тесно связанный набор контейнеров с одним IP-адресом.

Прокси-сервер Istio уровня 7 работает как другой контейнер в том же сетевом контексте, что и основной сервис. С этой позиции он может перехватывать, проверять и управлять всем сетевым трафиком, проходящим через модуль. Тем не менее, основной контейнер не нуждается в изменениях или даже знании того, что это происходит.

Подробнее о Kubernetes »

В чем заключаются проблемы внедрения сеток сервисов с открытым исходным кодом?

Вот некоторые распространенные проблемы сетки сервисов, связанные с платформами с открытым исходным кодом, такими как Istio, Linkerd и Consul.

Сложность

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

Операционные накладные расходы

Сетки сервисов сопряжены с дополнительными накладными расходами на развертывание, управление и мониторинг прокси-серверов плоскости данных и компонентов плоскости управления. Например, вам нужно сделать следующее:

  • Обеспечьте высокую доступность и масштабируемость инфраструктуры сетки сервисов
  • Отслеживайте состояние и производительность своих прокси-серверов
  • Решайте проблемы с обновлениями и совместимостью

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

Проблемы интеграции

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

Обеспечить совместимость и плавную интеграцию с другими компонентами в сложных и разнообразных средах бывает непросто. Для изменения API, форматов конфигурации и зависимостей требуется постоянное планирование и тестирование. То же самое касается и необходимости перехода на новые версии в любом месте стека.

Как AWS обеспечивает соответствие вашим требованиям к сетке сервисов?

AWS App Mesh – это полностью управляемая и высокодоступная сетка сервисов от Amazon Web Service (AWS). App Mesh – это новая технология, которая упрощает мониторинг, контроль и отладку взаимодействия между сервисами.

App Mesh использует Envoy, прокси‑сервер с открытым исходным кодом для сети сервисов, развертывая его рядом с контейнерами микросервисов. Это решение можно использовать с контейнерами микросервисов, которыми управляют Эластичный контейнерный сервис Amazon (Amazon ECS), Эластичный сервис Amazon Kubernetes (Amazon EKS), AWS Fargate и Kubernetes на AWS. Его также можно использовать с сервисами в Эластичном вычислительном облаке Amazon (Amazon EC2).

Создайте аккаунт уже сегодня и начните работу с сеткой сервисов AWS.

AWS: дальнейшие шаги

Зарегистрировать бесплатный аккаунт

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

Регистрация 
Начать разработку в консоли

Начните разработку в Консоли управления AWS.

Вход