HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>8 окт 2024</li>
2 <ul><li>8 окт 2024</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Прокачиваем микросервисы и властвуем над сетевым трафиком.</p>
4 </ul><p>Прокачиваем микросервисы и властвуем над сетевым трафиком.</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6 <p>Пишет о сетях, инструментах для разработчиков и языках программирования. Любит готовить, играть в инди‑игры и программировать на Python.</p>
6 <p>Пишет о сетях, инструментах для разработчиков и языках программирования. Любит готовить, играть в инди‑игры и программировать на Python.</p>
7 <p>Envoy - это современный инструмент для работы с микросервисной архитектурой. Он управляет сетевыми взаимодействиями между микросервисами и служит промежуточным слоем между клиентами и сервисами, обеспечивая гибкость и масштабируемость приложений.</p>
7 <p>Envoy - это современный инструмент для работы с микросервисной архитектурой. Он управляет сетевыми взаимодействиями между микросервисами и служит промежуточным слоем между клиентами и сервисами, обеспечивая гибкость и масштабируемость приложений.</p>
8 <p>Представьте большой ресторан с множеством кухонь (микросервисов), каждая из которых готовит уникальные блюда. В этом случае Envoy - метрдотель, принимающий заказы от клиентов и направляющий их на соответствующие кухни. Он управляет потоком заказов и обеспечивает быструю и безопасную "доставку" блюд к столам клиентов.</p>
8 <p>Представьте большой ресторан с множеством кухонь (микросервисов), каждая из которых готовит уникальные блюда. В этом случае Envoy - метрдотель, принимающий заказы от клиентов и направляющий их на соответствующие кухни. Он управляет потоком заказов и обеспечивает быструю и безопасную "доставку" блюд к столам клиентов.</p>
9 <p>В статье мы подробно поговорим об Envoy: рассмотрим его назначение, архитектуру, функции и взаимодействие с другими инструментами.</p>
9 <p>В статье мы подробно поговорим об Envoy: рассмотрим его назначение, архитектуру, функции и взаимодействие с другими инструментами.</p>
10 <p><strong>Содержание</strong></p>
10 <p><strong>Содержание</strong></p>
11 <ul><li><a>Зачем нужен Envoy</a></li>
11 <ul><li><a>Зачем нужен Envoy</a></li>
12 <li><a>Как он работает</a></li>
12 <li><a>Как он работает</a></li>
13 <li><a>Как взаимодействует с другими инструментами</a></li>
13 <li><a>Как взаимодействует с другими инструментами</a></li>
14 <li><a>Подборка ресурсов для изучения Envoy Proxy</a></li>
14 <li><a>Подборка ресурсов для изучения Envoy Proxy</a></li>
15 </ul><p>Если вы только начинаете знакомиться с устройством приложений, рекомендуем перед изучением Envoy прочитать<a>статью о микросервисной архитектуре</a>. Она познакомит вас с терминологией, особенностями подхода, его структурой и отличиями от монолитной архитектуры.</p>
15 </ul><p>Если вы только начинаете знакомиться с устройством приложений, рекомендуем перед изучением Envoy прочитать<a>статью о микросервисной архитектуре</a>. Она познакомит вас с терминологией, особенностями подхода, его структурой и отличиями от монолитной архитектуры.</p>
16 <em>Инфографика: Оля Ежак для Skillbox Media</em><p>Envoy решает ключевые проблемы микросервисной архитектуры - он обеспечивает эффективную маршрутизацию, балансировку нагрузки, повышение безопасности, а также мониторинг и трассировку запросов.</p>
16 <em>Инфографика: Оля Ежак для Skillbox Media</em><p>Envoy решает ключевые проблемы микросервисной архитектуры - он обеспечивает эффективную маршрутизацию, балансировку нагрузки, повышение безопасности, а также мониторинг и трассировку запросов.</p>
17 <p><strong>Маршрутизация запросов.</strong>В микросервисной архитектуре приложения состоят из множества небольших сервисов, которые совместно работают над общей задачей. Когда пользователи отправляют запросы, важно направлять их к нужным сервисам. С ростом приложения увеличивается количество подключённых микросервисов и маршрутизация усложняется.</p>
17 <p><strong>Маршрутизация запросов.</strong>В микросервисной архитектуре приложения состоят из множества небольших сервисов, которые совместно работают над общей задачей. Когда пользователи отправляют запросы, важно направлять их к нужным сервисам. С ростом приложения увеличивается количество подключённых микросервисов и маршрутизация усложняется.</p>
18 <p>Envoy позволяет гибко настраивать правила маршрутизации запросов по различным параметрам: загруженности, версии сервиса, типу данных и другим критериям. Эта функциональность упрощает взаимодействие между микросервисами и повышает адаптивность системы.</p>
18 <p>Envoy позволяет гибко настраивать правила маршрутизации запросов по различным параметрам: загруженности, версии сервиса, типу данных и другим критериям. Эта функциональность упрощает взаимодействие между микросервисами и повышает адаптивность системы.</p>
19 <p>Возьмём интернет-магазин, запускающий новую версию каталога товаров. С помощью Envoy вы можете разделить трафик: направить большинство пользователей к старому каталогу, а доступ к новой версии предоставить только сотрудникам и тестировщикам. Такой подход обеспечит стабильную работу интернет-магазина и безопасное тестирование обновлений.</p>
19 <p>Возьмём интернет-магазин, запускающий новую версию каталога товаров. С помощью Envoy вы можете разделить трафик: направить большинство пользователей к старому каталогу, а доступ к новой версии предоставить только сотрудникам и тестировщикам. Такой подход обеспечит стабильную работу интернет-магазина и безопасное тестирование обновлений.</p>
20 <p><strong>Балансировка нагрузки.</strong>В микросервисной архитектуре приложения часто включают несколько экземпляров одного сервиса, работающих параллельно для повышения производительности. Однако при большом количестве запросов может возникнуть проблема: некоторые серверы могут быть перегружены, в то время как другие остаются свободными. Такой дисбаланс может привести к задержкам и сбоям в работе приложения.</p>
20 <p><strong>Балансировка нагрузки.</strong>В микросервисной архитектуре приложения часто включают несколько экземпляров одного сервиса, работающих параллельно для повышения производительности. Однако при большом количестве запросов может возникнуть проблема: некоторые серверы могут быть перегружены, в то время как другие остаются свободными. Такой дисбаланс может привести к задержкам и сбоям в работе приложения.</p>
21 <p>Envoy равномерно распределяет запросы между доступными экземплярами сервисов. Он автоматически направляет трафик к менее загруженным серверам, предотвращая ситуации, когда одни серверы перегружены, а другие простаивают. Благодаря этому обеспечивается оптимальное использование ресурсов и стабильная работа всей системы.</p>
21 <p>Envoy равномерно распределяет запросы между доступными экземплярами сервисов. Он автоматически направляет трафик к менее загруженным серверам, предотвращая ситуации, когда одни серверы перегружены, а другие простаивают. Благодаря этому обеспечивается оптимальное использование ресурсов и стабильная работа всей системы.</p>
22 <p>Представьте популярную онлайн-игру, где тысячи пользователей могут одновременно подключиться к одной сессии. Чтобы избежать задержек, Envoy следит за распределением запросов: когда один сервер загружен, он направляет новые подключения на менее загруженные. Так игроки получают бесперебойный доступ даже в периоды пиковой активности.</p>
22 <p>Представьте популярную онлайн-игру, где тысячи пользователей могут одновременно подключиться к одной сессии. Чтобы избежать задержек, Envoy следит за распределением запросов: когда один сервер загружен, он направляет новые подключения на менее загруженные. Так игроки получают бесперебойный доступ даже в периоды пиковой активности.</p>
23 <p><strong>Безопасность.</strong>В микросервисной архитектуре многие приложения обрабатывают конфиденциальные данные пользователей: номера карт, адреса, телефоны и другую личную информацию. Однако передача этих данных между сервисами создаёт риск их перехвата злоумышленниками.</p>
23 <p><strong>Безопасность.</strong>В микросервисной архитектуре многие приложения обрабатывают конфиденциальные данные пользователей: номера карт, адреса, телефоны и другую личную информацию. Однако передача этих данных между сервисами создаёт риск их перехвата злоумышленниками.</p>
24 <p>Envoy применяет шифрование и аутентификацию для защиты информации от несанкционированного доступа при передаче. Например, он шифрует данные кредитных карт клиентов при их отправке от веб-сервера к платёжному процессору. Поэтому, даже если злоумышленник перехватит эти данные, он не сможет их расшифровать и использовать.</p>
24 <p>Envoy применяет шифрование и аутентификацию для защиты информации от несанкционированного доступа при передаче. Например, он шифрует данные кредитных карт клиентов при их отправке от веб-сервера к платёжному процессору. Поэтому, даже если злоумышленник перехватит эти данные, он не сможет их расшифровать и использовать.</p>
25 <p><strong>Мониторинг и трассировка.</strong>В микросервисной архитектуре некоторые сервисы могут периодически давать сбой и вызывать задержки. В больших приложениях бывает сложно быстро определить проблемный микросервис.</p>
25 <p><strong>Мониторинг и трассировка.</strong>В микросервисной архитектуре некоторые сервисы могут периодически давать сбой и вызывать задержки. В больших приложениях бывает сложно быстро определить проблемный микросервис.</p>
26 <p>Envoy предоставляет инструменты для мониторинга и трассировки производительности сервисов. С их помощью разработчики могут отслеживать, как запросы проходят через систему и где могут возникнуть узкие места. Например, если пользователи жалуются на медленную загрузку веб-страницы, Envoy может показать, какие сервисы обрабатывают запросы и сколько времени это занимает. Если один из сервисов работает медленно, разработчики смогут сразу его выявить и принять меры.</p>
26 <p>Envoy предоставляет инструменты для мониторинга и трассировки производительности сервисов. С их помощью разработчики могут отслеживать, как запросы проходят через систему и где могут возникнуть узкие места. Например, если пользователи жалуются на медленную загрузку веб-страницы, Envoy может показать, какие сервисы обрабатывают запросы и сколько времени это занимает. Если один из сервисов работает медленно, разработчики смогут сразу его выявить и принять меры.</p>
27 <p>Envoy обладает модульной архитектурой, которую легко настраивать и расширять. Разработчики могут добавлять или модифицировать компоненты Envoy, адаптируя его под нужды своего приложения.</p>
27 <p>Envoy обладает модульной архитектурой, которую легко настраивать и расширять. Разработчики могут добавлять или модифицировать компоненты Envoy, адаптируя его под нужды своего приложения.</p>
28 <p>Допустим, вы разрабатываете банковский онлайн-сервис. На начальном этапе вам необходимы базовая маршрутизация запросов и балансировка нагрузки. Однако по мере роста приложения возникает потребность в аутентификации пользователей и мониторинге производительности. Модульная архитектура Envoy позволяет легко внедрять новые фильтры для аутентификации и инструменты сбора метрик, не переписывая всю систему. А позже вы сможете также просто добавлять новые функции.</p>
28 <p>Допустим, вы разрабатываете банковский онлайн-сервис. На начальном этапе вам необходимы базовая маршрутизация запросов и балансировка нагрузки. Однако по мере роста приложения возникает потребность в аутентификации пользователей и мониторинге производительности. Модульная архитектура Envoy позволяет легко внедрять новые фильтры для аутентификации и инструменты сбора метрик, не переписывая всю систему. А позже вы сможете также просто добавлять новые функции.</p>
29 <p>Подобную гибкость обеспечивают несколько ключевых компонентов:</p>
29 <p>Подобную гибкость обеспечивают несколько ключевых компонентов:</p>
30 <ul><li><strong>Listeners (прослушиватели).</strong>Это точки входа, через которые Envoy получает запросы. Например, один прослушиватель может обрабатывать<a>HTTP-трафик</a>, а другой -<a>TCP-соединения</a>.</li>
30 <ul><li><strong>Listeners (прослушиватели).</strong>Это точки входа, через которые Envoy получает запросы. Например, один прослушиватель может обрабатывать<a>HTTP-трафик</a>, а другой -<a>TCP-соединения</a>.</li>
31 <li><strong>Routes (маршруты).</strong>После получения запроса Envoy определяет, куда его направить. Если запрос поступает на URL /api/products, то Envoy может направить его к сервису, обрабатывающему данные о товарах.</li>
31 <li><strong>Routes (маршруты).</strong>После получения запроса Envoy определяет, куда его направить. Если запрос поступает на URL /api/products, то Envoy может направить его к сервису, обрабатывающему данные о товарах.</li>
32 <li><strong>Clusters (кластеры).</strong>Envoy объединяет экземпляры сервисов в кластеры. Например, у вас может быть кластер из трёх серверов, обрабатывающих запросы к каталогу товаров. Envoy распределяет запросы между этими серверами и предотвращает их перегрузку.</li>
32 <li><strong>Clusters (кластеры).</strong>Envoy объединяет экземпляры сервисов в кластеры. Например, у вас может быть кластер из трёх серверов, обрабатывающих запросы к каталогу товаров. Envoy распределяет запросы между этими серверами и предотвращает их перегрузку.</li>
33 <li><strong>Filters (фильтры).</strong>Envoy позволяет добавлять фильтры для обработки запросов и ответов на различных этапах прохождения трафика. С помощью фильтров можно реализовать аутентификацию пользователей или шифрование данных перед их отправкой.</li>
33 <li><strong>Filters (фильтры).</strong>Envoy позволяет добавлять фильтры для обработки запросов и ответов на различных этапах прохождения трафика. С помощью фильтров можно реализовать аутентификацию пользователей или шифрование данных перед их отправкой.</li>
34 </ul><p>Рассмотрим, как компоненты архитектуры Envoy взаимодействуют между собой на примере оформления заказа в интернет-магазине. Когда покупатель нажимает кнопку "Купить", формируется запрос к серверу.</p>
34 </ul><p>Рассмотрим, как компоненты архитектуры Envoy взаимодействуют между собой на примере оформления заказа в интернет-магазине. Когда покупатель нажимает кнопку "Купить", формируется запрос к серверу.</p>
35 <p>Envoy принимает запрос через прослушиватель (listener) и направляет его к сервису обработки заказов с помощью маршрутов (routes).</p>
35 <p>Envoy принимает запрос через прослушиватель (listener) и направляет его к сервису обработки заказов с помощью маршрутов (routes).</p>
36 <p>Запрос попадает в кластер серверов (clusters), ответственных за обработку заказов. На этом этапе в интернет-магазине могут быть активированы различные фильтры (filters). Например, фильтр аутентификации проверяет учётные данные пользователя и после передаёт запрос на обработку.</p>
36 <p>Запрос попадает в кластер серверов (clusters), ответственных за обработку заказов. На этом этапе в интернет-магазине могут быть активированы различные фильтры (filters). Например, фильтр аутентификации проверяет учётные данные пользователя и после передаёт запрос на обработку.</p>
37 <p>Если в процессе обработки один из серверов окажется перегруженным, Envoy автоматически перенаправит запросы к другим серверам в кластере. Это обеспечивает быструю и надёжную обработку заказа для пользователя.</p>
37 <p>Если в процессе обработки один из серверов окажется перегруженным, Envoy автоматически перенаправит запросы к другим серверам в кластере. Это обеспечивает быструю и надёжную обработку заказа для пользователя.</p>
38 <p>Envoy интегрируется с множеством инструментов, которые помогают оптимизировать управление микросервисами. Разберём основные из них.</p>
38 <p>Envoy интегрируется с множеством инструментов, которые помогают оптимизировать управление микросервисами. Разберём основные из них.</p>
39 <p><strong>Контейнерные оркестраторы.</strong>Инструменты вроде<a>Kubernetes</a>управляют развёртыванием и масштабированием контейнеризованных приложений. Envoy интегрируется с Kubernetes в качестве посредника между клиентами и сервисами, отвечая за маршрутизацию трафика и балансировку нагрузки.</p>
39 <p><strong>Контейнерные оркестраторы.</strong>Инструменты вроде<a>Kubernetes</a>управляют развёртыванием и масштабированием контейнеризованных приложений. Envoy интегрируется с Kubernetes в качестве посредника между клиентами и сервисами, отвечая за маршрутизацию трафика и балансировку нагрузки.</p>
40 <p><strong>Сервисные сетевые платформы.</strong> Такие платформы, как<a>Istio</a>, управляют сетевым трафиком и обеспечивают безопасность микросервисной архитектуры. В этой экосистеме Envoy выполняет маршрутизацию запросов и контролирует взаимодействие между сервисами. На нём также аутентификация, авторизация и мониторинг.</p>
40 <p><strong>Сервисные сетевые платформы.</strong> Такие платформы, как<a>Istio</a>, управляют сетевым трафиком и обеспечивают безопасность микросервисной архитектуры. В этой экосистеме Envoy выполняет маршрутизацию запросов и контролирует взаимодействие между сервисами. На нём также аутентификация, авторизация и мониторинг.</p>
41 <p><strong>Инструменты мониторинга</strong>отслеживают производительность приложений и интегрируются с Envoy для сбора метрик. Например, можно подключить сервисы<a>Prometheus</a>и <a>Grafana</a>: первый соберёт данные о работе Envoy, а второй преобразует их в наглядные графики состояния сервисов.</p>
41 <p><strong>Инструменты мониторинга</strong>отслеживают производительность приложений и интегрируются с Envoy для сбора метрик. Например, можно подключить сервисы<a>Prometheus</a>и <a>Grafana</a>: первый соберёт данные о работе Envoy, а второй преобразует их в наглядные графики состояния сервисов.</p>
42 <p><strong>Системы аутентификации</strong>в сочетании с Envoy защищают приложение от несанкционированного доступа и обеспечивают безопасность данных. Например, интеграция с <a>OAuth</a>и <a>OpenID Connect</a>позволяет проверять личность пользователей и контролировать их доступ к ресурсам.</p>
42 <p><strong>Системы аутентификации</strong>в сочетании с Envoy защищают приложение от несанкционированного доступа и обеспечивают безопасность данных. Например, интеграция с <a>OAuth</a>и <a>OpenID Connect</a>позволяет проверять личность пользователей и контролировать их доступ к ресурсам.</p>
43 <p><strong>Инструменты для логирования</strong>собирают и анализируют записи о событиях, происходящих в приложении. Эти данные позволяют отслеживать работу системы, обнаруживать ошибки и понимать, как пользователи взаимодействуют с приложением. Envoy может интегрироваться с инструментами<a>ELK Stack</a>, которые преобразуют логи в наглядную информацию о функционировании системы.</p>
43 <p><strong>Инструменты для логирования</strong>собирают и анализируют записи о событиях, происходящих в приложении. Эти данные позволяют отслеживать работу системы, обнаруживать ошибки и понимать, как пользователи взаимодействуют с приложением. Envoy может интегрироваться с инструментами<a>ELK Stack</a>, которые преобразуют логи в наглядную информацию о функционировании системы.</p>
44 <a>Научитесь: Профессия DevOps-инженер Узнать больше</a>
44 <a>Научитесь: Профессия DevOps-инженер Узнать больше</a>