Как только веб-образы начинают работать, технология балансировки нагрузки перенаправляет часть трафика на них с более старых версий. Автоматизированный мониторинг гарантирует, что если что-то пойдет не так при развертывании новых образов, трафик будет перенаправлен обратно на старые версии, а новые образы будут откачены. Благодаря такому уровню автоматизации Netflix может развернуть новый код в своей производственной среде в течение нескольких часов, в то время как большинству компаний потребовались бы месяцы.2
Хотя Netflix может представлять собой более высокоразвитое состояние, чем требуется большинству компаний, эти методы могут быть использованы в любой современной разработке программного обеспечения. В основе этих успешных "малых и быстрых" практик разработки на протяжении всего SDLC лежат следующие три потребности:
Основание для быстрой доставки программного обеспечения в DevOps
DevOps стремится применить принципы бережливого производства к тому, как организации передают программное обеспечение в руки пользователей. DevOps - это сокращенный способ сказать: "Мы собираемся объединить всех людей, которые разрабатывают приложения, со всеми людьми, которые эксплуатируют и защищают эти приложения, в интегрированные рабочие команды". Чтобы было понятно, операционная деятельность никуда не исчезает, она становится частью разработки.
К настоящему времени многие компании слышали о DevOps и пытаются внедрить его. Но многие все еще пытаются внедрить DevOps в масштабах компании, склоняясь к тому, что это инструмент или специалист, который добавляется к существующим командам. Чтобы внедрить DevOps, вам необходимо принять три принципа и связанные с ними практики:
Поток. Ускорьте процесс передачи результатов разработки, чтобы они быстро и эффективно попадали в руки пользователей. Начните с составления карты потока создания ценности в рамках SDLC, то есть с того, какие этапы включает в себя кодирование, сборка, тестирование, упаковка и развертывание программного обеспечения в среде. Изначально это ручной процесс. Затем определите время, которое требуется между этапами, и все ручные процессы, которым следуют инженеры в ходе SDLC. Например, можно определить, что инженерам в agile pod приходится просить другую команду, чтобы выполнить определенную работу от их имени. Наконец, систематически сокращайте или удаляйте все выявленные ручные шаги путем автоматического спаривания (см. ниже о CI/CD). Начните с тех этапов, которые больше всего отнимают времени, чтобы расставить приоритеты.
Обратная связь. Обеспечьте множественные петли обратной связи в потоке создания ценности SDLC, чтобы помочь agile-подразделениям диагностировать проблемы по мере их возникновения, чтобы их можно было быстро решить. Это достигается путем создания dash-досок для визуализации потока создания ценности, принимая живые данные с различных этапов SDLC.
Непрерывное обучение. Создайте культуру обмена опытом, обучения и постоянного совершенствования. Периодически анализируйте и ищите улучшения на протяжении всего SDLC, чтобы обеспечить эффективную передачу программного обеспечения пользователям, не прибегая к ручным процессам.
Обычно компании создают команду DevOps для выполнения этой специализированной работы. Эта команда также будет работать с различными подразделениями, обучая их и обеспечивая последовательное внедрение.
Заложив прочный фундамент DevOps, компании распространяют эти возможности на другие практики разработки кода, такие как DevSec- Ops, MLOps и DataOps (см. Рисунок 19.2). Суть этих возможностей заключается в постоянном продвижении автоматизации, машинного обучения и задач управления данными для увеличения скорости разработки, повышения безопасности и снижения затрат.
DevSecOps внедряет безопасность в процесс разработки и выпуска, а не ставит ее в конец. Как и в случае с DevOps, компании могут увеличить частоту выпуска программного обеспечения с ежеквартальных до еженедельных или даже ежедневных релизов, не снижая при этом уровень риска. Обеспечение безопасности и соответствия требованиям с самого начала является обязательным, поскольку растущая зависимость компаний от цифровых технологий делает их более уязвимыми для кибератак.3 Во многих случаях DevSecOps заменил DevOps, и эти два понятия используются как взаимозаменяемые. Мы подробно рассмотрим тему безопасности в главе 22.
MLOps основан на DevOps, но для моделей машинного обучения (ML) и искусственного интеллекта. Любая компания, которая пытается разрабатывать, поддерживать и улучшать сотни моделей ML/AI в производстве, понимает, насколько сложно обеспечить стабильность и точность моделей прогнозирования, а также их калибровку в условиях изменяющейся среды данных. Именно здесь на помощь приходит MLOps. Мы подробно рассмотрим MLOps в главе 23.
Семейство практик xOps
Каждая практика и связанный с ней процесс обеспечивают различные преимущества на этапах разработки, производства и управления данными
Обеспечьте среду (среды) "песочницы" для исследований и экспериментов