...

Devops что это за программа

Что такое методология DevOps и кому она нужна

О DevOps всё чаще пишут в иностранных и российских изданиях. Попробуем разобраться, в чём суть методологии и кому она может принести пользу.

10K открытий
Изображение — Matt Moor — CC BY-SA
Что такое DevOps

DevOps — это методология разработки ПО, задача которой наладить взаимодействие программистов и сисадминов в компании. Если ИТ-специалисты из разных отделов недопонимают суть задач друг друга, выпуск новых приложений и обновлений для них затягивается.

DevOps формирует «бесшовный» цикл разработки, тем самым помогая ускорить выпуск программного продукта.

Ускорение достигается за счет внедрения систем автоматизации. Плюс программисты начинают участвовать в настройке серверов и поиске багов, например, они могут писать автоматизированные тесты.

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

Когда разработчик понимает, с чем сталкивается администратор при настройке сервера, он постарается сгладить возможные «острые углы» в коде. Это сокращает количество багов при развертке приложения — по статистике оно уменьшается примерно в пять раз.

Кому нужна и не нужна методология

Многие ИТ-эксперты считают, что DevOps принесет пользу любой организации, которая занимается разработкой ПО. Это справедливо даже в том случае, если компания является простым потребители ИТ-сервисов и не разрабатывает собственные приложения. В этом случае внедрение DevOps-культуры поможет сконцентрироваться на инновациях.

Исключение составляют стартапы, но и здесь все зависит от масштабов проекта. Если ваша цель — запустить минимально жизнеспособный продукт (minimum viable product, MVP), чтобы протестировать новую идею, то можно обойтись и без DevOps. Например, основатель Groupon в начале работы над сервисом сам вручную размещал все предложения на сайте и собирал заказы. Никаких инструментов автоматизации он не использовал.

Внедрять методологию и инструменты автоматизации имеет смысл только тогда, когда приложение начинает набирать популярность. Это поможет наладить бизнес-процессы и ускорить выход обновлений.

Как внедрить DevOps

Далее — несколько рекомендаций для перехода на новую методологию.

Выявите проблемы в бизнес-процессах. Перед внедрением методологии выделите цели и проблемы организации. От них будет зависеть стратегия перехода на DevOps. Для этого составьте список вопросов, например:

  • На что уходит больше всего времени при обновлении ПО?
  • Можно ли автоматизировать этот процесс?
  • Влияет ли на это структура организации?

Подробно о выявлении проблем в организации можно почитать в книгах «Проект „Феникс“» и «Руководство по DevOps» от авторов методологии.

Поменяйте культуру в компании. Важно убедить всех сотрудников изменить привычные способы работы и расширить свой спектр компетенций. Например, в Facebook все программисты отвечают за жизненный цикл приложения целиком: от написания кода до внедрения. Также в Facebook нет отдельного отдела тестирования — тесты пишут сами разработчики.

Начните с малого. Выберите процесс, который отнимает больше всего времени и сил при выпуске обновлений, и автоматизируйте его. Это может быть тестирование или процесс развертывания приложений.

Эксперты советуют первым делом внедрить инструменты распределенного контроля версий. С ними проще управлять исходниками. Среди таких решений наиболее известны Git, Mercurial, Subversion (SVN) и CVS.

Также стоит обратить внимание на системы непрерывной интеграции, ответственные за сборку и тестирование конечного продукта. Примеры таких инструментов: Jenkins, TeamCity и Bamboo.

Оценивайте улучшения. Разработайте метрики эффективности внедренных решений и составьте чек-лист. Метриками могут служить частота релизов, время работы над программными функциями, количество багов в коде.

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

Критика DevOps

Хотя методология помогает организациям быстрее принимать решения, касающиеся разработки приложений, сокращает количество ошибок в ПО и поощряет сотрудников учиться новому, у неё есть и критики.

Есть мнение, что программисты не должны разбираться в деталях работы системных администраторов. Якобы DevOps приводит к тому, что в компании вместо специалистов по разработке или администрированию появляются люди, разбирающиеся во всем, но поверхностно .

Также считается, что DevOps не работает при плохом менеджменте. Если у команд разработчиков и администраторов нет общих целей, в этом виноваты менеджеры, которые не организуют взаимодействие между командами. Чтобы решить эту проблему, нужна не новая методология, а система оценки менеджеров на основе отзывов от подчиненных. Вот здесь можно почитать, какие вопросы следует включать в формы опросов для сотрудников.

