Мы расскажем вам, что такое методология DevOps и в чем же заключается суть профессии DevOps инженера? Сколько получают специалисты в данной области? Где они требуются и как войти в сферу?
DevOps — это набор практик, подходов к разработке программного обеспечения, которые заключаются в том, чтобы разрабатывать лучше и эффективнее это ПО.
Девопс – это не просто методология, это целая философия. Это агрегация всех тех проблем и знаний, как решить эти проблемы, которые накопились за все это время, в сфере программирования.
Соответственно, DevOps-инженер – это тот, кто внедряет методологию DevOps в компании. Он понимает этапы разработки и этапы эксплуатации, понимает архитектуру продукта, взаимодействия его компонентов и взаимодействие продукта с внешней средой, может оценить риски того или иного решения, и как это решение повлияет на дальнейшую судьбу продуктов. То есть это человек, который понимает в разработке, понимает в эксплуатации, и может решить конфликты между ними. Плюс ко всему он может использовать средства автоматизации, которые предоставила эксплуатация, подготавливает приложение впрок и автоматизирует какие-нибудь процессы. В общем, помимо методологии делать что-нибудь «руками».
Появление и суть методологии
В семидесятых годах прошлого столетия этапы разработки программного обеспечения были похожи на ступеньки, по которым потихонечку спускалась вода. Их называли каскадная или водопадная модель. То есть по этой модели все этапы разработки были последовательны. Сначала определяли требования ПО, дальше проводили анализ, затем проектировали. Все что напроектировали – кодили, затем тестировали и сдавали в эксплуатацию.
Со временем недостатки такого подхода становились всё более очевидными. И заказчик видит только конечный продукт, и тестирование происходит только в конце. Вы представляете, если тестировщик нашел баг, как придётся пройти опять «вверх» по этим ступенькам и обратно. В общем, они подумали и решили, что надо тестировщиков привлекать каждому этапу разработки этого продукта. И решили сделать v-образную модель приблизительно в 80-х годах. На каждом этапе осуществляется проверка, и архитектурные ошибки сократились. Но вот беда, все равно есть косяк: если человеческий фактор на предыдущем этапе недоглядел или забил, цена этой халатности велика. Чтобы вернуться и исправить, нужно время и деньги. К тому же и стали развиваться web-сервисы. А разработка по этой модели к ним не применима.
Со временем придумали целых две модели разработки. Инкрементальная и спиральная модели. В чем-то они похожи, обе модели проповедует разбиение создания продукта на кусочки. Приведем пример. Мы хотим создать какой-нибудь продукт, например, чат-бот. Но мы не знаем насколько этот продукт будет востребован у пользователей. Соответственно, мы выкатываем ограниченный функционал данного продукта. Далее смотрим и собираем отзывы, и прикручиваем все с новой и новой итерацией разработки программного продукта новые фишечки. В итоге у нас получается крутой продукт. При этом на каждом этапе развития продукта мы можем от него либо отказаться, либо поменять вектор развития, не потратив кучу денег.
В чем же отличие то двух подходов?
В спиральной модели с каждым этапом более углубленно оценивают риски, и с каждым витков спирали процесс разработки усложняется. На основе инкрементальной модели появилась такая технология, как Agile – гибкая разработка.
Если посмотреть на все эти методологии и знаменитый круг Agile можно заметить, что тут не хватает одного элемента – Ops. Раньше разработка, то есть архитекторы, программисты, тестировщики, аналитики и так далее – это был один лагерь, а эксплуатация – другой. И на разработку Ops-сы в большинстве своем вообще никак не влияли. Программисты и тестировщики о них вспоминали, когда нужно было развернуть какую-нибудь тестовую среду, а менеджеры, когда не доволен сервисом клиент. И из-за частых конфликтов между системными администраторами и разработчиками, в один момент и появилась профессия DevOps-инженера.
При новых реалиях опсы должны участвовать в разработке программного обеспечения и понимать, как оно работает, а дэвы должны понимать, как их код крутится на серверах. И при этом по звонку они должны все вместе подниматься и решать проблемы возникшие на продакшене.
Чем занимается DevOps инженер
Так как профессия инженер DevOps появилась сравнительно недавно, нет единого перечня того, что делает девопс. Но мы постараемся простыми словами объяснить, что это такое полезно делает инженер в ходе своих обязанностей.
DevOps инженер собирает воедино все составляющие проекта: от написания кода до тестирования и выпуска приложения.
В задачи DevOps специалистов ходят:
- непрерывная доставка программного обеспечения до клиента
- обеспечение безопасности ПО
- автоматизация технических процессов
- запуск и поддержка сред разработки
- непрерывное улучшение инструментов и технических процессов
Как стать DevOps и кому будет проще это сделать
В любой профессии есть люди с набором определенных знаний, которым та или иная специальность может даться проще. Перечислим таких людей.
System Administrator – админы, которые начали писать скрипт, чтобы автоматизировать простые вещи.
Technical Support – инженеры технической поддержки, которые также в своей работе начали автоматизировать процесс.
Если вы не являетесь ни сисадмином, ни представителем технической поддержки, то, к сожалению, проще вам не будет. Учиться придется много и тяжело.
Просмотрев вакансии на площадках по поиску работы можно выделить несколько требований, чтобы компания наняла вас инженером DevOps.
- Опыт администрирования серверов Linux.
- Опыт конфигурирования серверов.
- Знание Data Science.
- Опыт работы и настройки: Ansible, Jenkins, Docker, Kubernetes, Kafka, RMQ и так далее.
- Настройка Postgresql и
- Опыт работы с системами виртуализации или с облаками.
- Понимание принципов построения сети.
- Навыки программирования на Python или Bash.
- Основы Network TCP, IP addresses, CIDR.
Как сами инженеры говорят, что в связке Python и Bash можно решить 99 процентов задач, связанных с Linux. В связке вот эти два инструмента позволяют решать все. Поэтому хорошее знание языков программирования – это неотъемлемая задача девопса.
Как и в любой IT специальности, приветствуется наличие широкого технического кругозора у DevOps-инженеров. Специалист должен регулярно изучать новые технологии и инструменты работы с ними. К примеру, если вы уже вошли в сферу, то регулярные devops meetup помогут вам набраться опыта от других специалистов по DevOps.
Если же вы только начинаете путь в профессии IT, и решаете получать образование, через прохождение различных курсов, проверяйте, чтобы ваша база знаний включала все вышеперечисленные пункты. На примере тех же JavaScript разработчиков, которые выпускаются всякими школами. Они не знают базу Computer Science. Devops инженеру определенно нужно знать эту базу, потому что без этого, он не будет понимать, как работают процессы на его сервере, как они потребляют эту память, и как это все можно оптимизировать. Если что-то пошло не так, как можно «продебажить». Это максимально актуально для людей, у которых нет IT образования.
Из литературы мы рекомендуем изучить книгу Олифера «Сетевые операционные системы». Она написана таким языком, что ты читаешь, и тебе дальше хочется читать, и ты всё прекрасно понимаешь, о чем они рассказывают. Также, расскажет, кто такой DevOps инженер и в приципе о девопс вам может поведать книга издательства O’Reilly Media под названием «Философия DevOps. Искусство управления IT» .
Где специалисты DevOps пользуются спросом?
Потребность возникает в тех компаниях, где работа завязана на разработке приложений или в организации происходит управление большим количеством серверов. Чем крупнее компания, тем больше вероятность, что она нуждается в DevOps. Так, в спартапах редко встретишь вакансии с потребностью в девопсе, в отличие от тех же гигантов, по типу Amazon, Facebook, Netflix, Google.
Оплата труда инженера DevOps
Если сравнить заработную плату системного администратора и девопса, то у последнего она будет определенно выше. Почему так происходит? Так как в задачи девопса, как мы уже отметили, входит как задача администрирования, так и куча задач по разработке этих автоматизированных вещей, по их поддержке и так далее. Соответственно, за это чисто с рыночной точки зрения очевидно надо доплачивать. Многие админы становятся девопсами именно по двум причинам. Первое – это изучение новых технологий. Им надоело сидеть в своем админстве и заниматься каким-то очень узким кругом задач и они хотят чего-то большего. И второе, конечно же, заработная плата. Порой заработная плата девопосов превосходит даже ЗП программистов.
На данный момент спрос на специалистов DevOps очень велик, а самих инженеров не так уж и много. В связи с этим фирмы готовы отдавать крупную сумму девопсам.
Если рассмотреть статистику, то по России зарплата DevOps-инженеров составляет от 100 до 200 тысяч рублей в месяц. Конечно всё зависит от региона вашего проживания. По статистике, в Санкт-Петербурге работодатели готовы отдавать до 360 тысяч рублей в месяц, что даже выше, чем в Москве.
Взглянув на статистику по миру, можно увидеть средние 8-10 тысяч долларов в месяц, которые получают специалисты.