27
Continuous Deployment & Delivery end to end: what, why, how

Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

  • Upload
    sqalab

  • View
    284

  • Download
    2

Embed Size (px)

DESCRIPTION

Доклад Андрея Морозовского на SQA Days-15. 18-19 апреля, 2014, Москва. www.sqadays.com

Citation preview

Page 1: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

Continuous Deployment & Delivery end to end: what, why, how

Page 2: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

• Андрей Морозовский

[email protected]

• http://www.viacode.com

• Software Developer in Testing

• Тестовая инфраструктура, автоматизация

тестов, виртуализация, Application Lifecycle

Management

• «Радикальный путь» в автоматизации развертываний

программного обеспечения

Page 3: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

Качество:

Функциональность

Производительность

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

...

Внедряемость

Page 4: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

+ + =

Инфраструктура:

Физические или

виртуальные

сервера

- hardware

- OS

- network

- 3rd party soft

Компоненты:

Актуальные

версии ПО

(дистрибутив)

- web sites

- services

- databases

- binaries

Конфигурация:

Настройки,

специфичные

для экземпляра

- addresses

- names

- credentials

- parameters

Экземпляр

Системы

Внедренный

продукт

- тест лаба

- devbox

- staging

- production

Page 5: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

Разработка Бой

DevBoxes

& автобилды

Тест лабы

& QA

Обслуживание

& staging версии

Боевые сервера

& управление релизамиSCRUM демо

& приемочные тесты

Автотесты

& CI

Page 6: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

→ Сложно

→ Слабо документирован

→ Выполняется вручную

→ Занимает много времени

→ Слабо контролируем

→ Непредсказуем

→ Опасен ошибками

→ Дорого network

Page 7: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

конфликты версий,

легко ошибиться

при обновлениях

снижение

производительности

“Sharing” стендов

и взаимное

влияние лаб

сложно и дорого

развернуть новый

экземпляр системы

использование существующей

инфраструктуры, пока она

хоть как-то работает

сложность проддержки,

обслуживания, обновления

масштабирования

костыли и

сложная

архитектура

Page 8: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

потери $ 465.000.000 за 45 минут

это $172.222 в минуту

+ $ 12.000.000 штраф

подробнее:

http://tinyurl.com/sqa15-knight

Page 9: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

• «Внедряемость» не включена в требования в

качестве обязательной функциональности

(нужно формализовать)

• Команда не контролирует процесс

развертывания своего продукта

(нужно требовать как при TDD)

• Попытки решить проблему бессистемно

(нужен системный подход)

Page 10: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

• Полностью автоматизировать все три основных

этапа развертывания (с помощью облаков)

• Отказаться от обновления ПО и конфигурации

• Сделать так, чтобы коплект поставки продукта

содержал всѐ необходимое для работы

• Интегрировать автоматическое развертывние в

жизненный цикл продукта, от начала до конца

Page 11: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

+ +

Инфраструктура Установка компонентов Конфигурация

Входные данные:

- шаблон окружения

- облако или хосты

- необходимые ресурсы

На выходе:

- набор подготовленных

виртуальных машин (ОС,

домен, сеть, стороннее ПО)

готовых для установки

экземпляра системы

Входные данные:

- посление версии исходного

кода или готовые пакеты

- Сопоставление ролей ВМ

и пакетов для установки

На выходе:

- Актуальные версии систем

установлены на машины в

соответсвии с их ролями

Входные данные:

- набор скриптов

- способ запустить их

на каждой машине и

передать параметры

На выходе:

- Готовый к работе,

настроенный, запущенный

экземпляр системы

Page 12: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

FrontEnd role Appsrv role

Web UI

worker

win service

scheduler

Database

Other

services

Domain Controller

OS v1

app v1

OS v1

app v2

OS v2

app v1

Page 13: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

Виртуальная инфраструктура:

• Настроить окружение на базе хостов Hyper-V

и System Center Virtual Machine Manager

• Подготовить базоыве образы ОС (sysprepped

VHD) с нужными ролями, настройками, ПО

Page 14: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

Логика развертывания и конфигурации:

• Подготовить скрипты cmd/ps1 в библиотеке:

‒ Подготовка инфраструктуры (join domain)

‒ Развертывание (copy binaries, install service)

‒ Конфигурирование (deployment specific)

Page 15: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

Подготовить шаблон (Service Template):

‒ профили оборудования (HW profiles),