Подведем итог — как внедрить DevOps:

  • Сформулируйте задачи, которые должна решить новая методология.
  • Обсудите решение с командой. Выслушайте мнения сотрудников и определите, какие инструменты автоматизации имеет смысл внедрить.
  • Автоматизируйте часть IT-процессов. Начните с задач, которые наибольшим образом годятся для автоматизации.
  • Анализируйте метрики. Соотносятся ли усилия на внедрение DevOps с пользой, которую приносит методология? Если нет, стоит изменить подход к внедрению или попробовать другую методологию разработки. Если да, продолжайте внедрять и анализировать новые инструменты.

Что еще почитать в выходные:

  • «Не только Agile: 10 книг про управление проектами»
  • «Три проблемы на рынке ЦОД — как их решат стартапы»

24 комментария
Написать комментарий.

Всегда был уверен, что DevOps – не методология, а вполне себе специальность человека, который занимается внедрением ПО вкупе с настройкой CI/CD, контейнеризацией и тд.

Развернуть ветку

Спасибо, что прочитали.

В следующем материале как раз будет рассказ о работе DevOps-инженера: чем занимается такой специалист, какие компании нанимают, как в этой сфере развиваться и так далее.

Развернуть ветку
Аккаунт удален
Развернуть ветку

Я бы почитал с удовольствием. По мне так чем разнообразнее статьи на сайте — тем интереснее. Каждый посетитель найдёт что-то для себя.

Да и где писать такое в рунете? Хабр сдувается, к сожалению.

Развернуть ветку
Аккаунт удален
Развернуть ветку

На пикабу вам расскажут, что такое автослесарь и как стать кассиром в соседней пятерочке.

Развернуть ветку

Чтобы после того, как вы собрали мвп из говна и палок вы понимали куда двигаться дальше.

Развернуть ветку
Аккаунт удален
Развернуть ветку

Комментарий удален модератором

Развернуть ветку

Руководитель компании должен хотя бы поверхностно понимать что куда развивается и что вообще есть.

Как иначе он наймет нужного инженера.

Развернуть ветку

для этого есть ХРюши

Развернуть ветку

Формирование команды одна из ключевых функций лидера.
И никакой кадровик не скажет вам кого нанимать. Они помогут подобрать человека под ваш запрос. Эйчара тоже кто-то должен нанять.

Развернуть ветку

Мы с вами видимо из разных реальностей

Развернуть ветку
Аккаунт удален
Развернуть ветку
Аккаунт удален
Развернуть ветку

Ага, у меня в конторе пару лет хотят внедрить DevOPS, даже соответствующие должности появились. Но кажется, за год никто так и не понял, кто такой DevOPS и для чего он нужен. Такое ощущение, что просто хотят ухватиться за ‘моду’.

Хотелось бы рассмотреть более конкретные примеры взаимодействия DevOPS с администраторами и разработчиками.

Развернуть ветку
Аккаунт удален
Развернуть ветку

Звучит ожуенно.
Пожалуй добавлю статью в избранное.

Развернуть ветку

“Mercurial, Subversion (SVN) и CVS” – автор из берлоги вышел, где писал 5 лет статью?

“DevOps — это методология разработки ПО, задача которой наладить взаимодействие программистов и сисадминов в компании.”
Написано странно и непонятно.

Как это зародилось в реале: DevOps родился как ответ на проблему, когда серверов стало много, а конфигурация и развертываение(deployment) приложений стали настолько сложны, что обычные сисадмины стали для этого неэффективны. Поэтому начали набирать отдельных программистов DevOps, которые еще что-то понимали в сисадминстве и могли писать сценарии для deployment, конфигурировать сервера в облаках и адаптировать приложения под новые реалии.

Нужен ли Вам отдел DevOps или нет – зависит, соответственно, от количества серверов, количества и сложности приложений и навыков текущих сисадминов, может они уже по факту и так исполняют DevOps 🙂

Шпаргалка по инструментам DevOps

В сферу Devops часто приходят разработчики и системные администраторы, у которых уже есть опыт инженеринга и знания о разработке и сетях. Но им приходится осваивать DevOps-инструменты. В этой статье расскажем о самых распространённых из них.

128 открытий

Важно понимать, что это далеко не все инструменты, но это типичный стек. Знания и опыт работы с ними щедро оплачиваются работодателями. Зарплаты могут начинаться от 300 и 400 тысяч рублей.

Какие задачи решает DevOps-инженер

