Кто такой девопс и что он делает

Как обычно пишут программы

Тра­ди­ци­он­ный цикл раз­ра­бот­ки про­грамм выгля­дит так:

  1. Про­грам­ми­сты пишут код неболь­ши­ми порциями.
  2. Когда оче­ред­ная вер­сия про­грам­мы гото­ва, она отда­ёт­ся в отдел тестирования.
  3. Тести­ров­щи­ки пишут тесты и ищут ошиб­ки в коде. Если нашли — отда­ют про­грам­ми­стам, и всё начи­на­ет­ся с пер­во­го пункта.
  4. Если оши­бок нет, код отправ­ля­ет­ся на сбор­ку, что­бы вклю­чить его в новую вер­сию программы.
  5. После добав­ле­ния это­го кода в новую вер­сию код сно­ва тести­ру­ют — всё ли нор­маль­но, дру­жит ли новый код со ста­рым и нет ли каких кон­флик­тов. Если есть — код отда­ёт­ся обрат­но программистам.
  6. Если всё в поряд­ке, код идёт в бой, напри­мер, выка­ты­ва­ет­ся на сайт.

Кажет­ся, что всё так и долж­но быть. Но в круп­ных ком­па­ни­ях с боль­ши­ми про­ек­та­ми у тако­го под­хо­да появ­ля­ет­ся мно­го минусов.

Минусы поэтапной разработки

Всё дело в том, что с таким под­хо­дом есть чёт­кое раз­де­ле­ние зон ответ­ствен­но­сти. Допу­стим, у нас про­стая раз­ра­бот­ка, кото­рая раз­де­ле­на по отде­лам так:

  • есть про­грам­ми­сты, кото­рые пишут код;
  • дизай­не­ры, кото­рые натя­ги­ва­ют дизайн на этот код;
  • тести­ров­щи­ки;
  • и отдел выпус­ка финаль­ных релизов.

Про­бле­ма в том, что у каж­до­го из этих отде­лов своё рабо­чее окру­же­ние: они сами сле­дят за сво­и­ми биб­лио­те­ка­ми, фрейм­вор­ка­ми и опе­ра­ци­он­ной систе­мой. Из-за это­го то, что рабо­та­ет у одних, может не рабо­тать у других.

В ито­ге все тра­тят вре­мя на син­хро­ни­за­цию тре­бо­ва­ний к коду, ком­по­нен­там, фрейм­вор­кам и биб­лио­те­кам. Рабо­та сто­ит, код не пишется.

DevOps-подход к разработке

Изна­чаль­но тер­ми­ном DevOps опи­сы­ва­ли толь­ко сам под­ход к раз­ра­бот­ке соф­та, но потом этим тер­ми­ном ста­ли назы­вать новую про­фес­сию. DevOps-подход в общих чер­тах мож­но опи­сать так:

  • если что-то мож­но авто­ма­ти­зи­ро­вать — автоматизируем;
  • каж­дый отдел исполь­зу­ет один и тот же софт и настройку;
  • финаль­ный код дол­жен как мож­но быст­рее дохо­дить до того, кто поль­зу­ет­ся этим софтом;
  • еди­ная сре­да для раз­ра­бот­ки, тести­ро­ва­ния и финаль­но­го выпуска.

Бла­го­да­ря это­му под­хо­ду каж­дый отдел полу­ча­ет еди­ную настро­ен­ную сре­ду для рабо­ты — точ­но такую же, кото­рой поль­зу­ют­ся и про­грам­ми­сты, и тести­ров­щи­ки, и ана­ли­ти­ки, и служ­ба под­держ­ки. Это помо­га­ет быст­рее тести­ро­вать и выпус­кать код, а так­же эко­но­мит вре­мя настрой­ки каж­до­го рабо­че­го места.

Кто такие девопсы и что они делают