‒ роли виртуальных машин (Tiers),

‒ масштабируемый размер лаб (Min/Max/Def),

‒ соответствие облачным ресурсам (Mapping),

‒ скрипты для каждой роли ВМ (App Config)

‒ задаваемые параметры для скриптов (@, #)

Page 16: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов
Page 17: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

Проще «переналить» новый экземпляр стенда с новой версией ПО или

конфигурацией, чем обновлять существующий или менять что-то вручную

Service template

dev-1

main-2

prod-3

Параметры развертывания

Page 18: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

Запуск процесса создания нового экземпляра может быть включен в

глобальную процедуру BUILD-DEPLOY-TEST.

Page 19: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

• Собрать билд

• Создать лабу

• Залить продукт

• Настроить лабу

• Установить агентов

• Снять snapshot

• Прогнать автотесты

• Собрать результаты

• Сохранить в TFS

• Удалить лабу (или нет)

VMM Service Template?

VMware App Blueprint?

...

физические сервера?

Page 20: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

VMware vFabric Applcation Director:

(vCloud Automation Suite)

Application BluePrints

Microsoft System Center

(Virtual Machine Manager)

Service Templates

<=>

Page 21: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

изоляция

стендов

всегда «чистая»

системаокружение,

аналогичное

боевому

сокрытие логики

преимущества ALMпросто поддерживать

быстро развернуть

легко можно

контролировать

Page 22: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

• Управление жизненным циклом релизов (и

развертываний): Dev – Test – Staging – Prod

• Возможность продвигать очередной релиз

автоматически (по условиям) и/или по

согласованию с ответственными лицами

• В итоге: путь к внедрению Continuous Delivery

Page 23: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов
Page 24: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

• Система виртуализации, хосты и облака

• Способ развертывать ВМ по шаблонам

• Возможность логически группировать ВМ

• Способ выполнять свой код на машинах

• Возможность масштабировать развертывания

• Интеграция процесса в жизненный цикл / ALM

• Орекстратор для управления системой CD

• Удобные интерфейсы для работы с системой

Page 25: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

🚲

Page 26: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

Deploy service from template

Configuration parameters loaded from \\drop\MP CI_20140408.6\TattooParameters\

Connecting to VMM server: *.viacode.com as * Self-Service Users

Getting Service Template: Auto DC+SCOM12SP1 version: 8.2.1

Connecting to TFS Team Project Collection http://*.viacode.com:*/tfs/*

Existing service instance Auto HDP SCOM found; restoring procedure started

List of Tiers and Virtual Machines in Service Auto * SCOM

- [Win2K12SCOM12SP1_1]: AUTOSCOM1.auto.local; [Win2K8DC]: autoDC.auto.local

Restoring VM [autoSCOM1] to it's most recent checkpoint: autoSCOM1 - pw resest

Restoring VM [autoDC] to it's most recent checkpoint: autoDC - pw resest

Virutal Machine autohdpSCOM1 is in PowerOff state; starting... Running

Virutal Machine autohdpDC is in PowerOff state; starting... Running

Test Agent will be installed to Virutal Machine: AUTOSCOM1.auto.local

Waiting AUTOSCOM1.auto.local to be up and running

- Server is not responding... Ping ok

Existing Lab environment found and will be destroyed: * Tattoo Lab : NotReady

Lab environment has been destroyed… Creating Lab Environment: * Tattoo Lab

Installing Test Agent to AUTOSCOM1.auto.local

Waiting for Environment to be ready… - [State] = Preparing

Environment is now Ready… Service deployment completed successfully

GetLabEnvironmentUri… Run Tests on Environment

Running Tests… The following Suite ID will be used to create the test run: 195

If all tests have not passed... Creating incidents

Tattoo: Cleanup phase… Test MTM Environment and VMM Service are freezed

Есть много путей решения проблемы

Не важно «как» будет выглядеть ваш

Вы можете пойти радикальным путем

или использовать отдельные приемы

Главное - начать смотреть в эту сторону

Четко понять, что внедряемость продукта

ТРЕБУЕТ ВНИМАНИЯ

Это обязательная «фича» продукта

Но многие об этом не помнят...

Не надо так

Page 27: Полная автоматизация развертываний ПО: общие концепции, пример реализации, сравнение подходов

[email protected]

http://ru.linkedin.com/in/amorozovsky

Вопросы?

Спасибо за внимание!