DevOps инженер — это специалист, который объединяет задачи разработки (Development) и операционной поддержки (Operations). Его задача — сделать разработку и эксплуатацию эффективнее. Для этого он занимается автоматизацией процессов, устраняет проблемы между разработчиками и системными администраторами, создает системы мониторинга сервисов. У него может быть большой стек инструментов и технологий, связанных с каждой из этих задач. Рассмотрим его подробнее: от самых базовых, до продвинутых.

Так выглядит хранилище исходного кода самого Git на веб-платформе Github.

Git — это система управления версиями кода, которая хранит историю изменений. Она позволяет вернуться к предыдущим версиям файлов и работать с ними всей командой специалистов. Простая аналогия: вы и ваши коллеги работаете в одном Google Docs, где тоже можно вносить изменения и отслеживать кто и какие правки вносил, чтобы не испортить всю работу.

Так выглядит интерфейс Ansible Tower — продвинутой платной версии. В бесплатной нужно работать по хардкору — в командой строке и текстовом редакторе. Источник: Ansible.com.

Ansible — это инструмент автоматизации задач по развёртыванию и настройке систем. С помощью него один DevOps-инженер может в короткий срок поднять больше сотни серверов с заранее сконфигурированными настройками.

DevOps-инженеры следят за работой над кодом и с помощью Git и Ansible разворачивают его на серверах. Многочисленные скрипты развёртывания, файлы конфигураций и другие настройки — это тоже код, который является частью IT-инфраструктуры. За него отвечают DevOps-инженеры.

Docker — это инструмент контейнеризации. С помощью него код упаковывают в контейнеры и разворачивают на сервере.

Интерфейс Docker с запущенными контейнерами. Источник: Docker.com.

Для чего нужна контейнеризация? Представьте, что вы пересаживаете цветы. Сейчас они хорошо растут в своем горшке на подоконнике: у них оптимальная почва, им достаточно света и влаги. Но когда вы их пересадите в другую почву и в другие условия, они могут погибнуть. Поэтому нужно оставить ту же землю и дать столько же влаги и света. То же самое происходит и с приложением: если не создать такие же условия, как и были при разработке, то приложение может сбоить или вообще не запуститься. Контейнеры позволяют безопасно переносить сервисы, чтобы их можно было запустить на других компьютерах.

Умение работать с контейнерами в Docker становится все более важным навыком для любого IT-специалиста: и разработчика и тестировщика. Для DevOps-инженера — это мастхэв. Он должен уметь создавать и собирать контейнеры, локально тестировать, развёртывать на серверах и управлять ими. Уверенное знание Git, Ansible и Docker уже может дать старт в профессии.

Kubernetes

Если приложение из множества микросервисов быстро растёт, то нужен Kubernetes. Его часто называют оркестратором, потому что он позволяет управлять большим количеством контейнеров и масштабировать приложение. Например, когда количество запросов к приложению растет, Kubernetes запустит дополнительные мощности. В нём можно реализовывать сложные сценарии управления, балансировки и мониторинга.

Так выглядит веб-интерфейс Kubernetes с дашбордами. Источник: Kubernetes.com

При работе с Kubernetes в задачи DevOps-инженера может входить создание архитектуры микросервисов, настройка Kubernetes, отладка и обновление. Это сложный, но очень востребованный инструмент. Зарплаты специалистов со знанием Kubernetes в России по данным HH в среднем начинаются от 150 тысяч рублей.

Prometheus + Grafana

DevOps-инженеры следят за состоянием и работоспособностью приложений. Для этого настраивают целую систему мониторинга и визуализации, которая состоит из стека инструментов.

Одно из самых распространённых решений для мониторинга — связка Prometheus + Grafana. Prometheus собирает данные о системе. Но эти метрики сохраняются в сыром виде. Человеку их сложно анализировать. Поэтому нужна Grafana, которая позволяет их визуализировать. С помощью неё можно строить информативные и наглядные дашборды из графиков, чартов, таблиц, статусов и т.д. Рабочий день многих DevOps-инженеров начинается именно того, что они смотрят в дашборд — всё ли в порядке с системой.

Grafana — это красиво и информативно. Источник: Grafana.com.

Terraform — инструмент для автоматизации настройки серверной инфраструктуры. Он совместим с популярными облачными провайдерами и позволяет одной кнопкой развернуть любые доступные там сервисы: от баз данных до балансировщиков.

Интерфейс Terraform. Источник: Terraform.io

Terraform и Ansible дополняют друг друга и могут быть использованы вместе. Terraform помогает с развертыванием инфраструктуры, а Ansible настраивает и управляет операционной системой, приложениями и сервисами инфраструктуры.

Как все это изучить

