Сервис App Mesh упрощает запуск сервисов, обеспечивая каждому из них единообразное представление и средства управления сетевым трафиком. App Mesh изолирует логику, необходимую для мониторинга взаимодействия между сервисами и управления этим взаимодействием, в рамках прокси‑серверов, которые работают рядом с каждым сервисом. Как следствие, для изменения способов сбора данных мониторинга или маршрутизации трафика больше не требуется согласовывать действия между подразделениями или обновлять код приложения. Все это позволяет быстро и точно определять местонахождение ошибок и автоматически перенаправлять сетевой трафик при возникновении сбоев или при развертывании изменений в коде.
Для эффективного запуска сервисов в любом масштабе можно использовать App Mesh вместе с AWS Fargate, Amazon ECS, Amazon EKS, Amazon EC2 и Kubernetes на EC2. Сервис App Mesh использует Envoy – прокси‑сервер с открытым исходным кодом, совместимый со многими инструментами для мониторинга сервисов с открытым исходным кодом и аналогичными решениями от партнеров AWS.
Прокси‑сервер с открытым исходным кодом
Для управления входящим и исходящим трафиком сервисов, работающих в контейнерах, в App Mesh используется прокси‑сервер Envoy с открытым исходным кодом. App Mesh настраивает этот прокси‑сервер для автоматической обработки всех связей приложения сервиса. Сообщество программистов постоянно разрабатывает решения для интеграции с прокси‑сервером Envoy; их также можно использовать в сервисе App Mesh.
Совместимые сервисы AWS
Amazon CloudWatch* – сервис для мониторинга и ведения журналов, обеспечивающий полное наглядное представление ресурсов и приложений.
AWS X‑Ray* – сервис отслеживания для комплексной оценки производительности приложений.
Совместимые инструменты с открытым исходным кодом и решения от партнеров AWS:
Datadog, Alcide, Hashicorp, Sysdig, Signalfx, Spotinst, Tetrate, Neuvector, Weaveworks, Twistlock, Wavefront от VMware, Aqua.
Маршрутизация трафика
App Mesh позволяет настраивать сервисы таким образом, чтобы они подключались непосредственно друг к другу, и отказаться от использования кода для выполнения запросов в самих приложениях или внешних балансировщиков нагрузки. При запуске сервисов их прокси‑серверы подключаются к App Mesh и получают данные конфигурации о расположении других сервисов в сети. Вы можете использовать элементы управления в App Mesh для динамического обновления маршрутизации трафика между сервисами, не изменяя код приложения.
Политики трафика на стороне клиента
Прокси-серверы автоматически загружают трафик балансировки от всех клиентов в сети, а также добавляют и удаляют конечные точки балансировки нагрузки на основе проверок работоспособности и регистрации службы. Такие возможности упрощают развертывание новых версий сервисов и помогают настраивать приложения для обеспечения отказоустойчивости.
Аутентификация между сервисами
Протокол Mutual TLS обеспечивает аутентификацию на транспортном уровне, которая обеспечивает проверку идентичности между сервисами для компонентов приложения, работающих как в сервисных сетях, так и за их пределами. Протокол позволяет клиентам расширить периметр безопасности для приложений, работающих в AWS App Mesh, предоставив сертификаты от частного центра сертификации AWS Certificate Manager или центра сертификации, управляемого клиентом, для рабочих нагрузок в сервисной сети, а также для обеспечения автоматической аутентификации для клиентских приложений с сервисным подключением.
Оркестрация контейнеров внутренним пользователем
App Mesh работает с сервисами под управлением Amazon ECS, Amazon EKS, AWS Fargate, Kubernetes на EC2. Для контейнерных рабочих нагрузок, выполняемых в ECS, EKS, Fargate или Kubernetes, предоставленный прокси‑сервер App Mesh нужно добавить к каждому микросервису как часть определения задания или пода, а затем настроить контейнер приложения сервиса таким образом, чтобы все взаимодействие выполнялось через этот прокси‑сервер. При запуске сервиса App Mesh автоматически регистрирует и настраивает соответствующий прокси‑сервер.
Полностью управляемый сервис
AWS App Mesh представляет собой управляемый сервис с высокой доступностью. Он позволяет управлять взаимодействием сервисов, не устанавливая инфраструктуру управления связями на уровне приложений и не заботясь об управлении таковой.