В архитектуре микросервисов количество связанных с приложением микросервисов может быть достаточно большим. Обычно в таких случаях каждый сервис работает с несколькими экземплярами с кластерной конфигурацией — каждый экземпляр с отдельным процессом, реализованным в виде ВМ или контейнера. Количество процессов может во много раз превышать количество сервисов. Таким образом, общая топология может представлять собой сложную сеть, называемую сервисной сеткой (см. рисунок 7).
Рисунок 7 — Сервисная сетка для приложения, основанного на микросервисах
Для того чтобы приложение на основе микросервисов работало, и можно было пользоваться всеми его преимуществами, необходимо решить вопросы, связанные с сервисной сеткой:
а) управление трафиком:
1) точная балансировка нагрузки для конкретной версии микросервиса;
2) использование «синего»/«зеленого» методов развертывания для обновления микросервиса без остановки работы приложения;
3) ограниченный релиз;
4) автоматический размыкатель (см. 9.6);
б) обнаружение сервисов:
1) регистрация сервисов;
2) поиск сервисов;
в) тестирование:
1) внесение неисправностей;
г) безопасность:
1) аутентификация;
2) авторизация;
3) шифрование;
д) телеметрия:
1) интеграция функций протоколирования и трассировки;
2) интеграция метрик;
3) информационная панель.
В отношении управления сервисной сеткой существуют и другие подходы:
а) API;
б) среда сервисной сетки.
При подходе с использованием API разработчики приложений используют в своих программах определенный API для управления сервисной сеткой. Однако для этого разработчикам приходится тратить силы на реализацию нефункциональных требований в той же степени, как и функциональных, и в результате в код приложения включаются нефункциональные элементы реализации, что противоречит принципу разделения обязанностей в программировании и делает код более сложным и трудно модифицируемым. Примером API сервисной сетки является Eclipse Foundation API MicroProfile.
Среда сервисной сетки — это решение для инфраструктуры приложений, расположенное под уровнем приложений и над уровнем оркестрации, которое обрабатывает весь трафик между микросервисами. Эта среда управляет сервисной сеткой, контролируя проходящий трафик. Благодаря этому прикладная программа освобождается от реализации функциональных возможностей, необходимых для управления сервисной сеткой. Примеры реализаций среды сервисной сетки доступны по адресам: istio.io/ и linkerd.io/ [из 9.5 Сервисная сетка ГОСТ Р 70860—2023]