Что такое DevOps?

Определение модели DevOps

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

Определение модели DevOps

Как работает DevOps

В модели DevOps границы между группами разработки и эксплуатации стираются. Иногда две эти группы объединяются в одну общую, где инженеры работают над всем жизненным циклом приложения – от разработки и тестирования до развертывания и эксплуатации – и развивают целый ряд навыков, не ограничиваясь узкой специализацией.

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

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

Подробнее об инструментарии и сервисах AWS DevOps

Преимущества DevOps

Скорость

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

Быстрая доставка

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

Надежность

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

Масштабирование

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

Оптимизированная совместная работа

Создавайте более эффективные группы в рамках культурной модели DevOps, которая превозносит такие ценности, как сопричастность и ответственность. Группы разработки и эксплуатации тесно взаимодействуют между собой, разделяют большинство обязанностей и объединяют свои рабочие процессы. Это сокращает нерациональные действия и экономит время (например, уменьшает время передачи дел от разработчиков к инженерам по эксплуатации и устраняет необходимость написания кода с учетом среды, в которой он будет запущен).

Безопасность

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

Значение DevOps

Программное обеспечение и Интернет преобразовали мир и все его сферы – от шопинга и развлечений до банковского обслуживания. Программное обеспечение теперь не просто поддерживает бизнес, а становится неотъемлемой частью на каждом его этапе. Компании взаимодействуют с клиентами через ПО, которое представляет собой интернет-сервисы или приложения для всех видов устройств. Кроме того, с его помощью компании повышают эксплуатационную эффективность, преобразуя каждое звено цепочки создания стоимости: логистику, коммуникации и эксплуатацию. Точно так же, как на протяжении всего XX века компании-производители изменяли подходы к проектированию, созданию и поставке продукции благодаря промышленной автоматизации, современные компании должны изменить подход к созданию и распространению программного обеспечения.

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

Культурные принципы DevOps

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

Подробнее о методах DevOps

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

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

Кроме того, чтобы сделать приложения более гибкими и быстрее внедрять инновации, можно использовать архитектуру микросервисов. Такая архитектура разделяет большие и сложные системы на простые самостоятельные проекты. Приложения разбиваются на множество отдельных компонентов (сервисов), каждый из которых имеет одну цель или возможность и работает независимо от других сервисов, а также приложения в целом. Такая архитектура сокращает затраты на координацию обновлений приложений, к тому же, когда каждому сервису соответствует ответственная за него небольшая agile-группа, компании могут работать быстрее.

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

Вместе эти методы дают компаниям возможность создавать более быстрые и надежные обновления для клиентов. Ниже приведен краткий обзор важных практик DevOps.

Методы DevOps

Непрерывная интеграция

Непрерывная интеграция – это практика разработки ПО, при которой разработчики регулярно объединяют изменения программного кода в центральном репозитории, после чего автоматически выполняется сборка и тестирование. Главная задача непрерывной интеграции – быстрее находить и исправлять ошибки, улучшать качество ПО и сокращать временные затраты на проверку и выпуск новых обновлений ПО.

Подробнее о непрерывной интеграции

Непрерывная доставка

Непрерывная доставка – это практика разработки программного обеспечения, когда при любых изменениях в программном коде выполняется автоматическая сборка, тестирование и подготовка к окончательному выпуску. Непрерывная доставка расширяет практику непрерывной интеграции за счет того, что все изменения кода после стадии сборки развертываются в тестовой и (или) в рабочей среде. При правильном внедрении непрерывной доставки у разработчиков всегда есть готовый к развертыванию собранный экземпляр ПО, прошедший стандартизированную процедуру тестирования.

Подробнее о непрерывной доставке и AWS CodePipeline

Микросервисы

Архитектура микросервисов – это подход к разработке приложения в виде набора небольших сервисов. Каждый сервис работает в своем собственном процессе и обменивается данными с другими сервисами через детально продуманный интерфейс, используя простой механизм: как правило, программный интерфейс на базе HTTP (API). Микросервисы выстраиваются вокруг практических требований бизнеса; каждый из них имеет одну задачу. Для написания микросервисов можно использовать различные среды или языки программирования, а развертывать их можно независимо по одному или группой.

Подробнее об Amazon Container Service (Amazon ECS) 

Подробнее об AWS Lambda

 

Инфраструктура как код

Инфраструктура как код – это практика, в которой выделение инфраструктуры и управление ею происходит с помощью кода и методов разработки ПО, таких как управление версиями и непрерывная интеграция. Облачная модель на основе API позволяет разработчикам и системным администраторам взаимодействовать с инфраструктурой на программном уровне при любом масштабе, вместо того чтобы устанавливать и настраивать ресурсы вручную. Таким образом, инженеры могут работать с инфраструктурой с помощью средств на основе кода так же, как они работают с кодом приложения. Поскольку инфраструктура и серверы определяются кодом, их можно быстро развернуть с использованием стандартных моделей, установить на них последние исправления и версии или дублировать одинаковым способом.

Подробнее об управлении инфраструктурой как кодом с помощью AWS CloudFormation

Управление конфигурацией

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

Узнайте, как с помощью Менеджера систем Amazon EC2 можно настраивать Amazon EC2 и локальные системы, а также управлять ими

Подробнее об использовании управления конфигурациями с AWS OpsWorks

Политика как код

С помощью инфраструктуры и ее конфигураций, связанных с облаком посредством кода, компании могут динамически обеспечивать соблюдение требований при любом масштабе и контролировать его. Инфраструктуру, которая описывается кодом, можно автоматически отслеживать, проверять и перенастраивать. Благодаря этому организациям легче управлять изменениями ресурсов и следить за тем, чтобы меры безопасности правильно реализовывались распределенным способом (например, информационная безопасность либо соблюдение требований PCI-DSS или HIPAA). Как следствие, подразделения в рамках компании могут работать быстрее, поскольку можно автоматически помечать не соответствующие требованиям ресурсы для дальнейшего расследования или даже автоматического приведения в соответствие.

Подробнее об использовании AWS Config и правилах Config для мониторинга и обеспечения соответствия вашей инфраструктуры требованиям

 

Мониторинг и ведение журналов

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

Подробнее о работе с Amazon CloudWatch для мониторинга показателей и журналов инфраструктуры

Подробнее об использовании AWS CloudTrail для записи и ведения журнала вызовов API AWS

 

Обмен данными и совместная работа

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

 

Средства DevOps

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

Подробнее о сервисах AWS DevOps

Подробнее о решениях партнеров AWS