Files
netology-devops/src/homework/11-microservices/11.2

Выполнение домашнего задания по теме "11.2. Микросервисы: принципы"

Q/A

Задание 1

Предложите решение для обеспечения реализации API Gateway. Составьте сравнительную таблицу возможностей различных программных решений. На основе таблицы сделайте выбор решения.

Решение должно соответствовать следующим требованиям:

  • Маршрутизация запросов к нужному сервису на основе конфигурации
  • Возможность проверки аутентификационной информации в запросах
  • Обеспечение терминации HTTPS
Решение Маршрутизация Проверка аутентификации Терминация HTTPS Конфигурация
nginx есть есть есть ссылка
haproxy есть есть есть ссылка
traefik есть есть есть нет готовых примеров в открытом доступе
kong есть есть есть ссылка

Таким образом, все стандартные решения, которые изначально используются в качестве web-сервисов, могут быть настроены в качестве api-gateway. Но есть специальные приложения, например kong, которые разработаны с учётом использования в качестве api-gateway. Таким образом, в выборе решения по заданным условиям лучше опираться на экспертизу внутри команды. В случае отсутствия экспертизы, скорее всего, стоит отдать предпочтение специализированному решению.

Задание 2

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

Решение должно соответствовать следующим требованиям:

  • Поддержка кластеризации для обеспечения надежности
  • Хранение сообщений на диске в процессе доставки
  • Высокая скорость работы
  • Поддержка различных форматов сообщений
  • Разделение прав доступа к различным потокам сообщений
  • Простота эксплуатации

Обоснуйте свой выбор.

Критерий \ Решение redis rabbitmq kafka
Поддержка кластеризации для обеспечения надежности да да да (изначально спроектирован под использование в кластере)
Хранение сообщений на диске в процессе доставки да да да
Высокая скорость работы ~42k req/s per node 38 Mb/s 605 MB/s
Поддержка различных форматов сообщений любое строковое сообщение любое строковое сообщение любое строковое сообщение
Разделение прав доступа к различным потокам сообщений нет да да
Простота эксплуатации простая настройка и эксплуатация средняя сложность эксплуатации, необходимость погружения в конфигурацию для настройки под high-load сложная настройка и эксплуатация

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