Вы работаете в крупной компании, которая строит систему на основе микросервисной архитектуры. Вам как DevOps-специалисту необходимо выдвинуть предложение по организации инфраструктуры для разработки и эксплуатации.
Предложите решение для обеспечения развёртывания, запуска и управления приложениями. Решение может состоять из одного или нескольких программных продуктов и должно описывать способы и принципы их взаимодействия.
Решение должно соответствовать следующим требованиям:
- поддержка контейнеров;
- обеспечивать обнаружение сервисов и маршрутизацию запросов;
- обеспечивать возможность горизонтального масштабирования;
- обеспечивать возможность автоматического масштабирования;
- обеспечивать явное разделение ресурсов, доступных извне и внутри системы;
- обеспечивать возможность конфигурировать приложения с помощью переменных среды, в том числе с возможностью безопасного хранения чувствительных данных таких как пароли, ключи доступа, ключи шифрования и т. п.
Обоснуйте свой выбор.
Docker Swarm | Kubernetes | |
---|---|---|
поддержка контейнеров | + | + |
обеспечивать обнаружение сервисов и маршрутизацию запросов | + | + |
обеспечивать возможность горизонтального масштабирования | + | + |
обеспечивать возможность автоматического масштабирования | - | + |
обеспечивать явное разделение ресурсов, доступных извне и внутри системы | + | + |
обеспечивать возможность конфигурировать приложения с помощью переменных среды, секреты | + | + |
Чаще всего выбирают Kubernetes, хоть он и сложнее со всех точек зрения. Но локально его развернуть сложно, обычно пользуются упрощенной версией, либо docker-ом. Для корпоративных версий используют продвинутый Kubernetes - OpenShift. Сам не практиковал, но девопс инженеры не всегда за одну итерацию приходят к Kubernetes. Бывает через стек других технологий прогоняют проекты компании, а после успеха уже следующей итерацией готовятся к Kubernetes. Даже 12 факторо не всегда достаточно, чтобы перейти на Kubernetes, есть свои нюансы и дополнительные контракты.
Разработчикам вашей компании понадобился распределённый кеш для организации хранения временной информации по сессиям пользователей. Вам необходимо построить Redis Cluster, состоящий из трёх шард с тремя репликами.