Как и все культуры, DevOps включает в себя множество вариаций на тему. Однако большинство практиков согласны с тем, что следующие возможности являются общими для практически всех культур DevOps:
- Совместная работа
- Автоматизация
- Непрерывная интеграция
- Непрерывная поставка ценности
- Непрерывное тестирование
- Непрерывный мониторинг
- Быстрое восстановление
Давайте разберем каждый пункт более детально.
Совместная работа
Вместо того, чтобы показывать пальцами друг на друга, здесь команда разработчиков и команда эксплуатации работают вместе (нет, правда).
Хотя именно разрыв между этими двумя группами был стимулом для его создания, сегодня DevOps выходит далеко за рамки IT–организации, поскольку потребность в сотрудничестве распространяется на всех, кто заинтересован в поставке программного обеспечения (не только между разработчиками и командой эксплуатации, но и всеми командами, включая тестирование, управление продуктом и руководителей).
Основа успеха DevOps — это то, насколько хорошо команды и отдельные люди сотрудничают на предприятии, чтобы быстрее, эффективнее и эффективнее выполнять задачи.
Автоматизация
DevOps сильно зависит от автоматизации, а это значит, что вам нужны инструменты. Инструменты, которые вы строите. Инструменты, которые вы покупаете. Инструменты с открытым исходным кодом. И эти инструменты должны быть не просто разбросаны повсюду, а использоваться: DevOps опирается на наборы инструментов для автоматизации основных частей end-to-end разработки и поставки программного обеспечения.
Предостережение: из–за того, что инструменты DevOps настолько удивительны и полезны, существует тенденция рассматривать DevOps как просто набор инструментов. Несмотря на то, что DevOps действительно опирается на инструменты, DevOps — это гораздо больше. Помните о том, что это в первую очередь культура.
Непрерывная интеграция (Continuous Integration)
Краеугольным камнем DevOps является непрерывная интеграция, метод, разработанный и названный Грэди Бучем [Grady Booch], который постоянно объединяет обновления исходного кода от всех разработчиков в команде в общую магистраль.
Обычно вы обнаруживаете непрерывную интеграцию в культурах DevOps, потому что DevOps возникли из Agile–культуры, а непрерывная интеграция является фундаментальным принципом Agile–подхода.
Принцип непрерывной интеграции в разработке по Agile имеет важное значение для разработчиков. Принуждение разработчиков часто интегрировать свою работу с работой других разработчиков — по крайней мере, ежедневно — позволяет выявлять проблемы интеграции и конфликты гораздо раньше, чем в случае разработки по Waterfall.
Однако, чтобы получить это преимущество, разработчики должны общаться друг с другом гораздо чаще — и это идет вразрез с образом «одинокого гениального кодера», работающего над модулем в течение нескольких недель или месяцев, прежде чем он готова отправить его в мир.
Практики регулярного и открытого общения расцветают в DevOps.
Непрерывное тестирование (Continuous Testing)
Часть DevOps, связанную с тестированием, легко пропустить, пока у вас все не сгорело. Учитывая растущую стоимость сбоев программного обеспечения, вы не можете позволить себе сделать релиз, который может нарушить существующий пользовательский интерфейс или представить новые функции, которые подвергают организацию новым рискам безопасности.
В то время как непрерывная интеграция и непрерывная поставка являются наиболее распространенными практиками, непрерывное тестирование тихо и спокойно существует в качестве критически важной части DevOps.
Непрерывное тестирование — это не просто функция QA; на самом деле все начинается в среде разработки. Прошли времена, когда разработчики могли просто перекинуть код через стену в QA и сказать: «Ловите». В среде DevOps качество — это дело каждого. Здесь ведется совместная работа, и каждый вносит свою лепту в то, чтобы все этапы разработки и поставки были реализованы максимально качественно.
Непрерывное тестирование создает систему для принятия решений. Эта система помогает вам оценивать риски, который каждое приложение представляет для вашей организации. Если применять этот принцип последовательно, он помогает командам разработчиков соответствовать ожиданиям бизнеса и обеспечивает менеджерам видимость для принятия обоснованных решений.
Окупаемость от непрерывного тестирования стоит потраченных усилий и вложенных инвестиций. Функция тестирования в среде DevOps помогает разработчикам обеспечивать нужное качество релизов, а вложение в качество — это вложение в прибыль для бизнеса.
Непрерывная поставка (Continuous Delivery)
Непрерывная поставка — это практика разработки программного обеспечения DevOps», когда изменения кода автоматически тестируются и готовятся к выпуску в продакшн.
При правильной реализации непрерывной поставки разработчики всегда будут иметь готовую к развертыванию сборку, прошедшую стандартизированный процесс тестирования.
Фактическая частота может отличаться, в зависимости от целей компании и объемов работы. Высокопроизводительные организации, использующие DevOps, осуществляют несколько поставок в день, но это может быть и неделя, и месяц.
Непрерывный мониторинг (Continuous Monitoring)
Несмотря на непрерывное тестирование огромное количество выпусков вследствие реализации непрерывной поставки может приводить к ошибкам. Нет никакого способа на все 100% снизить все возможные ошибки. Это значит, в среде DevOps сбои должны обнаруживаться и исправляться в режиме реального времени. Именно это и значит «непрерывный мониторинг».
Благодаря непрерывному мониторингу команды измеряют производительность и доступность программного обеспечения для повышения стабильности. Непрерывный мониторинг помогает быстро выявлять первопричины проблем, активно предотвращать сбои и минимизировать проблемы пользователей. Некоторые эксперты по мониторингу даже выступают за то, чтобы само определение сервиса включало мониторинг — они считают его неотъемлемой частью предоставления услуги.
Как и тестирование, мониторинг начинается с разработки. Те же инструменты, которые контролируют производственную среду, могут быть использованы в разработке для выявления проблем с продакшеном еще до того, как они попадут в продакшен.