Что такое DevOps
DevOps – это подход к разработке программного обеспечения, который позволяет достичь тех же результатов более быстро и эффективно. Так происходит за счёт сплочённой работы специалистов различного профиля над одним проектом.
Dev – это сокращение от development (разработка), тогда как Ops – operations (эксплуатация)
Эти процессы, которые раньше шли независимо друг от друга, теперь взаимосвязаны. Повышается способность сотрудников корректировать свои действия, реагировать на современную ситуацию и реалистично оценивать сделанное.
Предыдущей методологии не хватало здравого смысла, так как при отсутствии целостности проекта теряется понимание целей, а также сложно оценить способы их достижения. Чем больше в команде обоюдного контроля, тем точнее оттачивается продукт.
Из чего состоит DevOps
Хотя название методологии сложено из двух частей, в ней объединены три разных, но глубоко взаимосвязанных направления:
-
Разработка: написание непосредственно того кода, который является основой программного продукта
-
Тестирование (QA/QC): выявление всех вероятных уязвимостей, исправление недочётов
-
Эксплуатация: здесь речь идёт уже об инженерах, которые поддерживают серверы и размещают на них готовый код
Почему так важно, чтобы были задействованы ещё и тестировщики? Дело в том, что если не выстроить их своевременное общение с программистами и инженерами, можно потратить на выявление и исправление багов больше времени. А это означает, что вы понесёте не только материальные, но и репутационные потери.
Оперативно реагировать на проблемы – это ключевое в написании и отладке программного продукта
Целостностью проекта занимается DevOps-инженер. Именно он контролирует всё происходящее и передаёт главную информацию между разными специалистами, чтобы все проблемы можно было своевременно решить, а недочёты – исправить.
Почему не получается как раньше
Основная причина, по которой потребовалась прогрессивная методика, – это Интернет. Раньше ПО писали для офлайн-использования. Разработка была более медленной и предсказуемой. Но теперь все значимые сервисы находятся в онлайн-пространстве. А это означает постоянный приток информации – не только от пользователей, но и непосредственно от среды Интернета. Приходится отслеживать все изменения и держать руку на пульсе, чтобы действительно иметь успех.
Преимущества методологии
Пока исправляют предыдущие недочёты, можно собрать свежую обратную связь, а другие специалисты заняты, например, добавлением полезных функций по просьбе пользователей. На всё в сумме уходит гораздо меньше времени, команда не простаивает.
Помимо всего прочего, это означает, что ваш продукт быстрее выйдет на рынок и начнёт приносить реальные деньги. Есть и другие достоинства у Devops, вот некоторые из них
У такой системы множество преимуществ, и наиболее очевидное – скорость. Так как действия умело скоординированы, то многие этапы идут не последовательно, а одновременно.
Гибкость
Возможность оперативно реагировать на ситуацию особенно важна, когда мы говорим о постоянно меняющейся среде Интернета.
Даже исходно правильный код может порождать баги, столкнувшись с обычными изменениями или с серьёзными угрозами.
Гибкая реакция достигается не только за счёт активного и продуктивного общения, но и благодаря облачной инфрастуктуре, которая упрощает обновления и исправления.
Безопасность
Среди инструментов есть и такие, которые позволяют выявлять и устранять угрозы. Причём это программы, которые защищают ПО автоматически.
Там, где сотрудники в силу человеческого фактора могли что-то не заметить, срабатывает техника. Это имеет значение как для безопасности, так и для доверия людей к вашему сервису.
Они точно знают, что могут ощущать себя уверенно и комфортно. Иногда именно этот критерий побуждает их выбрать вас из множества других.
Стоимость работы специалистов ниже
Обычно в IT можно видеть почасовую оплату, что при постоянных простоях выливается в серьёзные перетраты. Но когда разработка происходит слаженно и безостановочно, то все вложения окупаются. Пока специалист не занят одной задачей, ему дают другую.
Следует отметить, что подобный тайм-менеджмент – одна из составляющих мастерства DevOps-инженера. Он распределяет нагрузку равномерно и контролирует выполнение заданий. Если он умеет мыслить как тактически, так и стратегически, то экономия будет существенной.
Именно потому выгодно оплачивать его труд: выгода в данном случае превышает затраты. Есть у такой схемы и психологическая сторона: простои расхолаживают, а уверенный темп, напротив, бодрит. Программисты, тестировщики и инженеры не потеряются во времени и будут ощущать себя нужными.
Некоторый инструментарий
Как уже говорилось выше, многое приходится автоматизировать, так как DevOps подразумевает довольно сложную систему. Делать всё вручную было бы слишком долго, а это свело бы на нет все выгоды методики. Расскажем о нескольких наиболее популярных продуктах.
Puppet
Это программа, которая помогает разворачивать идентичную конфигурацию на множестве серверов сразу, то есть её основное предназначение – экономия времени. Вы сможете поддерживать хосты в нужном состоянии.
В Puppet применяется pull-модель, то есть клиенты обращаются к серверу и получают конфигурацию. Хотя у этой модели есть свои недостатки, многим она всё-таки представляется удобной. При этом язык управления достаточно понятный, лаконичный. Можно освоить базовые принципы Puppet в течение краткого срока.
GitLab
Наиболее известная программа для управления конфигурациями. Это система, в которой работает непрерывная интеграция и непрерывное развёртывание контента – сокращённо CI/CD-система.
GitLab сохраняет свою популярность в силу того, что охватывает весь жизненный цикл DevOps. Это гибкий инструмент: он позволяет работать как на сервере, так и в облаке. Учтены все актуальные потребности DevOps.
Grafana
Для любого проекта важно видеть, как развивается ситуация. Для этого применяют программы мониторинга, и одна из них – Grafana. Особое свойство этого продукта – удобная и понятная визуализация данных, что упрощает их анализ.
Нет необходимости тратить время на то, чтобы усвоить информацию, и можно перейти к более глубоким обобщениям, выводам и новым идеям на основе результатов предыдущего этапа.
Docker
В любой работе бывают ошибки, в особенности это касается кода. Для исправления багов следует поместить ПО в изолированную среду. Именно для этого предназначен Docker. Он упаковывает программу в контейнер, который можно затем скопировать нужное количество раз, чтобы предусмотреть все варианты кода. Ответ на обратную связь о багах будет максимально оперативным.
Это снижает риск недовольства со стороны пользователей и помогает быстро справиться с угрозами безопасности. ПО, которое исправно работает, может со временем стать уязвимым, и тогда необходимо его усовершенствовать, сделать более устойчивым. Docker справится и с этим.
Как внедрить DevOps в свою работу
Переход на DevOps непрост. Требуется перестроить все привычки. Однако это в конечном счёте принесёт прибыль, а также новые возможности в реализации задач компании. При внедрении придётся решить четыре проблемы:
Преодоление инерции
Любые изменения подразумевают психологическую инерцию. Тяжело ломать старые привычки, менять наработанные методы. Если инициатива внедрения исходит от сотрудника, то главное – это убедить руководство в целесообразности новшеств. DevOps потребует затрат, а предсказать перспективы заранее невозможно. Руководителю потребуется время, чтобы решиться перестроить взаимодействие.
Если инициатива исходит сверху, то самим сотрудникам тоже будет непросто принять происходящее. Поможет лишь время, терпение, а главное – умение мотивировать.
Техническое обучение
Когда решение будет принято, придётся учиться. Это касается и отдельных навыков, и модели мышления. Необходимо на практике понять, как устроен DevOps. Не у всех получится переключиться сразу. Вероятно, поможет решение отдельных рабочих задач с проговариванием того, что именно сейчас делается, как и почему. В дальнейшем это будет уже очевидным.
Автоматизация процессов
Так как успех в DevOps зависит (в том числе) от выбранного ПО, то предстоит хорошо продумать, какие именно программы и сервисы выбрать, чтобы они стали слаженной системой. Необходимо будет консультироваться с опытными специалистами, которые на практическом уровне понимают различия между аналогичными программами и могут объяснить это понятным языком.
Анализ результатов
Потребуется и подведение первых итогов. Руководителю, который не делал этого раньше, будет сложно сразу понять, идёт ли разработка правильно или требуется корректировка. В подобном анализе необходим опыт.
Отчасти может помочь консультация с экспертами, но такие советы играют вспомогательную роль, потому что только руководитель может сделать окончательные выводы и принять стратегически значимые решения – он знает свою компанию изнутри. Лидеру придётся учиться точно так же, как и остальным, но с большей степенью ответственности.
При достаточном здравом смысле можно с опорой на опыт экспертов построить процессы грамотно. Тогда внедрение DevOps поможет оптимизировать все рабочие процессы и даст бизнесу новый виток развития.