Книга: Руководство по DevOps
Включите автоматизированное самообслуживание развертываний
Включите автоматизированное самообслуживание развертываний
Рассмотрим утверждение Тима Тишлера, директора по автоматизации эксплуатации компании Nike, об общем опыте поколения разработчиков: «Я никогда не испытывал большего удовлетворения своей деятельностью как разработчика, чем когда писал код, нажимал кнопку для развертывания и мог видеть производственные показатели, подтверждающие, что код действительно работает в производственной среде, и чем когда сам мог все исправить, если он все-таки не работал».
Возможности разработчиков самостоятельно развернуть код в производство, быстро увидеть, довольны ли клиенты новыми функциями, и быстро устранить любые проблемы без необходимости создавать задание для отдела эксплуатации уменьшились в течение последнего десятилетия — отчасти в результате контроля и надзора, возможно, вызванных нормами безопасности, и необходимостью соответствовать требованиям.
В результате общая практика — развертывание кода отделом эксплуатации, из-за разделения обязанностей — широко признанная практика в целях снижения риска сбоев производства и обманов. Однако для достижения результатов DevOps наша цель — начать доверять другим механизмам управления, которые могут смягчать риски в той же степени или даже более эффективно, например посредством автоматизированного тестирования, автоматического развертывания и экспертной оценки изменений. Доклад 2013 State of DevOps Report, подготовленный компанией Puppet Labs по результатам опроса более четырех тысяч профессионалов в области технологий, показал, что нет статистически значимой разницы в изменении показателей успешности между теми организациями, где развертывание производится отделом эксплуатации, и теми, где развертывание выполняют разработчики.
Другими словами, при наличии общих целей у разработчиков и отдела эксплуатации и тогда, когда существует прозрачность, ответственность и возможность учета результатов развертывания, уже не важно, кто именно выполняет развертывание. Фактически даже те, кто выполняет другие роли, — тестировщики и менеджеры проектов — способны развертывать определенные среды, чтобы иметь возможность быстро завершить работу, например настройку демонстрации конкретных функций в тестах или средах приемочного тестирования.
Чтобы создать лучшие условия для быстрого потока работы, нам нужен процесс продвижения кода по этапам. Он может быть выполнен и разработчиками, и отделом эксплуатации, причем в идеале без каких-либо действий вручную или передачи работы от одного сотрудника другому. Это влияет на следующие шаги:
• сборка: наш конвейер развертывания должен создавать пакеты из кода, взятого в системе контроля версий. Они могут быть развернуты в любой среде, включая производственную;
• тестирование: любой работник должен иметь возможность запускать любой или все наши наборы автоматизированных тестов на своей рабочей станции или на наших тестовых системах;
• развертывание: любой работник должен иметь возможность быстро развертывать эти пакеты в любой среде, к которой он имеет доступ, с помощью сценариев, также зафиксированных в системе контроля версий.
Эти методы позволяют успешно выполнить развертывание независимо от того, кто его будет выполнять.
- Количество разработчиков в неделю, развертывающих свой код
- Автоматизируем процесс развертывания
- Практический пример
- Ежедневное развертывание в компании CSG International (2013 г.)
- Включите автоматизированное самообслуживание развертываний
- Интегрируйте развертывание кода в конвейер развертывания
- Практический пример
- Самообслуживаемое развертывание разработчиками в компании Etsy — пример непрерывного развертывания (2014 г.)
- Отделить развертывания от релизов
- Шаблоны релиза на основе среды
- Шаблон Blue-Green развертывания
- Управление сменой баз данных
- Практический пример
- Blue-Green развертывание для системы торговых точек компании Dixons Retail (2008 г.)
- Шаблоны канареечных релизов и cluster immune systems
- Шаблоны релиза на основе приложений обеспечивают более безопасный релиз
- Реализация переключателей функциональности
- Выполняйте теневые запуски
- Практический пример
- Теневой запуск чата Facebook (2008 г.)
- Обзор непрерывной доставки и непрерывного развертывания на практике
- Заключение
- Автоматизированное внедрение программных продуктов
- Чтобы найти подход к человеку, включитесь в среду его обитания
- 45. «Самообслуживание» Привлекайте к работе клиентов
- Когда и как применять шаблон «Самообслуживание»
- Ручное и автоматизированное тестирование
- 45. «Самообслуживание». Привлекайте к работе клиентов
- Включите здравый смысл
- Глава 10. Быстрое и надежное автоматизированное тестирование
- Практический пример