Мы заметили, что в маленькой или средней компании технология контейнеризации, и в частности Kubernetes, не только усложняет работу ИТ-специалистам, но и приходится не по карману. Поэтому на рынке реальных внедрений этого продукта не так много, ведь большинству компаний не нужны системы управления контейнеризированными приложениями — это удел крупных разработок сложных систем, где издержки технологии микросервисов (трудоёмкость, высокая стоимость специалистов) точно окупятся.
Если в ваших проектах можно справиться со сложностью системы силами монолитной архитектуры, то это решение будет более предпочтительным, чем использование микросервисов. Либо, если стало сложно поддерживать код, то можно решить проблему, «нарезав» проект на микросервисы, у которых есть свой интерфейс, и управлять ими либо без оркестратора, либо менее сложным оркестратором. Вертикальное масштабирование может оставаться эффективным, если нет большого объёма данных и больших нагрузок: общий размер баз до 50 Гб, таблицы до 1 млн. записей, сетевые нагрузки до 50 запросов/сек. Придерживаться рамок монолитной архитектуры стоит и тогда, когда нет возможности распределять работу между разными командами. Если проблема в безопасности, её можно решить оборачиванием запросов к БД в хранимые процедуры. Есть и другие способы решать возникающие проблемы без перехода к Kubernetes.
Если бюджет не рассчитан на высокую оплату труда дополнительных специалистов, то стоит посмотреть в сторону использования виртуальных машин, которые создаются
с помощью системы управления конфигурациями Ansible и не требуют высокой квалификации обслуживающих сотрудников или более простых систем оркестрации. В практике нашей компании есть кейсы, когда мы снимали клиентов «с иглы» Kubernetes, и они до сих пор нам благодарны. Например, к нам обратился клиент с проблемами на сервере, находящемся на co-location: сервер постоянно сбоил, перезагружался, имел аппаратные проблемы, время простоя на продуктивной среде составляло до 30 минут в неделю. Архитектура изначально была настроена на Kubernetes и по мнению многих компаний, к которым клиент обращался до нас, ликвидация проблем вышла бы очень дорого.
Мы же перенесли инфраструктуру со сложной системы оркестрации Kubernetes на более простую и понятную для клиента систему оркестрации контейнеров Docker Compose. Также были проведены все необходимые настройки, а инфраструктура поставлена на мониторинг и на техническую поддержку. Данный «downgrade» позволил в сжатые сроки вернуть на рельсы собственный процесс разработки в компании, и каждый разработчик смог сам без помощи DevOps инженеров развернуть локальную тестовую среду у себя на рабочем месте. В результате накопившиеся за несколько месяцев ошибки и баги были очень быстро исправлены, протестированы и, опять же, без помощи DevOps инженеров была обновлена продуктивная среда. На продуктивной среде был реализован простой и понятный способ резервного копирования и восстановления на общей тестовой среде, и каждый разработчик смог получить для разработки последнюю версию БД и статического контента для полноценного QA-тестирования.
Если вы не планируете разворачивать множество схожих, однотипных служб на крупномасштабной инфраструктуре, а ищете надёжный, расширяемый, простой в поддержке оркестратор, то присмотритесь к альтернативам. Если же безопасность и надёжность у вашего бизнеса во главе угла, то тоже стоит подумать об альтернативных или комбинированных технологиях.