Все эти инструменты можно освоить в Слёрме на курсе DevOps Upgrade. Вы получите фундаментальные представления и первый опыт, после которого поймёте, что изучать дальше и в какой конкретно сфере лучше специализироваться. Другими словами, этот курс помогает быстро прокачать hard skills. После его окончания можно найти первую работу в DevOps, подготовиться к сложному техническому интервью и повысить свою стоимость на рынке труда. Ознакомиться с программой и оставить заявку можно на нашем сайте.

DevOps Upgrade подходит для системных администраторов, разработчиков, которые хотят перейти в DevOps. То есть для тех, кто уже имеет опыт в IT-сфере. Новичкам рекомендуем начать с азов. Например, с бесплатного курса Git для начинающих.

Что такое DevOps и зачем он нужен разработчикам

DevOps позволяет существенно ускорить процессы разработки и снизить их стоимость, а также оптимизировать все процессы от проектирования до поддержки работающего продукта. Алексей Шарапов, Head of DevOps в компании ЦРПТ и автор курса «DevOps для эксплуатации и разработки» в Яндекс.Практикуме, рассказал, в чем суть этой методологии и зачем ее изучать.

Что такое DevOps

DevOps — это методология разработки, которая помогает наладить эффективное взаимодействие разработчиков с другими IT-специалистами. Это набор процессов и инструментов, которые позволяют компании создавать и улучшать продукты быстрее, чем при использовании традиционных подходов к разработке программного обеспечения.

Термин DevOps — это комбинация слов «разработка» (development) и «эксплуатация» (operations), которая отражает процесс интеграции этих дисциплин в единый непрерывный процесс. Разработчики и тестировщики отвечают за Development, а администраторы — за Operations.

DevOps возник примерно в 2009 году. Сообщество разработчиков пришло к выводу, что требования к их работе изменились и нужно менять классические подходы к созданию ПО. Теперь командам требовалось больше вовлеченности других специалистов.

Модель методологии напоминает вертикальный поток, где все фазы последовательно перетекают одна в другую. После этапов определения требований к продукту и его проектирования наступают этапы написания и сборки кода. Затем код отправляется в руки тестировщиков. После проверок отдел эксплуатации загружает код на рабочие машины — продукт запущен.

Знание DevOps необходимо разработчикам для более глубокого понимания их продуктов и оптимизации расходов на запуск кода, а также позволяет ускорять запуск приложений. Методология позволяет гибко приспосабливаться к меняющимся условиями и снижать стоимость разработки и обслуживания. Применяя DevOps, разработчики могут оперативнее замечать и исправлять ошибки и реагировать на запросы заказчиков.

Одна из практик DevOps — непрерывная интеграция и доставка (Continuous integration и Continuous delivery или CI/CD) — это методы, которые автоматизируют процесс выпуска программного обеспечения, начиная от сборки и вплоть до развертывания. CI/CD помогает свести к минимуму ошибки, повысить темпы сборки и качество разрабатываемого продукта за счет автоматизации.

Netflix — отличный пример того, как культура DevOps помогла подняться в топ технологических компаний. Сейчас сервис внедряет инновации с невероятно быстрой скоростью, потому что разработчики не ставят на первое место время безотказной работы: в стриминге нулевое время простоя не так важно, как в здравоохранении или банковской сфере. Кроме того, компания разработала инструмент Chaos Monkey, который случайным образом «убивает» процессы или серверы. Это нужно чтобы убедиться, что сервис переживет критическую ситуацию без неудобств для клиента.

Что DevOps дает команде

Меньше ошибок. Одна из причин, почему случаются сбои при развертывании, связана с багами. В DevOps циклы разработки короче обычных, поэтому код выходит чаще. В результате искать ошибки становится проще, а значит, количество сбоев уменьшается.

Сокращение времени выхода сервиса на рынок. Масштабируемые инфраструктуры — облачные платформы, инструменты для ускорения сборки, параллельные рабочие процессы, работа в одной среде — сильно сокращают время работы. Развертывать и запускать приложение стало в разы быстрее.

Создание более гибких и отказоустойчивых систем. Это достигается за счет использования облачной инфраструктуры. Она дает возможность быстро масштабировать систему, использовать только нужное количество ресурсов и оперативно увеличивать мощности.

Повышенная надежность и безопасность приложений. Среди DevOps-инструментов есть те, которые анализируют исходный код программного обеспечения, чтобы определить, есть ли в нем недостатки безопасности. Еще есть приложение, которое сканирование сервисы на наличие в них уязвимостей — OWASP (Open Web Application Security Project).

