Инструменты админа во времена DevOps

07/04/2019

tools image

В свое время, когда начинал работать в IT, для системного администратора было важно разбираться с операционной системой Linux, уметь пользоваться bash и основными утилитами ОС, знать как настраивать Apache, Nginx, MySQL, Postfix и понимать сеть и маршрутизацию. Прошло время, и теперь сисадмины стали девопсами. Теперь уже всех вышеперечисленных знаний стало недостаточно, чтобы быть крутым перцем в области администрирования. Технологии HighLoad, зародившиеся в таких гигантах, как Facebook и Google, пришли в обычные компании, где работают уже простые смертные. Если еще лет пять — семь назад в проектах, где нужно было горизонтально масштабировать сервисы под большую нагрузку, приходилось очень долго задумываться над технической реализаций. Сейчас все это решается легко и банально.

Где-то в литературе читал, что DevOps — это в первую очередь взаимоотношения между ITшниками в коллекиве и уже потом какие-то специфичные программные утилиты. Однако, с моей точки зрения, DevOps — во многом определяют программные продукты, которые позволяют организовать хорошо масштабируемые IT сервисы с уклоном в облачные технологии. Понимание того, как работают основные программные продукты HighLoad, одно из основных требований для инженеров DevOps. Тут попытаюсь показать основные инструменты, которые используют DevOps специалисты. В первую очередь это система контейнеризации Docker и система управления контейнерами Kubernetes. Следующим важным продуктом обязательным для изучения является система управления конфигурациями Ansible. Также многие относят к средствам DevOps-ов систему контроля версия Git, которую по сути используют практически все программисты. Также специалисту необходимо знать средства CI — Contitunuos Integration на базе ПО Jenkins, и систему IaaC — Terraform.

Давайте рассмотрим детальнее программные продукты, которые были перечислены выше. Прокачивая знания и навыки по ним, Вы сможете уверенно справляться с задачами, которые возникают в работе современных системных администраторов. Или другими словами стать квалифицированным DevOps специалистом.

Docker

Система контейнеризации Docker сильно поменяла архитектуру многих IT сервисов и саму архитектуру, которая применяется при разработке. Использование программных контейнеров под каждое приложение позволяет значительно увеличить эффективность использование аппаратных ресурсов, а также ограгнизовывать горизонтальное масштабирование различных сервисов и приложений. По сути контейнер пресдтавляет собой мнимально необходимый набор для работы конкретного приложения. Если, например, Вы используете контейнер c Redis, то в нем будет базовое ядро Linux и необходимые модули, чтобы работал Redis вместе с ним самим.

Kubernetes

Сам по себе Docker в продакшене не сильно полезен без правильных систем управления контейнерами. Kubernetes — система управления и автоматизации контейнерами. Именно с помощью Kubernetes можно организовывать большие кластеры вычислительных ресурсов с использование различных приложений, работающих в контейнерах Docker. Да, есть Docker Swarm, который позволяет организовать использование контейнеров на нескольких серверах, есть Apache Mesos, который также дает возможность сделать крупномасштабные кластеры Docker. Но по целому соотношению функционала и легкостью работы, Kubernetes занимает первое место в среде DevOps-ов. Вообщем, хотите быть в тренде, учите и используйте Kubernetes в своей работе.

Ansible

Ansible и аналогичные системы управления конфигурациями помогают решить вопрос с управлением множеством серверов и аналогичных вычислительных ресурсов, которые находятся в управлении у администраторов. Современная реальность системных администраторов заключается в необходимости контролировать сотни и тысячи устройств (реальных или виртуальных). И такие средства, как Ansible позволяют решить этот вопрос. Есть мощные аналоги как Chef, Puppet, Salt, однако, с моей точки зрения, возможности Ansible работать без агентов, а также предоставляемый функционал, делают Ansible инструментом #1 для админов в области управлениям конфигурациями.

Git

Git — платформа по организации контроля версий программного обеспечения. Конечно же, эта система в первую очередь предназначена для программистов, которые занимаются сложными разработками. Однако, в современной разработке Git обеспечивает гораздо больше возможностей для IT команды, чем обычный контроль, за теми изменениями, которые были внесены в код. Именно с помощью Git удается построить эффективный процесс CI/CD — Continuous integration/continuous delivery. Использование прочих систем контроля версий в серьезных проектах практически сошло на нет.

Jenkins

Один из главных элементов методологии DevOps — организации постоянной доставки и интеграции приложений или CI/CD. Пожалуй, одной из ведущих плафторм для организации этого является программное обеспечение Jenkins. С помощью плагинов функционал Jenkins очень хорошо расширяется и интегрируется практически со всеми основными системами, на данный момент используемыми в разработке софта. Использование подобного программного обеспечения заметно автоматизирует вопрос разработки, позволяя заметно экономить время при большом количестве релизов программного обеспечения.

Terraform

Одна из лучших систем IaaS — Infrastructure-as-a-Service это Terraform. Софт, разработанный компанией HashiCorp, позволяет управлять внедрением и модернизацией вычислительных ресурсов в облачных провайдерах (Amazon AWS, Microsoft Azure, Google Cloud Platform и других) и в системах виртуализации. Для развертывания кластера виртуальных машин достаточно небольшого файла, написанного на Hashicorp Configuration Language (HCL). Теперь вопросы развертывания, удаления или изменения конфигурации виртуальных серверов легко автоматизируются с помощью Terraform. Аналогом Terraform для управления инфраструктурой AWS является AWS CloudFormation.

Резюме

В статье попытался показать основные инструменты, которые состовляют экосистему DevOps. Все программное обеспечение, перечисленное в статье, является Open Source. То есть, культивировать эти технологии у себя в организации достаточно просто. Нет никаких лицензионных отчислений, достаточно желание и наличие квалификации технических специалистов. Количество программных утилит, используемых в работе DevOps конечно же в разы больше тех, которые выше упомянуты. Однако, знание именно ключевого софта позволит чувстовать себя уверенно в современной веб разработке и администрировании.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *