DevOps (акроним от Development Operations), по мнению многих айтишников, является ни чем иным, как культурой, методологией, но никак не профессией. Однако вакансии с тайтлом DevOps-инженер — частое явление на трудовом IT-рынке. Что же такое DevOps на самом деле? Этот неоднозначный вопрос рассмотрел Виталий Беляков, Senior System Engineer в компании EPAM на конференции Open IT Minsk 2022. Делимся главными тезисами из выступления спикера.
Как появился DevOps?
Во времена, когда IT-гиганты только начинали свой путь, разработка программных продуктов строилась по Waterfall, который подразумевал разделение процесса разработки на отдельные блоки с участием определенной команды. По окончании блока работа этой команды заканчивалась, и ответственность переходила к другой команде. Например, изначально был какой-то бизнес-запрос, у которого была концепция и средства на имплементацию решения. На его основе формировались требования, затем бизнес-аналитика формировала дизайн. Далее все это передавалось на разработку, затем в работу включались тестировщики, потом продукт переходил к инженерам operations на стадию развертывания. Далее продукт отправлялся support-командам, которые осуществляли длительную поддержку жизненного цикла приложения. Таким образом, у проекта были ярко выраженные стадии, где все команды исполняли свою обособленную работу.
Такой подход вызывал ряд проблем: проект в итоге мог просто не дойти до конца. Он мог свернуться в середине цикла из-за определенного количества багов, устаревания концепции продукта на рынке (так как рынок развивался стремительно и разработка, релиз этого продукта теряли свой смысл). Такие проблемы встречались очень часто: лишь около 30% проектов были успешны. Основной проблемой при этом была коммуникация между разными командами: участники процесса постоянно вступали в конфликты.
В итоге пришли к выводу, что технические специалисты (technical cover) должны постоянно реагировать на запросы от бизнеса и формировать определенную культуру взаимодействия между всеми командами. Команды должны не изолироваться, а идти на коллаборацию. Это послужило фундаментом для новой методологии, которая в 2001 году получила название Agile.
Согласно этой методологии, участники процесса создания продукта должны быть гибкими и оперативно реагировать на возникающие проблемы. Если в какой-то момент разработки кто-то понимает, что продукт не соответствует потребностям клиента/рынка, тогда команды должны остановиться и подумать о том, куда они будут двигаться дальше, пересмотреть свои взгляды и подготовить другое решение и новые подходы.
Кроме того, Agile предложил идею, согласно которой процесс разработки не должен иметь огромный набор сиюминутных изменений. Это должны быть постепенные оперативные изменения. В результате появились такие термины, как continuous integration и continuous delivery. То есть приложения перестают быть чем-то монолитным, а становятся частью потока коллаборации с инженерами, бизнесом, рынком и пользователями. На основе этой идеи сформировалась такая рабочая схема, как Scrum. Она подразумевает наличие спринтов, разделение большой работы на маленькие части.
Все эти фундаментальные ценности привели к появлению специалиста, который смог бы обеспечить и воплотить в жизнь данные ориентиры, — DevOps-инженера.
DevOps включает в себя как технические, так и идеологические инструменты, методологические указания: как команда должна действовать в той или иной ситуации, как участники процесса должны применять изменения для достижения наилучшего результата в текущей ситуации.
Какие инструменты использует DevOps-инженер?
- Системы управления версиями кода (Git, GitHub, Bitbucket)
- Облачные технологии (Azure Cloud, Amazon Web Services, Google Cloud Provider)
- Автоматизация развертывания виртуальной инфраструктуры (Terraform)
- Системы конфигурации систем (Ansible, DSC и т. д.)
- Построение процессов автоматизации доставки кода (СI/CD)
- Системы управления контейнерными инфраструктурами (Docker, Kubernetes)
Так что же такое DevOps?
DevOps — это частично и профессия, и культура. Это коллаборация двух данных терминов.
С точки зрения профессии, DevOps подразумевает:
- Непрерывную интеграцию и непрерывную поставку (CI/CD) ( Devops-инженеры должны быть способны организовать те или иные решения для своей команды).
- Настройку и управление системами контроля версий для обеспечения работы своей команды.
- Обеспечение гибкой разработки ПО (Применимая к проекту DevOps-практика должна диктовать определенные правила игры).
- Рассмотрение своей инфраструктуры как кода (Вся структура должна быть описана при помощи средств автоматизации и конфигурации).
- Обеспечение непрерывного мониторинга сервисов (Все должно быть прозрачно, Devops-инженеры должны понимать, как их сервис взаимодействует и ведёт себя в той или иной ситуации).
При этом в DevOps важны такие культурные аспекты, как:
- Сотрудничество, видимость, согласование (Необходимо строить сотрудничество между командами и проектами, поддерживать прозрачность и видимость для всех членов команды, действовать согласованно и двигать проект в одном направлении).
- Ответственность и принятие решений (Каждый член команды должен нести ответственность и принимать решения в той или иной ситуации в зависимости от своей экспертизы).
- Более короткие релизы циклов (Они должны содержать минимальный набор изменений и не "взрывать" умы пользователей и сознание разработчиков).
- Непрерывное обучение (Каждый член команды должен непрерывно обучаться и обучать коллег правильному взаимодействию с теми инструментами, с которыми они работают).
Summary
DevOps — это совокупность инструментов, методологий и процессов для изучения жизненного цикла приложения, которая позволяет проекту достичь успеха. Культура это или профессия? Пусть каждый делает выводы сам, опираясь на тезисы выше. Делитесь в комментариях своим мнением на эту тему👇
Научиться планировать и развертывать систему доставки ПО, а также автоматизировать любые процессы можно на курсе по DevOps в IT-Academy.
#DevOPs #сисадмин #айтикурсы