Как внедрить DevOps в свою работу

Знание DevOps позволяет специалисту перейти в более сильную команду, если в его окружении или даже в компании нет этой культуры. Еще это станет большим плюсом, если разработчик рассматривает релокацию или ищет удаленные вакансии в западных компаниях.

Прежде всего, начните с себя: автоматизируйте часть своих рабочих процессов. Это не только упростит вам жизнь, но и поможет быстрее вводить в курс дела новых коллег, передавать им куски кода и помогать им решать проблемы.

Читайте статьи о DevOps. Много полезного можно найти на Хабре — вот несколько примеров:

Вдохновляйтесь выступлениями на конференциях и двигайте идею DevOps в свою команду. Когда в процесс вольется больше разработчиков, тестировщиков, системных администраторов и даже аналитиков, появятся первые плоды и вы заметите ускорение всех процессов внутри команды.

На курсе «DevOps для эксплуатации и разработки» студенты изучают инструменты DevOps-стека, которые можно использовать в ежедневной работе разработчика или тестировщика. Он будет полезен всем от джуна до тимлида, а также тестировщикам и системным администраторами, которые хотят изменить область применения своих знаний.

Что необходимо для начального уровня DevOps-разработки:

— владеть скилами разработки на распространённых языках, например, Python или Go

— понимать работу инструментов и оркестрации Kubernetes OpenShift, чтобы запускать приложения в облачной инфраструктуре

— использовать Docker для автоматизации развертывания и управлениями приложениями

— использовать Vagrant для автоматизации локальной разработки. знать Ansible, чтобы понимать, что вообще происходит 🙂

— базово понимать Linux-системы

Современные методики, в том числе DevOps-практики, требуют вовлеченности разработчиков, свежего взгляда и сильной команды, чтобы она смогла понять и принять новую философию. Если разработчик ежедневно просто пишет код, этого недостаточно, чтобы расти, развиваться и делать крутые проекты, потому что именно широкий взгляд позволяет двигаться вперед.

Сейчас важно быстро запускать проекты и уменьшать время выхода сервиса на рынок. Для ведения своего проекта нужно глубокое погружение и постоянное развитие своих скиллов: не только писать код, но и понимать окружающие инструменты и процессы, которые активно строятся в разработке.

Хорошее понимание процессов, через которые проходит код, позволяет его оптимизировать.

DevOps — это инженер, который следит, чтобы код собирался быстро и не было отказов. Также он строит вокруг всего этого правильную инфраструктуру, например, прописывает, откуда берутся артефакты и куда уходят docker images. Еще DevOps пишет правила деплоя в Kubernetes. В общем, он делает работу более гибкой, быстрой и удобной.

Помимо всего этого DevOps-инженер занимается просветительской деятельностью в командах и рассказывает о новых инструментах, которые позволяют снизить количество багов.

Что почитать и посмотреть

Выступление на DevOpsConf. Это одна из крупнейших конференций по DevOps, которая проходит в России. Можно вдохновиться практиками и выступления коллег, чтобы внедрить культуру и инструменты в своей работе.

DevOps-решения: ускорить запуск продуктов и сэкономить. Можно узнать про подходы и инструменты, которые уже проверили на себе крупные стартапы и компании.

Джин Ким, Патрик Дебуа, Джон Уиллис и Джез Хамбл «Руководство по DevOps». Книга рассказывает о трех путях DevOps: принципе потока, принципе обратной связи и принципе непрерывного обучения. Она дает базовое понимание о методологии с помощью структурированной информации и практических примеров.

Джон Арундел и Джастин Домингус «Kubernetes для DevOps». В ней рассказывается о работе Kubernetes — одном из основных DevOps-инструментов, а также о проверенных решениях повседневных проблем. К концу книги можно создать свое облачно-ориентированное приложение и инфраструктуру для его поддержки.

Марко Лукша «Kubernetes в действии». Это книга-проводник, которая учит использовать Kubernetes для развертывания распределенных контейнеризированных приложений. Она рассчитана на новичков и помогает разобраться с такими принципами работы контейнеров, как мониторинг, настройка и масштабирование.

При подготовке материала использовались источники:
https://vc.ru/hr/50165-chto-takoe-metodologiya-devops-i-komu-ona-nuzhna
https://vc.ru/s/1147729-it-obrazovanie/782317-shpargalka-po-instrumentam-devops
https://academy.yandex.ru/journal/chto-takoe-devops-i-zachem-on-nuzhen-razrabotchikam

Добавить комментарий