DevOps - преимущества и требования системы

Основы разработки DevOps

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

Основным направлением DevOps является преодоление разрыва между командами разработчиков и операторов за счет сокращения болезненных переключений и расширения сотрудничества. Это не достигается тем, что разработчики работают над операционными задачами, а системные администраторы над задачами разработки. Вместо этого обе эти роли заменяются одной ролью DevOps, которая работает над задачами в рамках совместной команды. Как писал Дейв Цвибек в DevOps Hiring, «организациям, которые приняли DevOps, нужны люди, которые естественным образом сопротивлялись бы разрозненным организациям».

Работа по системе DevOps требует больше, чем традиционные наборы навыков, которые вы видели бы у системных администраторов или разработчиков. В книге The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win, Джин Ким, Кевин Бер и Джордж Спаффорд представляют три пути в основе практики DevOps:

  1. Продуктивность, с акцентом на производительность всей системы, для ускорения выполнения работ от разработки до операций для клиентов.
  2. Циклы обратной связи для создания более безопасных рабочих систем.
  3. Непрерывное обучение и экспериментирование для формирования культуры высокого доверия и научного подхода к организационному совершенствованию в повседневной деятельности.

Сотрудничество и понимание

Инженер DevOps понимает, что эксплуатационные аспекты разработки программного обеспечения должны иметь тот же приоритет, что и любая другая задача или функция, связанная с проектом. Лучший способ добиться успеха в этой среде – это создать прочную культуру сотрудничества между группами разработки и эксплуатации. В этом сотрудничестве может быть полезно больше узнать о бережливом, системном мышлении и гибкой разработке. Концепции команды DevOps и команды System являются неотъемлемой частью Scaled Agile Framework (SAFe). Распределение обязанностей между командами System и DevOps также помогает создавать высокопроизводительные команды.

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

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

Непрерывная интеграция. CI относится к рабочему процессу "сборки и тестирования" с целью обеспечения того, чтобы нарушенные изменения не влияли на других разработчиков или пользователей. Это достигается за счет объединения изменений программного обеспечения в производственную систему, а затем их тестирования как пользователя/клиента (интеграция) и (непрерывного) повторения этого процесса для каждого отдельного изменения.

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

Наилучший пример – это когда каждая успешная интеграция может достичь производства с минимальным вмешательством человека, и в этом случае полный жизненный цикл автоматизируется:

  • Сборки и инфраструктура должны быть детерминированными и повторяемыми;
  • Шаги выпуска должны быть автоматизированы;
  • Изменения должны быть проверены в их собственной среде.
  • Комбинация методов CI/CD дает трансформируемые результаты, потому что изменения программного обеспечения достигают производства чаще.

DevSecOps

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

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

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

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

  • Анализ кода;
  • Управление изменениями;
  • Мониторинг соответствия;
  • Изучение потока;
  • Оценка уязвимости;
  • Обучение безопасности.

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

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

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

Последнее является основной причиной, по которой IaC часто включается в тему автоматизации (включая автоматизацию ручных процессов), но оно выходит и за рамки этого. Эксперты часто ссылаются на следующие примеры передовой практики в IaC:

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

Мониторинг и наблюдаемость

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

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

DevOps – это культура

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

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

Наверх
Меню