В этом подробном руководстве я делюсь практическими рекомендациями о том, как стать инженером DevOps.
Что касается современного IT-рынка, то сфера DevOps — один из лучших вариантов для тех, кто хочет получать высокую зарплату и развиваться в карьере. Один израспространённых вопросов, которые я часто слышу: «Как стать инженером DevOps?»
Многие люди утверждают, что не существует такой профессии, как «DevOps-инженер» или «DevOps-команда», потому что такой профессии не существует. Однако все в отрасли уже привыкли к термину «DevOps-инженер», и, если вы понимаете философию DevOps, эти названия не имеют особого значения.
Ближе к концу статьи я перечислил различные команды, в которые может входить инженер DevOps.
Существует множество ошибочных представлений о том, что на самом деле означает DevOps. Одно из таких представлений — «Автоматизация — это DevOps». Чтобы стать инженером DevOps, недостаточно развивать навыки, связанные с автоматизацией инфраструктуры.
В Википедии говорится,
DevOps (сокращение от development and operations — разработка и эксплуатация) — это культура, движение или практика, которые делают упор на сотрудничество и коммуникацию как между разработчиками программного обеспечения, так и между другими специалистами в области информационных технологий (ИТ), а также на автоматизацию процесса поставки программного обеспечения и изменений в инфраструктуре.
Из приведённого выше определения ясно, что DevOps — это не про какие-то инструменты или технологии. Это философия, которая позволяет разным ИТ-командам (разработчикам, командам, занимающимся платформами, тестированием, производительностью и т. д.) работать сообща, чтобы добиваться лучших и более быстрых результатов за счёт постоянной обратной связи.
Вот интересный график, показывающий динамику популярности DevOps за последние пять лет.
Кто такой инженер DevOps?
Организациям, которые пытаются внедрить DevOps, нужны люди, умеющие работать в команде, готовые меняться и осваивать новые технологии и методологии. Это инженеры DevOps.
С точки зрения инструментовки, инженер DevOps — это специалист, который хорошо разбирается в операционных системах, сетевых технологиях, средствах автоматизации, инструментах непрерывной интеграции, системах контроля версий, инструментах мониторинга и наблюдения, инфраструктуре как коде и программировании/скриптинге.
Я видел, как команды следили за выполнением заданий в конвейере для сборки и выпуска инфраструктуры/приложений. В мире DevOps-инженеров конвейер CI/CD, спроектированный/разработанный командой, должен обеспечивать выпуск небольших обновлений или релизов без особого ручного вмешательства. Это возможно только при наличии культурных изменений в работе разных команд.
Например, исходя из моего опыта работы в качестве DevOps-инженера, можно сказать, что взаимодействие с разными командами и открытый диалог о болевых точках помогли бы решить многие проблемы, в отличие от простого следования правилам, принятым в команде. (И поверьте мне, это не так просто, как кажется :)
Ещё одна цель инженеров DevOps — автоматизировать повторяющиеся задачи и уделять больше времени разработке и инновациям.
Дорожная карта инженера DevOps
Вы должны понимать, что DevOps не предназначен только для разработчиков или системных инженеров. Он для всех, кто стремится развивать практики и технологии и готов работать в среде сотрудничества, где всё автоматизировано, чтобы облегчить жизнь каждого.
Неважно, кто вы: системный администратор, разработчик, тестировщик, инженер по производительности, инженер по поддержке и т. д. Вы можете быть инженером DevOps, потому что уже являетесь частью ИТ-экосистемы, которая отвечает за развёртывание приложений в рабочей среде и управление ими.
В этой статье рассказывается, как подготовиться к работе с инструментами и технологиями, чтобы стать инженером DevOps, который придерживается философии DevOps.
Примечание: в этой статье я рассмотрел множество направлений. Новичок не может быть мастером во всём. Однако, если у вас есть достаточные знания в этих областях, вы сможете стать DevOps-инженером.
Понимание культуры DevOps
Чтобы стать инженером DevOps, в первую очередь нужно понять культуру DevOps. Она заключается в том, что разные команды работают сообща для достижения общей цели. Другими словами, между разными ИТ-командами не должно быть культуры взаимных обвинений.
На следующем изображении всё показано.
Например, если вы инженер по эксплуатации, никогда не говорите: «Это не моя работа». Скажите: «Давайте посмотрим, чем я могу помочь». То, как вы отвечаете, существенно влияет на сотрудничество. (Это не значит, что вы должны делать за других всю работу.)
Примечание: Если вы только что закончили учёбу, вам будет сложно разобраться в культурных аспектах, поскольку для этого нужен реальный опыт работы в отрасли. Поэтому я бы посоветовал вам сосредоточиться на базовых принципах работы в сфере ИТ (операционные системы, сети и программирование), а затем перейти к облачным технологиям и инструментам DevOps.
ИТ-руководители и лица, принимающие решения, должны убедиться, что вся команда прошла обучение по культурным аспектам DevOps, прежде чем приступать к работе с наборами инструментов DevOps. Это позволит избежать путаницы в командах. Обычно в организациях этого не происходит, и в итоге у них появляется «команда DevOps» для выполнения операций, что опять же приводит к разрозненности структуры.
Люди перестанут скрывать правду и обвинять других в проблемах с проектом, как только поймут, что проблемы с реализацией проекта нужно решать сообща, а не искать виноватых. Например, разбор полётов без обвинений.
Как только вы поймёте суть культуры DevOps, вы перестанете говорить, что «CI/CD и автоматизация инфраструктуры — это DevOps
Я бы посоветовал вам ознакомиться с отчётом о состоянии DevOps от puppet. Отчёт о DevOps, который обязательно нужно прочитать инженерам и руководителям.
Учебные ресурсы
- Культура и мышление DevOps [Coursera]
- Проект «Феникс» [Рекомендуемая электронная книга]
Научитесь пользоваться инструментами ИИ
Научитесь учиться
В мире ИИ цель не в том, чтобы заменить обучение. Цель в том, чтобы учиться быстрее и работать эффективнее.
Когда я только начинал свой путь в DevOps, я целыми днями изучал и исследовал новые инструменты и технологии с помощью Google и форумов. Те времена прошли. Теперь вы получаете ответы на свои вопросы за считаные секунды.
Всё, что вам нужно сделать, — это задавать правильные вопросы. Наберитесь терпения и читайте, и вы получите массу полезной информации.
Мы живём в эпоху, когда благодаря инструментам искусственного интеллекта будет происходить стремительное развитие технологий. Инженеру важно использовать инструменты генеративного искусственного интеллекта, такие как ChatGPT, Google Gemini и Claude, чтобы освоить основы без особых затрат времени.
Потому что эти инструменты могут общаться с вами и давать пояснения простым языком.
Главное, что вам нужно освоить, — это стратегии интеллектуального запроса.
Вот пример интеллектуального запроса
Не спрашивайте: «Как использовать Docker?» вместо этого
Вопрос —> "Я новичок в контейнеризации. Объясните мне концепции Docker так, как если бы я был знаком с виртуальными машинами, а затем дайте мне 3 практических задания, от начального до среднего уровня"
Так что усердно работайте :)
Изучайте Linux
Мы живём в эпоху, когда невозможно обойтись без систем Linux/Unix. Вам следует лучше изучить и освоить различные дистрибутивы Linux, которые широко используются в организациях (RHEL, Centos, Ubuntu, CoreOS и т. д.).
Согласно исследованию Linux Foundation, 90 % рабочих нагрузок в публичном облаке выполняется на Linux.
Вот ещё одно интересное исследование от Redhat, в котором показаны различные дистрибутивы Linux, используемые в общедоступном облаке.
Теперь у вас достаточно причин, чтобы сосредоточиться на Linux.
Когда дело касается Linux, всё сводится к терминалу, графический интерфейс в мире *nix менее предпочтителен. Познакомьтесь поближе с терминалами этих систем.
Вы можете использовать виртуальную машину с Vagrant или AWS/GCP/Azure для запуска серверов Linux.
Вы можете начать со следующего.
- Разберитесь в процессе загрузки Linux
- Разберитесь в systemd
- Узнайте о разрешениях для файлов (rwx), правах собственности, бите sticky, setuid, setgid.
- Разберитесь в управлении пользователями и группами (/etc/passwd, /etc/shadow, id, groups).
- Узнайте, как работают процессы в Linux.
- Узнайте о сигналах (kill, pkill, killall, номера сигналов).
- Научитесь настраивать HTTP-прокси.
- Узнайте о различных файловых системах.
- Узнайте, как работают тома в Linux.
- Узнайте о системном логировании, мониторинге и устранении неполадок.
- Узнайте о важных протоколах (SSL, TLS, TCP, UDP, FTP, SFTP, SCP, SSH)
- Научитесь управлять службами и попробуйте создать службу самостоятельно (Initd, Systemd)
- Научитесь оптимизировать производительность Linux и использовать инструменты мониторинга производительности (top, htop, iostat, vmstat, sar).
- Разберитесь в анализе журналов (journalctl, /var/log/, rsyslog).
- Узнайте о контрольных группах и пространствах имён (общая идея, особенно в контексте ролей, связанных с контейнерами).
- Узнайте об основных стратегиях резервного копирования и восстановления (rsync, tar).
Вы можете выполнить следующие задания и попробовать освоить их на практике.
- Настройте базу данных и разберитесь в её конфигурациях и управлении. (Например: настройка PostgreSQL)
- Разместите статические/динамические веб-сайты на веб-серверах и поэкспериментируйте с различными конфигурациями.
- Установите и настройте веб-серверы (Apache, Nginx, Tomcat и т. д.) и узнайте, как работают веб-серверы.
- Сломайте что-нибудь и научитесь устранять неполадки.
Совет: при работе над реальными проектами вы используете системы Linux в частной сети с ограниченным доступом к общедоступным веб-сайтам и ресурсам. Вам необходимо хорошо разбираться в управлении пакетами без подключения к интернету.
Учебные ресурсы Linux
- Введение в Linux [edX]
Соответствующие Сертификаты
Узнайте, как работают компоненты инфраструктуры
Основой любой организации является инфраструктура. Она может находиться в облаке или в локальном центре обработки данных.
Общее представление о компонентах инфраструктуры необходимо для тех, кто хочет практиковаться или работать в среде DevOps. Например, если вы будете участвовать в совещаниях с представителями отделов сети и безопасности, то, обладая достаточными знаниями об инфраструктуре, сможете задавать правильные вопросы, понимать, о чем они говорят, и эффективнее сотрудничать.
Есть большая разница между фразами «Это не работает, не могли бы вы разобраться» и «Эй, я провел первичную диагностику и вот что выяснил. Не могли бы вы разобраться в этом и помочь нам понять, в чем причина проблемы».
Создание сетей
1. Модель OSI/модель TCP-IP
2. Сетевые топологии
3. Нотация CIDR
4. Подсети
5. Публичная сеть
6. Частная сеть
7. Статические/динамические IP-адреса
8. Брандмауэр
9. Прокси (прямой и обратный прокси)
10. NAT
11. Публичный и частный DNS
12. VPN
13. Протоколы IPv4 и IPv6
Высокая Доступность
1. Кластеры
2. Механизмы аварийного переключения
3. Послеаварийное восстановление
4. Вертикальное масштабирование
5. Горизонтальное масштабирование
Безопасность
1. SSL-сертификаты
2. Инфраструктура PKI
3. Безопасность с нулевым доверием
4. Ротация паролей / секретов
5. Соответствие требованиям безопасности
6. Межсайтовая VPN
7. Межсайтовая VPN
Хранение
1. SAN
2. Резервное копирование
3. NFS
5. Объектное хранилище
6. Количество операций ввода-вывода в секунду/пропускная способность/задержка
7. Базы данных
8. Хранилища «ключ-значение»
Единый вход в систему
1. Active Directory/LDAP
2. SAML
3. OAuth2 и OpenID Connect
Балансировщики нагрузки
1. Балансировщики нагрузки L4
2. Балансировщики нагрузки L7
3. Алгоритмы балансировки нагрузки
Есть и другие аспекты, но я выделил наиболее важные компоненты ИТ-инфраструктуры, с которыми вы можете столкнуться в своей повседневной работе.
Ресурсы
Чтобы начать работу с сетями, вы можете пройти бесплатный курс Udacity, ссылка на который приведена ниже.
- Курс по компьютерным сетям от Udacity [Бесплатно]
Изучите облачные вычисления и виртуализацию
Облачные вычисления и виртуализация — это базовые элементы современных практик DevOps.
Вы можете начать изучать концепции виртуализации с помощью таких инструментов, как Virtualbox и Vagrant (виртуализация второго типа). Это основа облачных вычислений.
Что касается облачных вычислений, вам нужно изучить облачные платформы и пройти сертификацию по ним.
Когда я говорю «Пройдите сертификацию», пожалуйста, не используйте материалы для подготовки к экзамену, чтобы получить сертификат. Это не принесёт вам особой пользы. Организации может быть полезно показать клиентам, что у них есть сертифицированные облачные инженеры.
Большая часть рынка общедоступных облачных сервисов в настоящее время принадлежит AWS. Вот последний отчет от Statista.
Выберите любое общедоступное облако, желательно AWS, и изучите все его основные инфраструктурные сервисы. Попрактикуйтесь во всех основных сервисах и разберитесь, как они работают.
Посмотрите видео о переосмыслении AWS и узнайте, как другие организации используют сервисы AWS для размещения своих приложений.
Поверьте, вы многому научитесь из этих видео, и ни одно онлайн-обучение не даст вам столько информации о том, как запускать рабочие нагрузки на AWS.
Если вы планируете пройти сертификацию GCP, посмотрите их видео от Google Next.
Используйте сертификат, чтобы оценить свои знания на соответствующей платформе.
Ресурсы для изучения облачных технологий и виртуализации:
Изучите автоматизацию инфраструктуры
Мы больше не создаем серверы вручную. Инструменты автоматизации инфраструктуры стали неотъемлемой частью работы любой организации. Кроме того, все современные развертывания инфраструктуры соответствуют модели неизменяемой инфраструктуры
Согласно отчету Redhat, многие организации инвестируют в автоматизацию. Ознакомьтесь с этими данными.
Все процессы — от подготовки серверов до настройки и развертывания приложений — должны быть автоматизированы. Вы можете изучить любой из следующих наборов инструментов DevOps, который соответствует вашим потребностям.
Для среды разработки
1. Vagrant
2. Docker Desktop
3. Minikube (k8s)
4. Minishift (k8s)
5. Kind (k8s)
Для Управления Конфигурацией
1. Ansible (preferable)
2. Chef
3. Puppet
4. Saltstack
Для обеспечения инфраструктуры
1. Terraform (предпочтительно)
2. Cloudformation для AWS
3. CLI (соответствующего поставщика облачных услуг)
4. Pulumi
Управление образами виртуальной машины / Контейнерами
1. Hashicorp Packer
2. Docker
Ниже приведены мои советы по изучению инструментов автоматизации
- Изучите основы в блоге, официальной документации или на курсах. Выбирайте то, что вам больше по душе.
- Если вы хотите написать Ansible-плейбук для Nginx, сначала настройте Nginx вручную и посмотрите, как работают компоненты и конфигурации. Затем приступайте к написанию плейбука.
- Обязательно изучите разработку инфраструктуры на основе тестирования. Для каждого инструмента автоматизации существуют инструменты тестирования. (Ansible-test, terratest и т. д.)
- Модули сообщества — отличный источник информации для обучения. Вы можете изучить сложную логику на примере модулей сообщества.
- При использовании модулей сообщества убедитесь, что вы понимаете, что делает каждый блок кода.
Ресурсы:
Изучите оркестрацию контейнеров и распределённые системы
Распределённые системы являются базовыми элементами современной масштабируемой инфраструктуры. Вам необходимо понимать основные концепции распределённых систем, поскольку большинство инструментов, которые вы используете для микросервисов, являются распределёнными. Например, Kubernetes.
Кроме того, популярность контейнеров растёт с каждым днём. Организация, в которой вы работаете, возможно, пока не использует контейнеры. Тем не менее, лучше иметь практические знания о контейнерных технологиях, таких как Docker или podman. Это даст вам конкурентное преимущество перед коллегами.
Как только вы разберётесь с Docker, вы сможете начать изучать инструмент для оркестрации контейнеров Kubernetes.
Kubernetes — это Linux нового поколения.
Эти платформы лучше всего подходят для архитектуры на основе микросервисов.
Вот интересная тенденция использования Kubernetes от Datadog.
На следующем изображении показаны тенденции роста поисковых запросов по Kubernetes за последние пять лет.
Кроме того, многие инженеры и даже недавние выпускники колледжей проявляют интерес к изучению Kubernetes. В 2023 году многие инженеры получат сертификаты по Kubernetes. Вы можете ознакомиться с нашими руководствами по подготовке к экзаменам CKA, CKAD и CKS. Вы можете выбрать лучший сертификат по Kubernetes в зависимости от сферы, в которой хотите работать.
Service mesh — это продвинутая тема в сфере контейнеров. Если вы новичок в работе с контейнерными инструментами, вы можете изучить эту тему после того, как получите достаточные знания в области оркестрации контейнеров и архитектуры на основе микросервисов. Фонд CNCF предлагает множество инструментов Service Mesh. Вы можете ознакомиться с лучшими инструментами Service Mesh для микросервисов.
Ресурсы
- Как освоить Kubernetes — подробная дорожная карта
Ведение журналов, мониторинг и наблюдаемость
Наблюдаемость, ведение журналов и мониторинг — фундаментальные аспекты инфраструктуры.
Все приложения, развернутые в инфраструктуре, создают журналы и метрики. Журналы отправляются и хранятся в инфраструктуре ведения журналов в соответствии с архитектурой и дизайном.
У каждой компании должна быть инфраструктура для ведения журналов и мониторинга. Обычно используются такие системы ведения журналов, как Splunk и ELK. Кроме того, есть несколько SaaS-компаний, таких как Loggly, которые предоставляют инфраструктуру для ведения журналов.
Для мониторинга существуют инструменты с открытым исходным кодом, такие как Prometheus и Nagios, а также корпоративные инструменты, такие как AppDynamics, Datadog, SignalFx и др. Вы можете ознакомиться с нашим блогом, посвященным лучшим инструментам мониторинга с открытым исходным кодом.
Разработчики, операционные команды и службы безопасности используют системы логирования для мониторинга, устранения неполадок и аудита приложений и инфраструктуры. Кроме того, данные журналов играют ключевую роль в AIOPS.
В каждой организации критически важные приложения мониторятся в режиме 24/7 с помощью панелей мониторинга. Как правило, панели мониторинга используют данные из источников журналов или метрики, генерируемые приложением.
Кроме того, существуют системы оповещения, которые используют для оповещения правила, настроенные в системах мониторинга.
Например, оповещение может быть отправлено в виде уведомления в Slack, тикета в Jira, электронного письма, тикета ServiceNow incident или телефонного звонка в xMatters. Порядок оповещения в разных организациях отличается.
Как инженер DevOps, вы должны уметь запрашивать логи и устранять неполадки в тестовых и рабочих средах. Понимание регулярных выражений очень важно для запроса логов в любом инструменте для ведения журналов.
Ресурсы
Изучите передовые методы обеспечения безопасности (DevSecOps)
DevSecOps — это ещё одно направление, связанное с интеграцией методов обеспечения безопасности на каждом этапе DevOps.
Википедия
DevSecOps — это расширение DevOps, позволяющее интегрировать методы обеспечения безопасности в подход DevOps. Традиционная модель централизованной команды по обеспечению безопасности должна быть заменена федеративной моделью, которая позволит каждой команде разработчиков внедрять необходимые меры безопасности в свои методы DevOps.
Одной из обсуждаемых тем в DevSecOps является подход к обеспечению безопасности «сдвиг влево». «Сдвиг влево» в обеспечении безопасности — это внедрение методов обеспечения безопасности на этапах проектирования и разработки.
Альянс облачной безопасности заявляет,
Безопасность может быть обеспечена только в том случае, если она была предусмотрена изначально. Применение мер безопасности постфактум — верный путь к катастрофе.
Альянс по облачной безопасности
Вы можете ознакомиться с Шесть столпов DevSecOps от альянса Cloud Security.
Вот интересный отчёт Checkpoint 2020 security survey, в котором показаны различные кибератаки по регионам.
В облачных средах криптомайнинг является одним из распространённых видов атак. Чаще всего это происходит из-за того, что секреты доступа к облаку хранятся в ненадлежащем месте и хакеры получают к ним доступ.
Когда дело касается DevOps, управление секретными данными для приложений и компонентов инфраструктуры должно осуществляться в соответствии со стандартными методами обеспечения безопасности. Вы также можете прочитать о методах обеспечения безопасности с нулевым доверием.
На следующем изображении показаны основные стандартные методы DevSecOps опубликованные Redhat.
Hashicorp Vault — отличный инструмент для управления секретными данными, который вы можете изучить. Существует множество рабочих процессов для управления секретными данными в среде.
Отчет О состоянии безопасности API от Salt Security показывает, что количество атак на API выросло на 681 %.
Ресурсы:
Изучайте программирование и написание скриптов
Написание скриптов крайне важно для DevOps-инженера. В наши дни на собеседованиях по DevOps в каждой приличной компании проводится предварительный этап, на котором нужно написать скрипт или код.
Вот отрывок из официального блога Google Cloud, в котором рассказывается о навыках, необходимых для работы облачным инженером. Там говорится: «Код обязателен к изучению».
Так или иначе, в процессе CI/CD вам придётся использовать программы и скрипты. Вы можете изучить следующие распространённые языки программирования. Изучение программирования
- Bash/Shell
- Python
- Golang
Вы можете ознакомиться с моими следующими статьями
- Python для DevOps — здесь я рассказываю о различных вариантах использования программирования и сценариев в DevOps
Кроме того, чтобы стать настоящим DevOps-инженером, вам нужно лучше понимать мир разработчиков. Для этого вам нужно знать, как обычно происходит процесс разработки.
Поэтому важно иметь хорошее представление о программировании, API и т. д. Это поможет вам устранять неполадки и эффективнее взаимодействовать. Кроме того, понимание API является обязательным условием для изучения Kubernetes.
Я бы посоветовал выбрать язык программирования и создать приложение с нуля. Когда я только начинал свою карьеру, я с нуля создал целое веб-приложение на Ruby on Rails, хотя разработка не была моей основной работой. До сих пор это помогает мне разбираться во многих концепциях в мире разработчиков. Даже ребята из Google Cloud советуют то же самое.
Когда вы разрабатываете приложение, вы понимаете, как происходит процесс разработки и какие компоненты в него входят. Зная это, вы сможете эффективно взаимодействовать с разработчиками и вести содержательные беседы.
Кроме того, в современном мире мы относимся ко всему как к коду. Несмотря на то, что существует достаточно инструментов для автоматизации, вам может понадобиться пользовательская функциональность, которую не предлагает ни один инструмент. В таких случаях для реализации этой функциональности пригодится программирование/скриптинг.
Например,
- Дженкинс-конвейер в виде кода требует понимания Groovy
- Пользовательский модуль Ansible требует понимания Python
- Для написания оператора Kubernetes требуется опыт работы с Golang.
Кроме того, если вы посмотрите на AWS CDK или инструмент IaaC, такой как Pulumi, то увидите, что для определения инфраструктуры можно использовать язык программирования и разрабатывать инфраструктуру на основе тестирования, как вы разрабатываете приложения.
Golang становится всё более популярным в сфере DevOps. Сегодня многие инструменты DevOps создаются с использованием Golang. На самом деле такие инструменты, как Kubernetes и Terraform, написаны на Go.
Компания JFrog провела опрос о внедрении Golang во время GopherCon, и 18 % респондентов заявили, что используют Golang для работы, связанной с DevOps.
Я привёл достаточно причин, почему вам как DevOps-инженеру стоит изучать программирование.
Ресурсы
Изучите Git, GitOps и научитесь документировать
Важно контролировать все, что вы делаете (кроме паролей и секретов :P). Git — лучший инструмент для контроля версий. Существует множество руководств по git, и изучение основных операций с git не займет много времени.
В качестве удалённого репозитория кода можно использовать Github или Bitbucket.
Примечание: Стратегия ветвления Git — важный аспект процесса выпуска любого приложения.
Как только вы разберётесь с Git, изучите GitOps. Это развивающаяся техническая практика которая редко используется в компаниях. Однако когда-нибудь она станет общепринятой.
Так что же такое GitOps? вот что gitops.tech
GitOps — это способ реализации непрерывного развёртывания для облачных приложений. Он ориентирован на удобство разработчиков при работе с инфраструктурой и использует уже знакомые разработчикам инструменты, в том числе Git и инструменты непрерывного развёртывания.
Вы можете прочитать моё простое объяснение по Gitops.
ArgoCD — это широко используемый инструмент GitOps, и вы можете начать работу с ArgoCD, чтобы изучить GitOps на практике.
Следующее, что важно сделать, — это задокументировать все важные действия, которые вы совершаете. В каждом репозитории должен быть READMEфайл, в котором ваш код описан более подробно. Хорошая документация поможет не только вам, но и тем, кто попытается использовать ваш код.
Ресурсы:
Понимание полного жизненного цикла доставки приложений
Когда речь заходит о жизненном цикле доставки приложений, необходимо помнить о трёх важных концепциях.
- Непрерывная интеграция
- Непрерывная поставка
- Непрерывное развёртывание
Прочтите этот пример из статьи об управлении процессом выпуска, чтобы понять, как происходит типичная разработка, сборка, тестирование, развертывание, утверждение и проверка приложений.
Научитесь использовать любой из следующих инструментов CI/CD.
CI Tools
Jenkins
Drone CI
GitHub Actions
Travis CI
CD Tools
ArgoCD
FluxCD
Jenkins X
GoCD
Вот наглядное изображение процесса CI/CD от bmc.
Кроме того, здесь приведён список тем, связанных с разработкой приложений и жизненным циклом их выпуска. Вы можете связаться с представителями отрасли и узнать, как это делается в их организациях. Процесс планирования.
- Процесс утверждения и подписания архитекторами предприятия.
- Подписание службой безопасности предприятия проекта инфраструктуры и приложений/инструментов.
- Соответствие требованиям к данным
- Управление конфигурацией/секретными данными
- Контроль качества/тестирование производительности и утверждение
- Мониторинг документации и настройка ключевых показателей эффективности
- Процесс управления изменениями.
- Процесс выпуска в производство.
- Действия по проверке после выпуска в производство
- Сценарии и стратегии отката.
Ресурсы
Изучите MLOps и LLMOps
Инструменты искусственного интеллекта и автоматизации существенно изменили роль DevOps-инженера, сократив время, затрачиваемое на рутинные задачи, и позволив уделять больше внимания стратегически важной работе.
Что это значит для начинающих DevOps-инженеров?
Во-первых, DevOps никуда не денется. Но меняются важные навыки.
Теперь вам нужно понимать, как создаются, развертываются и эксплуатируются системы искусственного интеллекта, а не только как развертываются приложения.
Здесь на помощь приходят MLOps и LLMOps.
Ваша ценность как DevOps-инженера возрастает, если вы можете делать следующее.
- Управление версиями моделей, их тонкой настройкой, конвейерами и развертыванием
- Мониторинг производительности моделей, отклонений и сбоев
- Защита рабочих нагрузок и данных ИИ
- Эффективное масштабирование систем логического вывода в Kubernetes
- Использование агентов ИИ в системах.
Это не значит, что вам нужно становиться специалистом по обработке данных или инженером в области искусственного интеллекта и машинного обучения. Но вам нужно понимать жизненный цикл систем машинного обучения и больших языковых моделей с точки зрения эксплуатации. Точно так же, как вы изучаете жизненный цикл таких приложений, как Java, Python и т. д.
Короче говоря, знания в области DevOps и ИИ — это перспективный набор навыков
Используйте агентов, MCP и инструменты ИИ для повышения производительности
Андрей Карпати, соучредитель OpenAI, сказал следующее в x.
«Я никогда не чувствовал себя таким отстающим в плане программирования.
В дополнение к обычным уровням, включающим агентов, субагентов, их запросы, контексты, память, режимы, разрешения, инструменты, плагины, навыки, хуки, MCP, LSP, слэш-команды, рабочие процессы, интеграцию с IDE, а также необходимость создания всеобъемлющей ментальной модели для выявления сильных сторон и подводных камней принципиально стохастических, подверженных ошибкам, непонятных и меняющихся сущностей, внезапно появившихся в старой доброй инженерии, нужно освоить новый программируемый уровень абстракции.
Что это значит для DevOps-инженера?
Что ж, вам нужно начать относиться к ИИ-агентам как к чему-то само собой разумеющемуся в ваших рабочих процессах.
Например, начните использовать агентов для следующих задач.
- Создание черновиков Terraform или Kubernetes YAML
- Создание шаблонов конвейера CI/CD
- Обобщение журналов и сообщений об ошибках
- Объяснение незнакомых конфигураций или скриптов
А вот здесь начинается самое интересное. Вам всё равно нужно всё перепроверить. А также понять, почему это работает. Потому что вам нужно исправить то, что агент делает неправильно.
Затем научитесь использовать MCP для подключения агентов к реальным данным DevOps.
Например, если вы подключите агентов к журналам и событиям Kubernetes, выводам конвейера CI/CD и т. д., агенты смогут отвечать на вопросы, используя ваши реальные данные. Это также поможет вам и вашей команде быстрее устранять неполадки и предлагать решения на основе текущего состояния системы.
На самом деле во многих организациях есть платформы на базе ИИ, которые используют ИИ-агентов для обеспечения наблюдаемости.
Вы можете начать с создания следующих небольших рабочих процессов на базе агентов.
- Агент читает журнал и кратко описывает проблему.
- Агент проверяет неудачный запуск конвейера и объясняет причину ошибки.
- Агент просматривает диаграмму Helm и отмечает распространённые проблемы.
DevOps против SRE
SRE — ещё одна развивающаяся тема в сообществе DevOps.
SRE — это набор практик и принципов, появившихся в Google.
Вот что Google говорит о DevOps и SRE
DevOps и SRE — это не два конкурирующих метода разработки и эксплуатации программного обеспечения, а скорее взаимодополняющие подходы, призванные разрушить организационные барьеры для более быстрой и качественной разработки программного обеспечения. «SRE-класс реализует DevOps»
Чтобы лучше разобраться в SRE, я рекомендую ознакомиться с этими официальными документами от Google.
Различные типы "Команд DevOps"
В настоящее время каждая организация называет людей, занимающихся инфраструктурой / CI-CD, "Инженерами DevOps". и делает их частью "команды DevOps". Однако их обязанности различаются в зависимости от команд, в которых они работают.
Существует неправильное представление о "инженерах DevOps", думающих, что они несут ответственность за все. Это неправда. Это может сработать для небольших команд.
На самом деле, если вас наняли в качестве «инженера DevOps», вы можете работать в любой из следующих команд организации.
- Команда разработчиков центральной платформы (инженеры по разработке платформы): отвечают за предоставление инфраструктуры по запросу. Эта команда отвечает за создание масштабируемого портала самообслуживания и предоставление услуг разработчикам и другим командам. Они будут заниматься не приложениями, а базовыми платформами. Они будут следить за тем, чтобы производственные системы были доступны круглосуточно и без выходных благодаря непрерывной поддержке и мониторингу платформы. Кроме того, они будут работать над новыми инструментами и средствами автоматизации для удовлетворения будущих потребностей. Конечными потребителями услуг этой команды будут разработчики или команды по эксплуатации приложений. Так что это скорее общая ответственность.
- Команда DevOps: Хотя термин «команда DevOps» не имеет особого смысла, организации используют его для обозначения команды, занимающейся операциями. Эта команда обычно тесно сотрудничает с разработчиками и обслуживает несколько команд разработчиков. Они отвечают за сквозную доставку приложений.
- Команда App Ops: Эта команда входит в состав конкретных инженерных команд, которые тесно сотрудничают с конкретной программой в организации и хорошо разбираются в этой области. Например, команда по платежам. Эта команда отвечает за развертывание платежных приложений и управление ими. Управлением платформой будет заниматься центральная команда по платформе или команды DevOps.
- Команда SRE: Эта команда занимается автоматизацией, доступностью, задержками, производительностью, эффективностью, управлением изменениями, мониторингом, реагированием на чрезвычайные ситуации и планированием мощностей. Они тесно сотрудничают с разработчиками для решения операционных проблем. В эту команду входят инженеры, работающие над инфраструктурой, с опытом разработки.
- Специальная группа поддержки: Группы поддержки предназначены для устранения неполадок/решения производственных проблем и распределения задач между соответствующими командами в зависимости от их серьезности. В этой команде есть уровни L1, L2 и L3.
Для опытных кандидатов очень важно понимать суть повседневных задач до того, как вы присоединитесь к команде.
Роли и обязанности DevOps-инженера
Тем, кто ищет работу в сфере DevOps, лучше понимать роли и обязанности DevOps-инженера до того, как вы присоединитесь к команде.
В каждой компании свои роли и обязанности.
Чтобы получить четкое представление о том, чем вы будете заниматься в качестве DevOps-инженера, задайте следующие вопросы.
- Какие повседневные задачи будут стоять перед проектом?
- Ведутся ли какие-либо работы по автоматизации или это проект по техническому обслуживанию?
- Какие инструменты DevOps используются в проекте в настоящее время?
- Планируются ли какие-либо новые действия по миграции или разработке?
- Какова дальнейшая дорожная карта проекта?
- Как часто будет требоваться поддержка по вызову? Предусмотрена ли компенсация за поддержку по вызову?
- Будут ли проводиться ночные смены?
- Фиксировано ли время работы или оно меняется в зависимости от проекта?
- Есть ли в компании традиция работать по выходным?
- Спросите о размере команды. Конечно, никто не хочет выгореть на работе!
Вы можете задать больше вопросов, которые, по вашему мнению, соответствуют вашим целям в обучении и карьере. Если бренд хороший, это ещё не значит, что работа будет качественной.
В целом, вот что вам следует знать о повседневной работе инженеров DevOps.
- Инженеры DevOps не создают конвейеры и средства автоматизации каждый день. Вместо этого большая часть работы по автоматизации выполняется один раз.
- Инженеры DevOps должны быть готовы к дежурствам для поддержки проекта. Однако в некоторых проектах есть исключения.
- Вы можете быть частью команды разработчиков платформы, команды разработчиков приложений, команды поддержки,
- Если вы работаете в команде разработчиков платформы, то непрерывная разработка и внедрение инноваций происходят в рамках создания инструментов платформы. Это будет отличный опыт для обучения.
- Если вы собираетесь работать в команде AppOps, вам придётся использовать инструменты, разработанные командами платформы, и, возможно, у вас будет возможность расширить их в соответствии с требованиями. Но вы будете участвовать в ежедневных совещаниях, чтобы понимать, что происходит в проекте.
- Если вы работаете в команде поддержки, у вас будет руководство по решению проблем, но вероятность того, что вы будете участвовать в обсуждении дизайна, ниже.
Старайтесь избегать ночных и посменных смен. Здоровье важнее всего.
Интервью с DevOps-инженером
Требования варьируются в зависимости от организации и проекта.
Например, команды, которые планируют расширяться не спеша, ищут инженеров с хорошей базовой подготовкой. Им неважно, сколько инструментов вы знаете; вместо этого они обращают внимание на основные принципы работы в сфере ИТ во время собеседования. Чаще всего это происходит в крупных продуктовых компаниях.
С другой стороны, есть компании, предоставляющие услуги, которые нанимают инженеров с сертификатами и знаниями инструментов в соответствии со своими потребностями. Например, если компания ищет или пытается внедрить проект DevOps на AWS, она будет искать людей с опытом работы и сертификацией AWS.
Я вижу, что организации ищут «DevOps с использованием искусственного интеллекта».
То есть они хотят знать, можно ли использовать инструменты AIOps для сокращения «среднего времени восстановления» (MTTR).
Сертификация в области MLOps или генеративного искусственного интеллекта для облачных сервисов становится новым стандартом для организаций, желающих заключить выгодные контракты на обслуживание.
Кроме того, на большинстве собеседований вас будут проверять на знание программирования или написания сценариев. Некоторые компании могут даже дать вам задание разработать и настроить автоматизацию инфраструктуры и компонентов для конкретного сценария использования.
Что касается продуктовых компаний, то они удвоили внимание к основам компьютерных наук. Потому что, когда ИИ-агент (например, помощник по написанию кода) предлагает сетевую конфигурацию, только инженер, разбирающийся в основах, может быстро её понять.
Также они спрашивают о «проектировании системы для агентов». Например: «Как создать изолированную среду, в которой агент ИИ может безопасно выполнять скрипты Python для устранения производственной ошибки без доступа к нашим секретным данным?»
Короче говоря, поскольку всю рутинную работу теперь выполняет искусственный интеллект, от DevOps-инженеров требуется больше знаний.
Часто задаваемые вопросы о DevOps-инженерах
Давайте рассмотрим некоторые часто задаваемые вопросы о DevOps.
Как стать DevOps-инженером?
Единого плана обучения DevOps не существует. Если вы работаете в сфере разработки, контроля качества, производительности или поддержки, вам нужно изучить автоматизацию инфраструктуры и CI/CD. Если вы новичок, вам нужно сосредоточиться на программировании, концепциях операционных систем, облачных технологиях и контейнерах, чтобы стать DevOps-инженером. Самое главное — вам нужно выбрать реальный пример использования и поработать над ним, прежде чем идти на собеседование. Вот пример список задач DevOps POC.
Нужно ли DevOps-инженеру программировать?
Это зависит от проекта, над которым вы работаете. Например, есть вакансии DevOps-инженеров, которые специализируются на разработке платформ. В этом случае программирование обязательно. Вам нужно знать программирование, чтобы разрабатывать индивидуальные требования для автоматизации инфраструктуры и CI/CD. Кроме того, для большинства собеседований в сфере DevOps вам нужно пройти этап, связанный с программированием и написанием скриптов.
Чем именно занимается инженер DevOps?
Работа DevOps-инженеров заключается в сотрудничестве с разработчиками и межфункциональными командами для упрощения процесса CI/CD. Самое главное — уделять больше времени разработке для автоматизации повторяющихся задач. Помимо автоматизации инфраструктуры, DevOps-инженеры должны заниматься устранением неполадок и мониторингом производственных и непроизводственных платформ и приложений.
Какие навыки нужны для DevOps?
Для DevOps обычно требуются такие навыки, как программирование, понимание принципов работы операционных систем, знание распределённых систем, сетевых технологий, мониторинга, устранения неполадок, работы с контейнерами, автоматизации инфраструктуры, управления конфигурацией, контроля версий и инструментов CI/CD, таких как Jenkins, GitlabCI, GitHub Action и т. д.
Какой сертификат лучше всего подходит для инженера DevOps?
Существует множество сертификатов для инженеров DevOps. К сожалению, универсального сертификата для всех не существует; ваш выбор зависит от того, какие технологии или инструменты вас интересуют. Например, если вы хотите стать облачным DevOps-инженером, вам больше подойдут облачные сертификаты, а если вы работаете с контейнерами, вам помогут сертификаты Kubernetes. Чтобы узнать больше, ознакомьтесь с руководством по лучшим DevOps-сертификатам.
Заменяют ли инструменты ИИ DevOps-инженеров?
Нет. Однако инструменты ИИ упрощают процесс обучения для DevOps-инженеров и позволяют быстро реализовывать проекты. DevOps-инженерам следует использовать инструменты ИИ для повышения своей продуктивности.
Читайте блоги DevOps
Прочтите хотя бы один технический блог о DevOps, связанный с разработкой., прочтите подробнее. знающий инженер DevOpsЕсли вы хотите стать Изучайте темы, которые не связаны с вашей повседневной работой, чтобы расширить свой кругозор.
Подпишитесь на все инженерные блоги, такие как Netflix, Twitter, Google и т. д.. Узнайте, как они используют правильные наборы инструментов, стратегии развёртывания и свои последние проекты с открытым исходным кодом.
Подписывайтесь на единомышленников в LinkedIn, Reddit, Medium, Quora и т. д.
Ресурсы
Задокументируйте свои знания
Полезно делиться с другими своим опытом и знаниями. Вы можетепубликовать обучающие материалы, делиться знаниями и опытом в своем блоге.
Это поможет другим и создаст для вас личный бренд. Настройка блога на WordPress или Medium занимает менее 30 минут.
Или вы можете создать документацию в репозитории GitHub.
Всякий раз, когда вы узнаёте что-то новое о DevOps, вы можете написать об этом. Это будет полезно как для вас, так и для других. Вы можете поделиться этим в группах LinkedIn, на Dzone и т. д.
Заключение
Я поделился подробной и практичной дорожной картой DevOps, которая поможет вам начать свой путь в качестве DevOps-инженера. Убедитесь, что вы хорошо разбираетесь в основах информационных технологий. Это значительно упростит процесс обучения.
Кроме того, инструменты и процессы, используемые в DevOps, не ограничиваются теми, что упомянуты в этой статье. Однако это наиболее распространённые инструменты и технологии с открытым исходным кодом, с которых можно начать, чтобы стать инженером DevOps.
Кроме того, активная работа над DevOps-проектами улучшит ваши навыки. Даже если у вас нет такой возможности в вашей организации, вы можете использовать бесплатные облачные кредиты для тестирования в реальных условиях.
Теперь я хотел бы услышать ваше мнение:
Что для вас самое важное в этой статье?
Или, может быть, у вас есть вопросы о различных вертикалях?
Обсудить эту статью можно в Телеграм канале: https://t.me/linautonet