Выполнение домашнего задания по теме "11.4. Микросервисы: масштабирование"
Q/A
Вы работаете в крупной компанию, которая строит систему на основе микросервисной архитектуры. Вам как DevOps специалисту необходимо выдвинуть предложение по организации инфраструктуры, для разработки и эксплуатации.
Задание 1
Кластеризация
Предложите решение для обеспечения развертывания, запуска и управления приложениями. Решение может состоять из одного или нескольких программных продуктов и должно описывать способы и принципы их взаимодействия.
Решение должно соответствовать следующим требованиям:
- Поддержка контейнеров;
- Обеспечивать обнаружение сервисов и маршрутизацию запросов;
- Обеспечивать возможность горизонтального масштабирования;
- Обеспечивать возможность автоматического масштабирования;
- Обеспечивать явное разделение ресурсов доступных извне и внутри системы;
- Обеспечивать возможность конфигурировать приложения с помощью переменных среды, в том числе с возможностью безопасного хранения чувствительных данных таких как пароли, ключи доступа, ключи шифрования и т.п.
Обоснуйте свой выбор.
В данном случае kubernetes будет самым очевидным выбором. Эта система целиком и полностью основана на запуске контейнеров
и поддерживает autodiscovery запущенных контейнеров. Здесь есть горизонтальное масштабирование путём указания количества реплик контейнера,
которые должны быть запущены. Так же в рамках горизонтального масштабирование поддерживается различные методы балансировки запросов.
Автоматическое масштабирование можно настроить путём подключения метрик prometheus и настройки предельных значений.
Явное разделение реализовано путём "проброса" портов, как это реализовано в docker.
А так же контейнеры без проблем конфигурируются через переменные окружения или dotenv-файлы.