В настоящее время у меня есть традиционный процесс развертывания, который работает следующим образом:
- Есть много разных "функционалов". Каждая функциональность работает в своей среде, но существует межфункциональная связь.
- Существует хост-компьютер «Deployer», который загружает на него репозитории git и развертывает коды/активы на разных машинах ECS.
- «Развертчик» будет развертывать различные функции на разных машинах с помощью автоматизированного сценария bash.
- Bash-скрипт «Развертывание» может указать количество машин и какие машины должны быть развернуты для каждой функции.
- Для каждой функциональности существует файл конфигурации среды, и код функциональности на реальном компьютере будет ссылаться на него. Bash-скрипт «Deployer» развертывает один и тот же файл конфигурации на серверах с той же функциональностью (в той же среде).
- Для каждой функции балансировщик нагрузки будет распределять запросы на соответствующие машины в той же среде в соответствии с правилами балансировки.
- На каждой машине работает одна и та же ОС, CentOS7, и есть ручная документация по настройке необходимых утилит (таких как httpd, PHP, NodeJs, MySQL и их файлы конфигурации .etc) для каждой среды. Настройка должна быть выполнена только один раз и может быть выполнена в течение нескольких часов.
Сейчас ажиотаж вокруг развертывания в контейнерах становится все более популярным, и я думаю, стоит ли мне переключать свой процесс на Kubernetes (или другие альтернативы).
Насколько я понимаю, ключевыми преимуществами контейнерного развертывания и моими текущими соображениями являются
Возможность развертывания кодов в кроссвендорных облаках.
Моя текущая мысль: поскольку каждое облако поддерживает CentOS7, документация по установке и файлы конфигурации должны работать для каждого облака, верно? (Я нахожусь на стадии разработки и на самом деле не тестировал реальных поставщиков облачных услуг, и это может быть причиной моего непонимания, но теоретически я не понимаю, как это не работает)
Легко масштабировать количество машин
Моя текущая мысль: сценарий bash «Deployer» может указать количество машин для автоматического развертывания и активации для каждой функции.Я не могу придумать, как можно упростить увеличение/уменьшение масштаба при использовании контейнеров.
Более быстрое развертывание
Моя текущая мысль: основные накладные расходы в моем сценарии «Deployer» — это копирование больших файлов активов по сети. Я не вижу, как это может быть значительно уменьшено при использовании контейнеров.
Более комплексное местное развитие
Моя текущая мысль: текущая локальная разработка выполняется с использованием бродячих виртуальных машин (все с CentOS7), а не контейнеров, и я не нахожу это очень неудобным.
С другой стороны, я узнал, что при использовании контейнеров может быть очень сложно устранить ошибки, а управлять файлами журналов может быть очень сложно, что является серьезной проблемой.
Я новичок в контейнерах, и я признаю, что я один из тех, кто смотрит на шумиху и рассматривает возможность перехода от процесса разработки/развертывания, с которым я знаком. Однако мои текущие соображения, кажется, предполагают, что я не должен следовать шумихе, возможно, из-за недостатка знаний. Есть ли что-то, что я пропустил, что действительно полезно, если я перейду на использование контейнеров?