В этой статье мы постарались рассказать о сути работы DevOps engineer. Материал написан для новичков и тех, кто интересуется профессией, направлением.
В Интернете много мнений, и они отличаются. Рассмотрим тему под разными углами.
Кто такой DevOps: мнения расходятся
В мире программистов есть 2 мнения, что такое DevOps. И каждое мнение имеет своих поклонников и недоброжелателей: «Вы неправильно толкуете термин!» Обо всем по порядку.
DevOps как практика, философия. 10-15 лет назад разработчики отвечали за программу, а администраторы — что эта программа попадает к пользователю через сервер.
Раньше уходило много времени на то, чтобы исправить ошибку. Системный администратор передавал сообщение разработчику и рассказывал о проблеме. А программист терял время, чтобы выпустить обновление и исправить код.
Ситуация изменилась — компании работают над серией из более 10 программ каждый день. Нужно выпускать обновления, проверять на ошибки и баги. Загляните в смартфон и посмотрите, сколько приложений получили обновление сегодня — не 1 и не 2.
Чтобы конкурировать сейчас, нужно работать быстрее и качественнее других компаний. А как это сделать, если разработчики только пишут код, а системные администраторы — устанавливают на сервер и следят за работой приложения? Как общаться быстрее?
За build отвечает девелопер (Dev), а за test и release сисадмин, оптимизатор (Ops)
Это способ общей работы девелопера и администратора (оптимизатора продукта). Если сисадмину нужно обновление программы, то он делает запрос разработчику в командном чате. А написать скрипт для сервера сисадмин может самостоятельно.
DevOps пользуются компании, вроде Amazon, Microsoft, Etsy, Ebay. Для них важно устранить больше багов и выпустить обновлений, чтобы соревноваться с конкурентами за внимание потребителя.
Если говорить проще, то DevOps — новые правила или способы общения разработчика и администраторов в компании.
DevOps как профессия. Так называют верхушку айсберга в мире системных администраторов. Девопс делает так, чтобы сисадмины и разработчики работали над продуктом быстрее. Посмотрите на упрощенные примеры:
DevOps к коллегам: «Общаемся в Microsoft Teams. Задачи и процесс выполнения прошу зарегистрировать здесь. Возникнут вопросы — пишите мне». Разработчик пересылает код и документацию сисадмину. Тот переносит код на сервер. На этапе установки администратор может найти ошибку. Он не пишет разработчикам, а решает проблему самостоятельно — как DevOps.
Не все инструменты обязательно знать в DevOps. Например, в одной компании работают в Slack. А в другой с Microsoft Teams.
DevOps — это связующее звено между командой разработчиков и командой эксплуатации — сисадминами. Разбирает конфликты в коде, подтягивает обновления для системных администраторов, расставляет задания между отделами. То, как он это сделает — зависит от выбранных инструментов.
Зачем девопсу программирование
Рассмотрим на двух примерах: в первом сисадмин не знает программирования, а во втором — может сам написать код.
Сисадмин получил код от разработчика. Его задача — перенести код на готовый сервер. На этом его рабочие задачи заканчиваются. Для дополнительных программ или обновлений обращается к разработчику. Пройдет немало времени, девелопер напишет скрипт, и сисадмин установит программу на сервер. Это долго.
Другой сисадмин видит, что без скрипта не сможет установить обновление для программы. Вместо письма разработчику, он напишет скрипт сам: сисадмин знает базу программирования, работает с Python и справится с задачей. Разработчик работает над улучшением программы, а сисадмин ему не мешает. Так быстрее.
В компаниях DevOps занимаются задачами, которые не обходятся без навыков программирования. Вот неполный и упрощенный список: устанавливают серверы с нуля, готовят операционную систему под программы, подключают во внутренние сети, мониторят и делают резервные копии.
Без навыков программирования это все равно, что искать иголку в стоге сена: человек не знает размер игры и в каком уголке стога искать. А с базой программирования DevOps понимает, с чем работает девелопер.
Пример инструментов для Junior DevOps.
Если DevOps не знает программирования, то он — системный администратор. Он не читает код от разработчиков и не пишет для серверов.
Где В DevOps пригодится язык Python
С основами программирования для DevOps знакомим студентов на курсе Компьютерной Академии IT STEP «DevOps-инженер». Рассказываем о преимуществах Python, что нужно знать и уметь системному администратору и как закрывать одним языком программирования 99% задач по автоматизации.
Ниже рассмотрим примеры, где DevOps-инженер использует Python в работе.
Инструмент для анализа «холостых ресурсов». Компании мобильной разработки, сотовые операторы пользуются облачными хранилищами. Привычный пример — Google Drive, только в тысячи раз больше. На поддержку облака компания тратит миллионы долларов в год. На Python можно написать бота, который находит неиспользованные места в облаке и отключает их. В среднем, через бота можно убрать до 40-50% неработающих ресурсов и сэкономить столько же бюджета.
Скрипт, который находит опасности в программе. Сервер — это гора информации. И в ручную ее не переработать. Можно написать скрипт, соединить программы мониторинга ошибок и систему задач, вроде Slack или Trello. Программа находит баг в коде, обрабатывает и автоматически создает задачу. Сисадмин видит не ошибку, а уже готовое задание: что нужно сделать, чтобы исправить проблему на сервере.
Python lint-тестов для Ansible и Kubernetes. Чтобы программу увидели люди, ее нужно протестировать и установить на сервер. Тестируют код либо руками и глазами (вставлять в программу, проверять ошибки), либо через готовое решение — написать на Python автоматический тестер. Это полезно, когда сисадмины выпускают 10 программ и 100 обновлений в день. Проверить вручную все невозможно.
Существуют и простые примеры: для онлайн-банкинга пишут специальный скрипт. Чтобы не перегружать сервер, онлайн-приложение раскидывают на части и устанавливают на сотни серверов. Если в сервисе случится сбой, сисадмины найдут ошибку в конкретном сервере, где меньше кода. Это быстрее, чем искать строчку кода в базе на 10 000 одного сервера.
Опорные тезисы
У DevOps 2 точки зрения: первая — это набор практик, как быстро общаться разработчикам и системным администраторам. Вторая — это человек, который налаживает непрерывную работу между отделами. Например: продукт-сервер-обновление-сервер-обновление…
DevOps-у нужно программирование, чтобы не мешать разработчику: самому тестировать продукт, писать программы для серверов. Это не задачи девелоперов, но их нужно кому-то выполнять.
Python достаточно для 99% задач системного администратора.