HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: микросервисы, паттерны, архитектура по, архитектурные шаблоны</p>
1 <p>Теги: микросервисы, паттерны, архитектура по, архитектурные шаблоны</p>
2 <p>В списке архитектурных шаблонов по коммуникации микросервисов представлены способы обеспечения внешних взаимодействий. Речь идет о взаимодействиях микросервисов с удаленными сервисами, клиентскими приложениями и т. п.</p>
2 <p>В списке архитектурных шаблонов по коммуникации микросервисов представлены способы обеспечения внешних взаимодействий. Речь идет о взаимодействиях микросервисов с удаленными сервисами, клиентскими приложениями и т. п.</p>
3 <h2>API Gateway</h2>
3 <h2>API Gateway</h2>
4 <p>Как известно, самый очевидный вариант обращения к микросервисам заключается в прямом обращении от клиента к сервису, причем такое решение вполне себя оправдывает в небольших проектах. Однако когда разговор заходит о приложениях корпоративного масштаба, где существует большое количество микросервисов, то тут пригодится шаблон API Gateway ("<strong>API-шлюз</strong>").</p>
4 <p>Как известно, самый очевидный вариант обращения к микросервисам заключается в прямом обращении от клиента к сервису, причем такое решение вполне себя оправдывает в небольших проектах. Однако когда разговор заходит о приложениях корпоративного масштаба, где существует большое количество микросервисов, то тут пригодится шаблон API Gateway ("<strong>API-шлюз</strong>").</p>
5 <p>Данный паттерн основывается на использовании шлюза, находящегося между микросервисами и клиентским приложением. Таким образом обеспечивается единая точка входа для клиента.</p>
5 <p>Данный паттерн основывается на использовании шлюза, находящегося между микросервисами и клиентским приложением. Таким образом обеспечивается единая точка входа для клиента.</p>
6 <p>С учетом конкретной цели применения этого шаблона, разделяют ряд его разновидностей:</p>
6 <p>С учетом конкретной цели применения этого шаблона, разделяют ряд его разновидностей:</p>
7 <ol><li><strong>Gateway Routing</strong>. В этой ситуации шлюз применяется в качестве обратного Proxy, который перенаправляет запросы клиента на определенный сервис.</li>
7 <ol><li><strong>Gateway Routing</strong>. В этой ситуации шлюз применяется в качестве обратного Proxy, который перенаправляет запросы клиента на определенный сервис.</li>
8 <li><strong>Gateway Offloading</strong>. Этот шлюз решает сквозные задачи, являющиеся общими для таких сервисов, как авторизация, аутентификация, SSL, ведение журналов и т. д.</li>
8 <li><strong>Gateway Offloading</strong>. Этот шлюз решает сквозные задачи, являющиеся общими для таких сервисов, как авторизация, аутентификация, SSL, ведение журналов и т. д.</li>
9 <li><strong>Gateway Aggregation</strong>. Шлюз применяется в целях разветвления запроса клиента на несколько микросервисов с последующим возвращением агрегированных ответов клиенту.</li>
9 <li><strong>Gateway Aggregation</strong>. Шлюз применяется в целях разветвления запроса клиента на несколько микросервисов с последующим возвращением агрегированных ответов клиенту.</li>
10 </ol><p>Использование паттерна<strong>API Gateway</strong>сокращает количество вызовов, что обеспечивает независимость клиента от протоколов, которые применяются в сервисах: AMQP, gRPC, REST и т. д. Таким образом обеспечивается централизованное управление сквозной функциональностью. Но тут следует понимать, что шлюз способен стать единой точкой отказа, то есть он требует тщательного мониторинга. К тому же, в случае отсутствия масштабирования шлюз нередко бывает узким местом системы.</p>
10 </ol><p>Использование паттерна<strong>API Gateway</strong>сокращает количество вызовов, что обеспечивает независимость клиента от протоколов, которые применяются в сервисах: AMQP, gRPC, REST и т. д. Таким образом обеспечивается централизованное управление сквозной функциональностью. Но тут следует понимать, что шлюз способен стать единой точкой отказа, то есть он требует тщательного мониторинга. К тому же, в случае отсутствия масштабирования шлюз нередко бывает узким местом системы.</p>
11 <h2>Backends for Frontends</h2>
11 <h2>Backends for Frontends</h2>
12 <p>Паттерн "<strong>Бэкенды для фронтендов</strong>" (BFF) -- это, по сути, другой способ реализации шаблона API Gateway. Он тоже обеспечивает дополнительный уровень между клиентами и микросервисами с той лишь разницей, что вместо одной точки входа он вводит несколько шлюзов для каждого типа клиента: Mobile, Web, Desktop и пр.</p>
12 <p>Паттерн "<strong>Бэкенды для фронтендов</strong>" (BFF) -- это, по сути, другой способ реализации шаблона API Gateway. Он тоже обеспечивает дополнительный уровень между клиентами и микросервисами с той лишь разницей, что вместо одной точки входа он вводит несколько шлюзов для каждого типа клиента: Mobile, Web, Desktop и пр.</p>
13 <p>Посредством этого паттерна появляется возможность добавлять API, адаптированные к потребностям практически каждого клиента, то есть мы избавляемся от необходимости хранения большого числа ненужных настроек в одном месте. Однако этот шаблон не стоит использовать в случаях, когда различия в требованиях к API у разных клиентских типов незначительны или программное приложение является небольшим само по себе -- вы получите неоправданное дублирование кода и увеличение числа компонентов.</p>
13 <p>Посредством этого паттерна появляется возможность добавлять API, адаптированные к потребностям практически каждого клиента, то есть мы избавляемся от необходимости хранения большого числа ненужных настроек в одном месте. Однако этот шаблон не стоит использовать в случаях, когда различия в требованиях к API у разных клиентских типов незначительны или программное приложение является небольшим само по себе -- вы получите неоправданное дублирование кода и увеличение числа компонентов.</p>
14 <p><em>По материалам https://mcs.mail.ru/blog/.</em></p>
14 <p><em>По материалам https://mcs.mail.ru/blog/.</em></p>
15  
15