Выполнение домашнего задания по теме "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, возможно только за счёт увеличения ресурсов для кластера.