Определение модели DevOps
DevOps – это сочетание культурных принципов, подходов и средств, которое улучшает способность компаний создавать приложения и сервисы на высокой скорости. С DevOps разработка и оптимизация продуктов происходит быстрее, чем при использовании традиционных процессов работы над программным обеспечением и управления инфраструктурой. Благодаря такой скорости компании могут повысить уровень обслуживания клиентов и более эффективно конкурировать на рынке.
Как работает DevOps
В модели DevOps границы между группами разработки и эксплуатации стираются. Иногда две эти группы объединяются в одну общую, где инженеры работают над всем жизненным циклом приложения – от разработки и тестирования до развертывания и эксплуатации – и развивают целый ряд навыков, не ограничиваясь узкой специализацией.
В некоторых моделях DevOps группы контроля качества и безопасности тоже более активно взаимодействуют с группами разработки и эксплуатации на протяжении всего жизненного цикла приложения. Если безопасность является приоритетом для всех участников группы DevOps, такой подход иногда называют DevSecOps.
Эти группы используют специальные методы для автоматизации процессов, которые традиционно выполнялись медленно и вручную. Они применяют набор технологий и инструменты, которые помогают работать с приложениями и продолжать развивать их с сохранением высокой скорости и надежности. С помощью этих инструментов технические специалисты могут самостоятельно решать такие задачи, для которых обычно требовалась помощь других групп (например, развертывание кода или инициализацию инфраструктуры), и это еще больше повышает скорость общей работы.
Преимущества DevOps
Скорость
Быстрая доставка
Надежность
Масштабирование
Оптимизированная совместная работа
Безопасность
Значение DevOps
Программное обеспечение и Интернет преобразовали мир и все его сферы – от шопинга и развлечений до банковского обслуживания. Программное обеспечение теперь не просто поддерживает бизнес, а становится неотъемлемой частью на каждом его этапе. Компании взаимодействуют с клиентами через ПО, которое представляет собой интернет-сервисы или приложения для всех видов устройств. Кроме того, с его помощью компании повышают эксплуатационную эффективность, преобразуя каждое звено цепочки создания стоимости: логистику, коммуникации и эксплуатацию. Точно так же, как на протяжении всего XX века компании-производители изменяли подходы к проектированию, созданию и поставке продукции благодаря промышленной автоматизации, современные компании должны изменить подход к созданию и распространению программного обеспечения.
Как внедрить модель DevOps
Культурные принципы DevOps
Переход к DevOps требует изменения культуры и менталитета. В простейшем случае DevOps устраняет барьеры между традиционно изолированными группами разработки и эксплуатации. В некоторых компаниях нет таких отдельных групп, а технические специалисты занимаются и тем, и другим. С DevOps эти две группы работают вместе, чтобы оптимизировать производительность разработчиков и надежность эксплуатации. Они стараются часто общаться, повышать эффективность, а также улучшать качество сервисов, предоставляемых клиентам. Размышляя о потребностях клиента и о том, что каждый из них может сделать для удовлетворения этих потребностей, они берут на себя полную ответственность за выпускаемые сервисы, зачастую выходя за пределы, установленные конкретными ролями или должностями. Группы контроля качества и безопасности также более тесно сотрудничают с группами разработки и эксплуатации. В компаниях, которые используют модель DevOps, независимо от их организационной структуры, сотрудники рассматривают весь жизненный цикл разработки и эксплуатации как часть своих обязанностей.
Подробнее о методах DevOps
Существует несколько ключевых методов, которые помогают компаниям быстрее внедрять инновации путем автоматизации и оптимизации процессов разработки программного обеспечения и управления инфраструктурой. Большинство этих методов реализуются с помощью соответствующих инструментов.
Один из основных методов заключается в выпуске небольших обновлений через очень короткие интервалы времени. Именно так компании быстрее предлагают новые возможности своим клиентам. Обновления, как правило, носят инкрементальный характер, а не случайный, как это происходит при традиционном подходе к релизам. Частые, но небольшие обновления делают каждое развертывание менее рискованным. Они помогают быстрее вносить исправления, поскольку группы могут идентифицировать последнее развертывание, которое вызвало ошибку. Несмотря на различную частоту и размер обновлений, компании, использующие модель DevOps, развертывают обновления гораздо чаще, чем те, кто применяют традиционные методы разработки программного обеспечения.
Кроме того, чтобы сделать приложения более гибкими и быстрее внедрять инновации, можно использовать архитектуру микросервисов. Такая архитектура разделяет большие и сложные системы на простые самостоятельные проекты. Приложения разбиваются на множество отдельных компонентов (сервисов), каждый из которых имеет одну цель или возможность и работает независимо от других сервисов, а также приложения в целом. Такая архитектура сокращает затраты на координацию обновлений приложений, к тому же, когда каждому сервису соответствует ответственная за него небольшая agile-группа, компании могут работать быстрее.
Однако сочетание микросервисов и повышенной частоты релизов значительно увеличивает число развертываний, в связи с чем могут возникать проблемы на уровне эксплуатации. Поэтому необходимы такие методы DevOps, как непрерывная интеграция и непрерывная доставка, которые решают эти проблемы и позволяют компаниям доставлять обновления быстро, безопасно и надежно. Методики автоматизации инфраструктуры – инфраструктура как код и управление конфигурациями – помогают поддерживать гибкость вычислительных ресурсов и адаптироваться к частым изменениям. А мониторинг и ведение журналов позволяют инженерам отслеживать эффективность приложений и инфраструктуры, чтобы быстро реагировать на проблемы.
Вместе эти методы дают компаниям возможность создавать более быстрые и надежные обновления для клиентов. Ниже приведен краткий обзор важных практик DevOps.
Методы DevOps
Непрерывная интеграция
Непрерывная интеграция – это практика разработки ПО, при которой разработчики регулярно объединяют изменения программного кода в центральном репозитории, после чего автоматически выполняется сборка и тестирование. Главная задача непрерывной интеграции – быстрее находить и исправлять ошибки, улучшать качество ПО и сокращать временные затраты на проверку и выпуск новых обновлений ПО.
Непрерывная доставка
Непрерывная доставка – это практика разработки программного обеспечения, когда при любых изменениях в программном коде выполняется автоматическая сборка, тестирование и подготовка к окончательному выпуску. Непрерывная доставка расширяет практику непрерывной интеграции за счет того, что все изменения кода после стадии сборки развертываются в тестовой и (или) в рабочей среде. При правильном внедрении непрерывной доставки у разработчиков всегда есть готовый к развертыванию собранный экземпляр ПО, прошедший стандартизированную процедуру тестирования.
Микросервисы
Архитектура микросервисов – это подход к разработке приложения в виде набора небольших сервисов. Каждый сервис работает в своем собственном процессе и обменивается данными с другими сервисами через детально продуманный интерфейс, используя простой механизм: как правило, программный интерфейс на базе HTTP (API). Микросервисы выстраиваются вокруг практических требований бизнеса; каждый из них имеет одну задачу. Для написания микросервисов можно использовать различные среды или языки программирования, а развертывать их можно независимо по одному или группой.
Подробнее об Amazon Container Service (Amazon ECS)
Инфраструктура как код
Инфраструктура как код – это практика, в которой выделение инфраструктуры и управление ею происходит с помощью кода и методов разработки ПО, таких как управление версиями и непрерывная интеграция. Облачная модель на основе API позволяет разработчикам и системным администраторам взаимодействовать с инфраструктурой на программном уровне при любом масштабе, вместо того чтобы устанавливать и настраивать ресурсы вручную. Таким образом, инженеры могут работать с инфраструктурой с помощью средств на основе кода так же, как они работают с кодом приложения. Поскольку инфраструктура и серверы определяются кодом, их можно быстро развернуть с использованием стандартных моделей, установить на них последние исправления и версии или дублировать одинаковым способом.
Подробнее об управлении инфраструктурой как кодом с помощью AWS CloudFormation
Управление конфигурацией
С помощью кода разработчики и системные администраторы автоматизируют настройку операционной системы и хоста, эксплуатационные задачи, а также многое другое. Благодаря использованию кода изменение конфигурации становится более воспроизводимым и стандартизованным. Это освобождает разработчиков и системных администраторов от ручной настройки операционных систем, системных приложений или серверного программного обеспечения.
Подробнее об использовании управления конфигурациями с AWS OpsWorks
Политика как код
С помощью инфраструктуры и ее конфигураций, связанных с облаком посредством кода, компании могут динамически обеспечивать соблюдение требований при любом масштабе и контролировать его. Инфраструктуру, которая описывается кодом, можно автоматически отслеживать, проверять и перенастраивать. Благодаря этому организациям легче управлять изменениями ресурсов и следить за тем, чтобы меры безопасности правильно реализовывались распределенным способом (например, информационная безопасность либо соблюдение требований PCI-DSS или HIPAA). Как следствие, подразделения в рамках компании могут работать быстрее, поскольку можно автоматически помечать не соответствующие требованиям ресурсы для дальнейшего расследования или даже автоматического приведения в соответствие.
Мониторинг и ведение журналов
Компании отслеживают метрики и ведут журналы, чтобы наблюдать за тем, как производительность приложения и инфраструктуры влияет на работу конечного пользователя их продукта. Собирая, упорядочивая, а затем анализируя данные и журналы, создаваемые приложениями и инфраструктурой, можно понять, как изменения или обновления воздействуют на пользователей, а также найти источник проблем или незапланированных изменений. Важность активного мониторинга постоянно повышается, поскольку сервисы должны быть доступны круглосуточно, а частота обновлений приложений и инфраструктуры возрастает. Создание предупреждений или проведение анализа этих данных в реальном времени также помогает компаниям более активно контролировать свои услуги.
Подробнее о работе с Amazon CloudWatch для мониторинга показателей и журналов инфраструктуры
Подробнее об использовании AWS CloudTrail для записи и ведения журнала вызовов API AWS
Обмен данными и совместная работа
Увеличение обмена данными и повышение активности совместной работы в компании является одним из ключевых культурных аспектов DevOps. Применение методов DevOps и автоматизация процесса создания программного обеспечения способствуют совместной работе, физически объединяя рабочие процессы, а также обязанности групп разработки и эксплуатации. Выстраивая работу на строгих культурных принципах, группы обмениваются информацией и упрощают схему взаимодействия, используя приложения чата, системы отслеживания проблем и проектов, а также базы знаний. Это помогает ускорить взаимодействие между группами разработки, эксплуатации и другими подразделениями, например маркетинга или продаж, позволяя всей компании сосредоточиться на конкретных целях и проектах.
Средства DevOps
Модель DevOps опирается на эффективные инструменты, помогая группам быстро и надежно развертывать приложения и предлагать новые возможности своим клиентам. Эти инструменты автоматизируют ручные задачи, упрощают управление сложными средами в любом масштабе и позволяют инженерам, которые благодаря DevOps внедряют новые возможности на высокой скорости, держать все под контролем. AWS предоставляет сервисы, которые предназначены для DevOps и изначально созданы для работы с облаком AWS. Эти сервисы помогут вам реализовать методы DevOps, описанные выше.
Подробнее о сервисах AWS DevOps
Подробнее о решениях партнеров AWS