Перейти к содержанию

Контейнеризация

Контейнеры

В смутные времена, когда возникала торжественная необходимость задеплоить приложение на прод, подготовить рабочее окружение для разработчика или просто прогнать тесты на тестовом стенде, приходилось всё это делать ручками. Ты наверняка сталкивался с этим в повседневной жизни: хочешь установить программу, а ей нужен, например, установленный .NET. А ему тоже что-то нужно. И так мы проходим иногда весьма длинную цепочку пока, наконец, не получаем установленную и возможно даже работающую программу.

А что, если нам нужно переустановить систему? А что, если нужно это сделать на другой ОС? Со всем этим нам поможет технология упаковки приложений в контейнеры. Контейнеры позволяют нам инкапуслировать всю среду, которая необходима для работы нашей программы, внутри черного ящика. Это значит, что сама основная машина не будет замусориваться бесконечными библиотеками и доп. софтом, всё это будет аккуратно упаковано и не будет никому мешать. Удалил контейнер и вместе с ним уедет в небытие вся его обвязка. Никаких больше проблем с конфликтом версий у разного ПО. Счастье для всех, даром и никто не уйдет обиженным.

Исторически, у джавистов ещё в бородатые времена были сервлеты и контейнеры сервлетов, которые примерно про это, но не совсем. Однако, у всех остальных такого счастья не было и они придумали свои решения этой проблемы. Из тех, что наиболее на слуху, стоит отметить Docker и Kubernetes.

Docker

Docker, если по умному, — система по автоматизации и управлению нашими контейнерами. Мы ей даем контейнер, а она его запускает, настраивает и подготавливает к работе. Суть самих контейнеров простая как топор: мы описываем, в специальном формате, что нужно для нашего приложения (ОС, библиотеки и прочее). Весь минимальный набор, необходимый для корректной работы нашего приложения. А потом запекаем это как слоеный пирог. Собрал ты контейнер, у которого в основе Ubuntu и радуешься жизни, всё работает. А потом захотел стать модным и заменить убунту на alpine, поменял пару строк в своем файле и снова радуешься жизни. Docker хорош там, где нужно тестовое окружение или окружение для разработчика.

Помни, что готовить докер в продуктиве гораздо сложнее, так как сразу возникает куча вопросов, например, по поводу производительности и безопасности. Для твоих учебных проектов это некритично, но в случае чего-то серьезного, лучше положиться на SRE-инженера / системного администратора.

По учебным материалам обрати внимание на:

  • Jeff Nickolof. Docker in Action. Серия «in Action» обычно довольно качественная сжатая (но не чересчур), по самым разным темам. Докер не исключение, если хочешь быстро получить базовые знания, данная книга тебе поможет;
  • Официальная документация. Куда уж без документации. Написана хорошо, много полезных примеров и гайдов, не стесняйся туда почаще заглядывать.

После того как ознакомишься с учебными материалами, попробуй упаковать с помощью докера любое своё приложение и задеплоить, например, на Heroku. Гайд по деплою докер-образов в Heroku, можно найти здесь.

Kubernetes

Один контейнер — это хорошо, это надежно. Но что, если мы поддались волне хайпа и теперь у нас из всех щелей лезут микросервисы? Что, если контейнеров у нас десятки, если не сотни? Как управлять всем этим зоопарком и не сойти с ума? Здесь к нам на помощь придет оркестратор Kubernetes или просто кубер. По самому термину «оркестратор» можно догадаться, что его задача состоит в управлении и контроле за нашим многочисленным зоопарком контейнеров. Он позволяет нам их запускать, заменять на другие, следить за их состоянием, автоматически перезапускать, если кто-то упал и даже автоматически масштабироваться в зависимости от текущей нагрузки.

К сожалению, с большой силой приходит большая головная боль, поэтому обычно с кубером работает специальный человек — SRE-инженер. SRE это такой умный человек, который следует философии DevOps. Если есть желание, можешь ознакомиться с бесплатной книгой от Google, где описывается их виденье данной профессии.

На начальном этапе тебе достаточно будет знать, что кубер существует, что он классный и его очень трудно готовить без соответствующего опыта.


Последнее обновление: August 9, 2023
Дата создания: August 9, 2023