Сегодня мы поговорим о направлении в разработке продуктов, которому нет и 15 лет, но оно уже прочно вошло в индустрию и хорошо задокументировано.
Что такое DevOps
DevOps — это методология или подход к разработке и управлению программными системами, который объединяет разработку (Development) и операции (Operations). Основная идея DevOps заключается в тесном сотрудничестве между разработчиками программного обеспечения, системными администраторами и другими IT-специалистами с целью ускорения и улучшения процесса разработки, тестирования, развертывания и обслуживания приложений.
DevOps стремится сократить разрыв между разработкой и эксплуатацией программного обеспечения, позволяя командам работать в тесном взаимодействии и обмениваться информацией. Он также поддерживает автоматизацию процессов, использование инструментов контроля версий, непрерывную интеграцию и развертывание, а также постоянный мониторинг и обратную связь, что способствует быстрой и надежной поставке программных продуктов.
Методология появилась примерно в 2009 году, когда пришло понимание, что нужно что-то менять в процедуре разработки, вовлекать в нее больше других сотрудников. Она представляет собой некий вертикальный поток, где все стадии плавно перетекают одна в другую. Когда определены требования к продукту, его начинают проектировать, затем пишут код и собирают его воедино. Затем он переходит к тестировщикам, а после проверок отдела по эксплуатации этот код загружают на компьютеры. Это можно считать запуском продукта.
Зачем нужен DevOps
В прошлые годы существовал некий забор между командой разработки и поддержки, потому что они ставили перед собой разные цели и ключевые показатели эффективности, при том что делали одно дело. Если разработчики стремились как можно быстрее учесть требования бизнеса и интегрировать их в продукт, то сотрудники поддержки всегда делали ставку на работоспособность и любые изменения принимали в штыки. Естественно, было несовпадение в интересах, и DevOps как раз служит для того, чтобы его устранить:
- Разработчики начинают концентрироваться на программном коде, а не инфраструктуре, которая будет на стадии производства.
- Тестировщики получают большие возможности в проверках приложений на разных версиях ОС.
- Сисадмины делают свое дело, а не развертывают и мониторят приложения.
- Бизнес начинает быстрее подстраивать продукты под требования рынка, релизить их новые версии и заниматься улучшением UX.
Как внедрить DevOps в организации
Прежде всего нужно отдавать отчет, что внедрение методологии однозначно перестроит технические аспекты работы компании, изменит роли в командах разработки, зоны ответственности сотрудников, инструментарий и практические подходы. Иногда это может затронуть и стратегические моменты типа бизнес-модели компании, потому что последняя в итоге приобретет новые возможности и сможет масштабироваться.
Критически важный вопрос — правильно оценить, нужна ли DevOps в принципе? И эту мысль нужно правильно же донести до заинтересованных сотрудников, понять, откуда взять ресурсы на интеграцию, которые дает руководство, с которым также предстоит непростой разговор.
Ему же нужно показать, какие боли снимет интеграция DevOps:
- Скорость внесения изменений в продукт. Когда компания может быстро тестировать продуктовые гипотезы и оперативно отвечать на тенденции рынка, это становится ее преимуществом перед конкурентами. Маркетинг, господа!
- Время ответа сайта или мобильного приложения / число отказов системы, которые заметили пользователи. Компании надо постоянно работать с отказоустойчивостью, скоростью восстановления после отказов и предотвращением рисков нарушения безопасности, связанные с действиями злоумышленников.
- Исключение рутины из процедур разработки и поставки продуктов. Команда не утопает в однотипных и скучных делах, а думает о том, как улучшить продукт, креативит.
Достоинства DevOps
- Большая прозрачность и сотрудничество: DevOps ставит акцент на командную работу и сотрудничество между различными отделами и ролями в организации. Это способствует улучшению коммуникации, обмену знаниями и совместному решению проблем.
- Большая надежность и стабильность: DevOps обеспечивает непрерывный мониторинг и обратную связь, что позволяет быстро выявлять проблемы и принимать меры по их устранению. Это помогает повысить надежность и стабильность приложений и инфраструктуры.
- Более высокое качество продукта: Практики DevOps, такие как автоматическое тестирование и непрерывная интеграция, способствуют повышению качества продукта. Раннее обнаружение и исправление ошибок, а также быстрое внедрение новых функций, помогают удовлетворять потребности пользователей.
- Гибкость и адаптивность: DevOps позволяет быстро реагировать на изменения требований рынка и потребностей пользователей. Гибкость в разработке, развертывании и масштабировании приложений позволяет организациям легче адаптироваться к переменам и принимать инновационные решения.
- Улучшенная безопасность: DevOps включает практики безопасности с самого начала процесса разработки и внедрения. Автоматизация и контроль процессов позволяют обнаруживать и устранять уязвимости, а также обеспечивать соответствие стандартам безопасности.
- Снижение затрат: DevOps помогает сократить издержки за счет автоматизации и оптимизации процессов разработки и эксплуатации. Более эффективное использование ресурсов и инфраструктуры позволяет снизить расходы на обслуживание и поддержку.
- Оперативный выпуск новых приложений и функций: Благодаря параллельной разработке и конвейеру можно избежать ситуаций, когда программисты причесывают код долгое время, а тестировщики и сисадмины просто бездействуют, зато в период релиза они не поднимают головы от мониторов. Так как постоянно автоматизируется работа, можно быстрее релизить новые продукты.
- Более низкая стоимость разработки: Все знают, что работа хорошего сисадмина, разработчика или тестировщика в расчете на час стоит весьма приличных денег. Если происходит простой этих специалистов, организация просто отправляет деньги в трубу. Если они постоянно занимаются рутиной, это тоже потери средств. В DevOps-подходе рутина встает на автоматизированные рельсы, поэтому нет простоев и компания платит деньги только за непосредственно работу вовлеченных специалистов. Разработка только определенных функций обходится ей дешевле.
- Улучшенная скорость и эффективность: DevOps позволяет сократить время между разработкой и внедрением приложений. Автоматизация процессов, непрерывная интеграция и развертывание позволяют командам быстрее и эффективнее доставлять новые функции и исправления.
Недостатки DevOps
Несмотря на то, что метод становится общим стандартом, он не обходится без недостатков.
Вот некоторые из недостатков DevOps:
- Сложность внедрения: Внедрение DevOps может быть сложным процессом, требующим изменений в культуре, процессах и инфраструктуре организации. Это может потребовать значительных усилий и ресурсов.
- Необходимость обучения и подготовки: Внедрение DevOps требует знания и понимания его принципов, методологий и инструментов со стороны сотрудников. Обучение и подготовка персонала могут потребовать времени и ресурсов.
- Риск увеличения сложности и зависимостей: Внедрение DevOps может привести к увеличению сложности и зависимостей между различными компонентами и процессами. Если не управлять этими аспектами должным образом, они могут стать источником проблем и сложностей.
- Потенциальные проблемы безопасности: Более частое и автоматизированное развертывание и изменение приложений может создать потенциальные уязвимости в безопасности. Неправильная конфигурация или ошибки в процессе могут представлять риски для безопасности.
- Потеря контроля и стандартизации: Быстрое и частое развертывание изменений может привести к потере контроля и стандартизации в организации. Без должной организации и управления, это может привести к несогласованности и проблемам в управлении версиями и конфигурациями.
- Потребность в инфраструктуре и инструментах: Внедрение DevOps может потребовать дополнительных инвестиций в инфраструктуру и инструменты, такие как средства автоматизации, системы контроля версий, инструменты мониторинга и т. д. Это может повлечь дополнительные расходы для организации.
- Трудности совмещения DevOps с легаси-системами: Внедрение DevOps может столкнуться с трудностями в совмещении существующих легаси-систем и процессов с новыми методологиями и инструментами DevOps. Это может потребовать дополнительных усилий для интеграции и совместимости.
Чем занимается DevOps-инженер
DevOps-инженер занимается реализацией и поддержкой DevOps-практик и инструментов в организации. Их основная задача заключается в обеспечении сотрудничества между разработчиками программного обеспечения и операционной командой для достижения высокой производительности, качества и надежности внедрения программного обеспечения.
DevOps-инженер внедряет технологию в работу так:
- На этапе планирования он определяет архитектуру приложения, порядок его масштабирования и подбирает систему оркестровки контейнеров.
- Проводит настройку серверов, проводит проверку и загрузку кода и тестирование среды.
- Собирает после выпуска продукта обратную связь от пользователей и интегрирует улучшения. Специалист по DevOps делает так, чтобы они проходили незаметно для пользователей, и обеспечивает перманентность процесса обновлений.
- Занимается решением многочисленных и разноплановых задач для налаживания системы взаимодействия тестировщиков, разработчиков, сисадминов, проектных менеджеров и т. п.
Обязанности DevOps-специалиста
В самом общем смысле он должен обеспечивать автоматизацию продуктовой разработки. А если конкретно, в обязанности его входят:
В обязанности DevOps-инженера входят:
- Автоматизация процессов: Они разрабатывают и поддерживают автоматизированные процессы сборки, тестирования, развертывания и мониторинга приложений. Это позволяет ускорить время разработки, улучшить качество и облегчить масштабирование системы.
- Конфигурация и управление инфраструктурой: DevOps-инженеры используют инструменты и практики для управления инфраструктурой в виде кода (Infrastructure as Code). Они создают и поддерживают шаблоны и скрипты для автоматического развертывания и конфигурирования инфраструктуры, включая серверы, сети и сервисы.
- Контроль версий и непрерывная интеграция: DevOps-инженеры работают с системами контроля версий, такими как Git, для управления исходным кодом и координации работы разработчиков. Они также настраивают и поддерживают инструменты непрерывной интеграции (CI), которые автоматически собирают, тестируют и интегрируют изменения в коде.
- Мониторинг и отладка: DevOps-инженеры следят за работой системы, мониторят ее производительность и доступность, а также отслеживают и анализируют логи и метрики. Они также отвечают за обнаружение и устранение проблем в системе и обеспечение высокой доступности приложений.
- Культура и коммуникация: DevOps-инженеры способствуют созданию коллаборативной культуры, где команды разработки и операций эффективно сотрудничают. Они обеспечивают эффективное общение, обмен знаниями и лучшими практиками между разными командами и стейкхолдерами в организации.
Что нужно знать DevOps-специалисту для успешной работы
Этот тот случай, когда знать можно и нужно абсолютно все: особенности работы с Windows- и Unix-ОС, языки программирования, принципы работы СУБД, системы конфигурирования и сборки и т. д.
Рассмотрим названное подробнее.
-
- Языки программирования. Специалисту потребно знать сразу несколько из них, чтобы он мог на одном языке и предметно общаться с программистами. Последним это нужно и для понимания общего хода работы, и для банального уважения того, кто с ними работает в одной команде.
Рекомендуется изучить ЯП Groovy, Python, Go, Ruby. Хорошая новость в том, что досконально их знать не надо, но вот базу синтаксиса, написание простых скриптов и принципов ООП освоить потребуется.
- Операционные системы.DevOps-инженер обязан знать, на какой сервер будет инсталлирован продукт, какова среда его запуска и какое программное окружение у него будет. Естественно, можно работать в каком-то одном векторе: Windows или Linux.
- Системы контроля версий. Если специалист не владеет общепризнанным Git, делать ему в профессии нечего и никакой он не специалист. Без комментариев.
- Облачные провайдеры. Если не пользоваться ими, потребуется вручную запускать сервера (это не всегда проходит гладко), развертывать на них операционные системы и ставить свой продукт, и затем решать многочисленные возникающие при этом трудности. Облачные провайдеры (те же Google, Cloud, Yandex Cloud) устраняют эту рутину с помощью нескольких строк кода, позволяющих их быстро сконфигурировать. Это экономия сил, средств и времени.
- Системы оркестрации. Сегодня благодаря внедрению систем оркестровки контейнеров типа Kubernetes и Docker приложения существуют каждый в своей песочнице и запускаются на отдельных виртуальных машинах. Если случаются неполадки, старый контейнер замещается новым.
- Системы конфигураций. При работе с большим количеством серверов нужно совершать ряд однообразных и рутинных операций, что является сложным и длительным процессом, который однозначно ведет к росту ошибок. С помощью систем конфигурации типа Chef, Ansible, Puppet можно создавать скрипты, понимаемые программистами и сисадминами. Благодаря этим системам проводить однообразные операции автоматизированным способом и снижать количество ручной рутины.
Сколько зарабатывает специалист по Development Operations
Если смотреть в среднем по РФ, зарплата DevOps-инженера с опытом составляет примерно 250 000 рублей. В Москве он может рассчитывать на оплату труда в размере 150 000 – 270 000 и выше в зависимости от компетенций самого специалиста, возможностей компании и масштабов ее работы.
Чтобы проиллюстрировать сказанное выше, посмотрим данные на HH.RU. В качестве региона я выбрал Россию, потому что это будет соответствовать Москве, а в типичном провинциальном городе (например, моей Пензе) такая должность в принципе не котируется:
Данные по зарплатам на декабрь 2022-го года
Как стать DevOps-инженером. Где учиться профессии
Это одна из тех айти-профессий, где не получится начать работать без того, чтобы не иметь за плечами некоторый опыт. Если вы просто напитывались теорией (смотрели курсы, читали книги) стать полноценным джуном не выйдет. Обязательно нужно попрактиковаться:
- Год-два отработайте сисадмином или тестировщиком ПО. Этого должно хватить, чтобы получить минимум представления о запуске приложений, среде их развития и мероприятиях по выявлению и устранению ошибок. Если же нет возможности, лучше пройти на курсы по Unix-системам и всю теорию обязательно (!) у себя дома на ПК.
- Детально изучите принципы функционирования сетевых технологий и несколько раз сами установите, настроите и поадминистрируете ЛВС и глобальные вычислительные сети.
- Изучите дисциплину программирования, т.е. потренируетесь со скриптами в Python, усвоете принципы объектно-ориентированного программирования и продакт-менеджмент.
- Освежите свой английский, потому что без этого будут проблемы в понимании программных интерфейсов и техдокументации.
Инструментарий DevOps-специалиста
В поле деятельности DevOps-специалиста лежат все эти инструменты: он занимается их интеграцией, настройкой и мониторингом работоспособности.
- Системы мониторинга. Предназначены для автоматической проверки приложений и серверов, сборки логов ошибок и рассылки сообщений. Примеры: Sensu, Prometheus, Nagios.
- CI/CD-системы. CI/CD — это комбинация непрерывной интеграции и непрерывного развертывания контента (continuous integration / continuous delivery, или continuous deployment). Выражают квинтэссенцию DevOps, где процессы запараллелены. Они предназначены для настройки скриптов и мгновенного получения обратного связи на код, который дальше пошел по конвейеру. Примеры: GitLab, Docker, Travis-CI, Circle-CI, Jenkins, TeamCity, PHP Censor, Rex, Open Build Service (OBS), Buildbot.
- Системы контроля версий. Это среды, где размещаются в процессе написания и разработки коды. В них можно изучить любое внесенное изменение и оперативно откатить приложение к предыдущей версии. А также объединять разные версии кода, потому что часто с одной и той же функцией может работать одновременно несколько человек. Примеры: Git, Mercurial, Bazaar, Monotone, Darcs.
Что почитать и посмотреть по теме
Каналы на YouTube
Ведущий канала, Антон Павленко — IT-специалист с более чем десятилетним стажем работы. Он профессионально вырос с эникея в небольшой государственной компании до DevOps/SRE в крупной международной компании.
На канале очень много видео, посвященных непосредственно DevOps.
Канал является профильным по теме и рассказывает о новостях из мира IT, авторских курсах и воркшопах, подкастах с экспертами и публикует интервью с классными гостями
Его ведущий — преподаватель университета ИТМО, создатель и лектор дисциплин «Технологии сборки и развертывания ПО» и «Инфраструктура как код» для бакалавриата. На канале он выкладывает свои курсы, проводит обучающие вебинары и воркшопы, приглашает на стримы интересных гостей и рассказывает, как учиться с пользой.
Ведущая канала помогает людям легко изучать темы DevOps. Здесь вы найдете десятки учебных пособий по:
- Docker.
- Kubernetes.
- Jenkins.
- Python.
- Ansible.
- Prometheus Monitoring.
- Terraform.
- YAML.
Книги
-
- Гэри Грувер. Запуск и масштабирование DevOps на предприятии
Издание повествует о том, как масштабировать подходы и принципы DevOps для больших, географически распределенных организаций, а также компаний с жестко и слабо связанными архитектурами. Здесь подробно рассматривается процесс преобразования бизнес-идеи в результат, ценный для заказчика.
-
- Олег Скрынник. DevOps для ИТ-менеджеров. Концентрированное структурированное изложение передовых идей
В издании четко и последовательно излагаются ключевые понятия, принципы и практики DevOps, дано его определение и место относительно других методологий управления ИТ, включая Agile.
Книга посвящена не автоматизации, она акцентирована на разъяснение сути DevOps, построение команды и управление ИТ, без привязки к конкретным технологиям и инструментам.
-
- Джульен Вехен. Безопасный DevOps. Эффективная эксплуатация систем
Книга базируется на личном опыте автора и предлагает важнейшие стратегические решения для защиты веб-приложений от атак, предотвращения попыток вторжения. Читатели увидят, как обеспечить надежность при автоматизированном тестировании, непрерывной поставке и ключевых DevOps-процессах.
-
- Джен Ким, Патрик Дебуа, Джон Уиллис, Джез Хамбл. Руководство по DevOps. Как добиться гибкости, надежности и безопасности мирового уровня в технологических компаниях
Книга покажет, как сформировать непрерывный и стабильный поток работы в IT. Позиционируется авторами как самое подробное руководство по DevOps. Из нее читатели узнают о «трех путях» DevOps: принципе потока, принципе обратной связи и принципе непрерывного обучения. Они научатся понимать и визуализировать потоки ценности, поймут, как интегрировать операции и разработку — и какие преимущества это дает.
-
- Джон Арундел, Джастин Домингус Kubernetes для DevOps: Развертывание, запуск и масштабирование в облаке
Kubernetes — один из ключевых элементов современной облачной экосистемы, который обеспечивает надежность, масштабируемость и устойчивость контейнерной виртуализации. Шаг за шагом читатели строят собственное облачно-ориентированное приложение и создают инфраструктуру для его поддержки, настраивают среду разработки и конвейер непрерывного развертывания, который пригодится при работе над следующими приложениями.
Выводы
- DevOps — это эффективная методология, которая автоматизирует процессы разработки программного обеспечения. Ее целью является ускорение разработки ПО и улучшение бизнес-показателей организации. Для успешной реализации DevOps необходимо иметь понимание и поддержку от инициаторов, сотрудников компании и ее руководства.
- У методологии есть свои преимущества, например, ускорение разработки, но также есть и недостатки, например, затраты на развертывание и обслуживание. DevOps-инженер — это специалист, который руководит всей процедурой внедрения методологии.
- Для успешного функционирования методологии необходимо иметь знание инструментов, таких как системы мониторинга, системы контроля версий и CI/CD (непрерывная интеграция/непрерывное развертывание). В интернете существует множество YouTube-каналов и книг, которые помогут полностью ознакомиться с теорией DevOps.
1080 000