Что­бы всё это рабо­та­ло на прак­ти­ке, появи­лись девопс-инженеры, или про­сто девопсы. Основ­ная зада­ча тако­го спе­ци­а­ли­ста — настрой­ка и под­дер­жа­ние в рабо­чем состо­я­нии нуж­но­го соф­та в ком­па­нии, а так­же авто­ма­ти­за­ция каж­до­го эта­па разработки.

Вот что может делать девопс-инженер:

  • настра­и­вать сер­ве­ры и авто­ма­ти­че­ски управ­лять их конфигурациями;
  • созда­вать и настра­и­вать вир­ту­аль­ные кон­тей­не­ры для быст­ро­го запус­ка нуж­но­го соф­та. Чаще все­го для это­го исполь­зу­ют Docker;
  • управ­лять эти­ми кон­тей­не­ра­ми из одно­го места и авто­ма­ти­зи­ро­вать всю их работу;
  • настро­ить авто­ма­ти­че­ское тести­ро­ва­ние кода;
  • сде­лать так, что­бы код после тестов авто­ма­ти­че­ски попа­дал в гото­вую сборку;
  • соби­рать дан­ные для мони­то­рин­га рабо­ты всей систе­мы. Если какой-то сер­вис или про­цесс сло­ма­ет­ся, девопс сра­зу дол­жен это уви­деть и отреагировать.

👉 Глав­ная зада­ча девопса — сде­лать так, что­бы авто­ма­ти­за­ции было как мож­но боль­ше и что­бы она дей­стви­тель­но уско­ря­ла разработку.

Что нужно уметь

Что­бы стать девоп­сом, нуж­но осво­ить мно­го разного:

  • прин­ци­пы и тео­рию раз­ра­бот­ки ПО;
  • инстру­мен­ты авто­ма­ти­за­ции рабо­ты с кодом — Git, Jenkins;
  • систем­ное адми­ни­стри­ро­ва­ние на уровне мид­ла или выше;
  • вир­ту­аль­ные кон­тей­не­ры и рабо­ту с ними — Docker и Kubernetes;
  • базы дан­ных — реля­ци­он­ные и нереляционные;
  • веб-серверы;
  • Python или дру­гой язык для напи­са­ния рабо­чих скриптов;
  • систе­мы управ­ле­ния кон­фи­гу­ра­ци­ей сер­ве­ров — Ansible;
  • сбор дан­ных по нагруз­ке и ошиб­кам во всех системах.

Если при этом девопс будет знать хотя бы на уровне джу­ни­о­ра выбран­ный язык про­грам­ми­ро­ва­ния в ком­па­нии — будет вооб­ще иде­аль­но. Так он смо­жет учесть осо­бен­но­сти язы­ка и подо­брать под него нуж­ные инструменты.

Деньги

По дан­ным Хабр Карье­ры, в пер­вом полу­го­дии 2021 года сред­няя зар­пла­та девопс-инженера — 171 тыся­ча в месяц. Джу­ни­о­ры полу­ча­ют в сред­нем 82 тыся­чи, а сеньо­ры — 230 тысяч.

Кто такой девопс и что он делает

Что дальше

Ско­ро пого­во­рим о доке­ре и систе­мах управ­ле­ния вир­ту­аль­ны­ми кон­тей­не­ра­ми. Они здо­ро­во эко­но­мят вре­мя при раз­ра­бот­ке и поз­во­ля­ют быст­ро решать раз­ные зада­чи. Напри­мер, с ними мож­но раз­вер­нуть и пол­но­стью настро­ить кастом­ный ворд­пресс и все нуж­ные сер­ви­сы все­го за 4 минуты.

Текст:

Миха­ил Полянин

Редак­ту­ра:

Мак­сим Ильяхов

Худож­ник:

Даня Бер­ков­ский

Кор­рек­тор:

Ири­на Михеева

Вёрст­ка:

Мария Дро­но­ва

Соц­се­ти:

Олег Веш­кур­цев