Выйти из системы

Сменить пользователя

Как стать DevOps? Что и где изучать?

– Код написан идеально, а вот инфраструктура тормозит. Кроме того, сеть, между прочим, ваша, кхм-кхм, работает с перебоями

– Задержки в пределах нормы, это вы там что-то понаписали 

– из диалога разработчика и сисадмина

До того, как возник DevOps, подобный “перевод стрелок” от одного отдела к другому был обычным делом:

  1. у администратора сети не хватало экспертизы в настройке серверов для развертывания среды разработки;
  2. тогда они вовлекали программистов;
  3. у которых, в то же время, не было достаточных компетенций в работе с инфраструктурой.

Бизнес подобные «поединки» не устраивали, поэтому, когда основой бюджетов на ИТ стал time to market, возникла роль DevOps-инженера  – сисадмина, который умеет и в железо, и в разработку.

То есть, DevOps – следующая «ступень эволюции» администратора — он умеет больше, соответственно, зарабатывает больше. DevOps ускоряет релизы обновлений, открывает путь к легкому масштабированию и повышению надежности инфраструктуры и превращает разработку в полноценный “конвейер”.

Путь к этой ступени часто тернист. Рассмотрим, как пройти его без помех, что и где изучить, а также основной инструментарий DevOps в 2024 году.

Управление исходным кодом

На старте необходимы 3 инструмента:

Git

Позволяет отслеживать изменения в коде, совместно работать над проектами и управлять историей версий. В Git возможно ветвление и слияние кода, а также возврат к предыдущим версиям при необходимости. Для будущих DevOps будет полезен Code Suggestions — ИИ-функция для написания кода. Например, её можно попросить написать сниппет или тесты.

GitHub

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

Gitlab

Поддерживает полный цикл разработки, включающий управление исходным кодом на Git, Continuous integration, Continuous Delivery, issue tracking. На одном Gitlab можно полностью вести разработку, «деплоиться» и прочее.

Контейнеры и оркестровка

Контейнеры – это изолированные и легковесные пакеты, включающие приложения и их зависимости, например, библиотеки и конфигурационные файлы. Такие пакеты можно запустить на любой платформе с контейнерной поддержкой.

Технология обеспечивает единообразное окружение для разработки, тестирования и развертывания приложений в разных средах. DevOps обязательно освоить:

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

Основы Docker для начинающих — в том числе, отличия от виртуальных машин, способы установки и преимущества для разработчиков — здесь.

Чтобы быстрее освоить платформу, также можно изучить подборку 21 исполняемой и информативной команды Docker.

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

Helm – это пакетный менеджер для Kubernetes, который позволяет упаковывать приложения и компоненты инфраструктуры Kubernetes в управляемые чарты — их легко устанавливать и обновлять.

Инфраструктура как код

IaC — это методология, при которой код используется для определения и управления инфраструктурой и её конфигурацией. Этот подход обеспечивает автоматизацию процессов развертывания и управления инфраструктурой, обеспечивая повторяемость и масштабируемость. Среди популярных инструментов можно выделить:

Terraform, который позволяет описать инфраструктурные ресурсы в виде декларативного кода и автоматически развернуть их на облачных платформах или локальных серверах. Для эффективной работы с Terraform существует утилита terrakube, обеспечивающая автоматизацию и совместную работу.

Также прилагаем полное руководство по тестированию в Terraform, чтобы держать свои тесты, проверки и политики в порядке.

Ansible — это инструмент для автоматизации конфигурации и управления серверами, который позволяет определить и достичь желаемого состояния как на локальных, так и на удаленных системах. Дополнительные советы и Best Practices по использованию Ansible можно найти в рекомендациях, размещенных здесь.

А тут — всё о том, как использовать роли Ansible.

Puppet или Chef — это инструменты для управления конфигурацией и оркестрации серверов, обеспечивающие централизацию, масштабируемость и повторяемость процессов.

Подробно о 7 инструментах IaC с открытым исходным кодом рассказывали тут.

Непрерывная сборка и доставка — CI/CD

Continuous Integration/Continuous Delivery (CI/CD) представляет собой методологию в области разработки ПО, которая охватывает автоматизацию сборки, тестирования и развертывания приложений на всех этапах итераций.

Для DevOps важно овладеть навыками CI/CD, так как это способствует ускорению процесса поставки приложений и уменьшению вероятности возникновения ошибок, позволяя командам быстро и безопасно вносить изменения. Для реализации этой методологии широко используются:

Jenkins – инструмент с открытым исходным кодом, предназначенный для автоматизации этапов сборки, тестирования и развертывания приложений.

GitLab CI/CD, который предоставляет возможность разрабатывать, тестировать и разворачивать приложения, основываясь на репозиториях GitLab.

CircleCI – облачная платформа CI/CD, предоставляющая простые и гибкие средства для автоматизации процессов сборки и развертывания приложений.

Мониторинг и логирование

Мониторинг и логирование помогают обеспечить стабильность и производительность с помощью анализа записей о действиях, событиях и отслеживания метрик состояния системы.

Инструменты, которые используют DevOps:

Prometheus – система мониторинга и сбора метрик, которая позволяет отслеживать состояние системы и приложений, а также предоставляет возможности алертинга. Полезное о Prometheus в репозитории.

Grafana – инструмент для визуализации данных из различных источников, в том числе, Prometheus, и создания дашбордов для мониторинга производительности и состояния системы.

Nagios – система с открытым исходным кодом, которая предоставляет возможности для мониторинга различных ресурсов и служб, а также отправки оповещений о проблемах.

Лучшие практики мониторинга статических веб-приложений — тут.

В заключение

Мы рассказали о базе, фундаменте, который необходимо освоить, чтобы стать DevOps. Но путь самурая бесконечен – концепция напрямую взаимосвязана с Lean, ITIL и Agile. Рекомендуем погрузиться, чтобы понимать, как это работает. Также полезно почитать об облачной “революции” в мире разработки – тут.

К тому же, всё большую популярность набирает область DevSecOps, где безопасность и управление уязвимостями играют одну из ключевых ролей. О главном в защите приложений и управлении уязвимостями за 10 минут рассказали здесь. А о том, чему могут научить самые крупные кибератаки – здесь.

И напоследок – набор DevOps tools:

Полный список с описанием тут.