mirror of
https://github.com/Dannecron/netology-devops.git
synced 2025-12-25 23:32:37 +03:00
homework 11.3: complete homework
This commit is contained in:
@@ -54,3 +54,4 @@
|
||||
* [10.5. Sentry](/src/homework/10-monitoring/10.5)
|
||||
* [10.6. Инцидент-менеджмент](/src/homework/10-monitoring/10.6)
|
||||
* [11.1. Введение в микросервисы](/src/homework/11-microservices/11.1)
|
||||
* [11.2. Микросервисы: принципы](/src/homework/11-microservices/11.2)
|
||||
|
||||
58
src/homework/11-microservices/11.2/readme.md
Normal file
58
src/homework/11-microservices/11.2/readme.md
Normal file
@@ -0,0 +1,58 @@
|
||||
Выполнение [домашнего задания](https://github.com/netology-code/devkub-homeworks/blob/main/11-microservices-02-principles.md)
|
||||
по теме "11.2. Микросервисы: принципы"
|
||||
|
||||
## Q/A
|
||||
|
||||
### Задание 1
|
||||
|
||||
|
||||
> Предложите решение для обеспечения реализации API Gateway.
|
||||
> Составьте сравнительную таблицу возможностей различных программных решений. На основе таблицы сделайте выбор решения.
|
||||
>
|
||||
> Решение должно соответствовать следующим требованиям:
|
||||
> - Маршрутизация запросов к нужному сервису на основе конфигурации
|
||||
> - Возможность проверки аутентификационной информации в запросах
|
||||
> - Обеспечение терминации HTTPS
|
||||
|
||||
// todo
|
||||
|
||||
| Решение | Маршрутизация | Проверка аутентификации | Терминация HTTPS | Конфигурация |
|
||||
|------------------------------------------------|---------------|-------------------------|------------------|-------------------------------------------------------------------------------------|
|
||||
| [nginx](https://nginx.org/ru/) | есть | есть | есть | [ссылка](https://www.nginx.com/blog/deploying-nginx-plus-as-an-api-gateway-part-1/) |
|
||||
| [haproxy](http://www.haproxy.org/) | есть | есть | есть | [ссылка](https://www.haproxy.com/blog/using-haproxy-as-an-api-gateway-part-1/) |
|
||||
| [traefik](https://doc.traefik.io/traefik/) | есть | есть | есть | нет готовых примеров в открытом доступе |
|
||||
| [kong](https://docs.konghq.com/gateway/3.0.x/) | есть | есть | есть | [ссылка](https://konghq.com/blog/kong-gateway-tutorial) |
|
||||
|
||||
Таким образом, все стандартные решения, которые изначально используются в качестве web-сервисов, могут быть настроены в качестве api-gateway.
|
||||
Но есть специальные приложения, например `kong`, которые разработаны с учётом использования в качестве api-gateway.
|
||||
Таким образом, в выборе решения по заданным условиям лучше опираться на экспертизу внутри команды.
|
||||
В случае отсутствия экспертизы, скорее всего, стоит отдать предпочтение специализированному решению.
|
||||
|
||||
### Задание 2
|
||||
|
||||
|
||||
> Составьте таблицу возможностей различных брокеров сообщений.
|
||||
> На основе таблицы сделайте обоснованный выбор решения.
|
||||
>
|
||||
> Решение должно соответствовать следующим требованиям:
|
||||
> - Поддержка кластеризации для обеспечения надежности
|
||||
> - Хранение сообщений на диске в процессе доставки
|
||||
> - Высокая скорость работы
|
||||
> - Поддержка различных форматов сообщений
|
||||
> - Разделение прав доступа к различным потокам сообщений
|
||||
> - Простота эксплуатации
|
||||
>
|
||||
> Обоснуйте свой выбор.
|
||||
|
||||
| Критерий \ Решение | redis | rabbitmq | kafka |
|
||||
|-------------------------------------------------------|------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------|
|
||||
| Поддержка кластеризации для обеспечения надежности | [да](https://redis.io/docs/manual/scaling/) | [да](https://www.rabbitmq.com/clustering.html) | да (изначально спроектирован под использование в кластере) |
|
||||
| Хранение сообщений на диске в процессе доставки | [да](https://redis.io/docs/manual/persistence/) | [да](https://www.rabbitmq.com/persistence-conf.html) | [да](https://developer.ibm.com/articles/how-persistence-works-in-apache-kafka/) |
|
||||
| Высокая скорость работы | [~42k req/s per node](https://facsiaginsa.com/redis/comparing-redis-persistence-options) | [38 Mb/s](https://www.confluent.io/blog/kafka-fastest-messaging-system/) | [605 MB/s](https://www.confluent.io/blog/kafka-fastest-messaging-system/) |
|
||||
| Поддержка различных форматов сообщений | любое строковое сообщение | любое строковое сообщение | любое строковое сообщение |
|
||||
| Разделение прав доступа к различным потокам сообщений | нет | да | да |
|
||||
| Простота эксплуатации | простая настройка и эксплуатация | средняя сложность эксплуатации, необходимость погружения в конфигурацию для настройки под high-load | сложная настройка и эксплуатация |
|
||||
|
||||
Таким образом, если ожидается сильная нагрузка на брокеров сообщений, то `kafka` - оптимальный выбор, но придётся мириться
|
||||
с высокой сложностью конфигурации и эксплуатации. При отсутствии экспертизы возможно использовать `rabbitmq`,
|
||||
но добиться такой же производительности, что и `kafka`, возможно только за счёт увеличения ресурсов для кластера.
|
||||
Reference in New Issue
Block a user