4. + + =
Инфраструктура:
Физические или
виртуальные
сервера
- hardware
- OS
- network
- 3rd party soft
Компоненты:
Актуальные
версии ПО
(дистрибутив)
- web sites
- services
- databases
- binaries
Конфигурация:
Настройки,
специфичные
для экземпляра
- addresses
- names
- credentials
- parameters
Экземпляр
Системы
Внедренный
продукт
- тест лаба
- devbox
- staging
- production
5. Разработка Бой
DevBoxes
& автобилды
Тест лабы
& QA
Обслуживание
& staging версии
Боевые сервера
& управление релизами
SCRUM демо
& приемочные тесты
Автотесты
& CI
6. → Сложно
→ Слабо документирован
→ Выполняется вручную
→ Занимает много времени
→ Слабо контролируем
→ Непредсказуем
→ Опасен ошибками
→ Дорого network
7. конфликты версий,
легко ошибиться
при обновлениях
снижение
производительности
“Sharing” стендов
и взаимное
влияние лаб
сложно и дорого
развернуть новый
экземпляр системы
использование существующей
инфраструктуры, пока она
хоть как-то работает
сложность проддержки,
обслуживания, обновления
масштабирования
костыли и
сложная
архитектура
8. потери $ 465.000.000 за 45 минут
это $172.222 в минуту
+ $ 12.000.000 штраф
подробнее:
http://tinyurl.com/sqa15-knight
9. • «Внедряемость» не включена в требования в
качестве обязательной функциональности
(нужно формализовать)
• Команда не контролирует процесс
развертывания своего продукта
(нужно требовать как при TDD)
• Попытки решить проблему бессистемно
(нужен системный подход)
10. • Полностью автоматизировать все три основных
этапа развертывания (с помощью облаков)
• Отказаться от обновления ПО и конфигурации
• Сделать так, чтобы коплект поставки продукта
содержал всѐ необходимое для работы
• Интегрировать автоматическое развертывние в
жизненный цикл продукта, от начала до конца
11. + +
Инфраструктура Установка компонентов Конфигурация
Входные данные:
- шаблон окружения
- облако или хосты
- необходимые ресурсы
На выходе:
- набор подготовленных
виртуальных машин (ОС,
домен, сеть, стороннее ПО)
готовых для установки
экземпляра системы
Входные данные:
- посление версии исходного
кода или готовые пакеты
- Сопоставление ролей ВМ
и пакетов для установки
На выходе:
- Актуальные версии систем
установлены на машины в
соответсвии с их ролями
Входные данные:
- набор скриптов
- способ запустить их
на каждой машине и
передать параметры
На выходе:
- Готовый к работе,
настроенный, запущенный
экземпляр системы
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
13. Виртуальная инфраструктура:
• Настроить окружение на базе хостов Hyper-V
и System Center Virtual Machine Manager
• Подготовить базоыве образы ОС (sysprepped
VHD) с нужными ролями, настройками, ПО
15. Подготовить шаблон (Service Template):
‒ профили оборудования (HW profiles),
‒ роли виртуальных машин (Tiers),
‒ масштабируемый размер лаб (Min/Max/Def),
‒ соответствие облачным ресурсам (Mapping),
‒ скрипты для каждой роли ВМ (App Config)
‒ задаваемые параметры для скриптов (@, #)
16.
17. Проще «переналить» новый экземпляр стенда с новой версией ПО или
конфигурацией, чем обновлять существующий или менять что-то вручную
Service template
dev-1
main-2
prod-3
Параметры развертывания
18. Запуск процесса создания нового экземпляра может быть включен в
глобальную процедуру BUILD-DEPLOY-TEST.
19. • Собрать билд
• Создать лабу
• Залить продукт
• Настроить лабу
• Установить агентов
• Снять snapshot
• Прогнать автотесты
• Собрать результаты
• Сохранить в TFS
• Удалить лабу (или нет)
VMM Service Template?
VMware App Blueprint?
...
физические сервера?
20. VMware vFabric Applcation Director:
(vCloud Automation Suite)
Application BluePrints
Microsoft System Center
(Virtual Machine Manager)
Service Templates
<=>
22. • Управление жизненным циклом релизов (и
развертываний): Dev – Test – Staging – Prod
• Возможность продвигать очередной релиз
автоматически (по условиям) и/или по
согласованию с ответственными лицами
• В итоге: путь к внедрению Continuous Delivery
23.
24. • Система виртуализации, хосты и облака
• Способ развертывать ВМ по шаблонам
• Возможность логически группировать ВМ
• Способ выполнять свой код на машинах
• Возможность масштабировать развертывания
• Интеграция процесса в жизненный цикл / ALM
• Орекстратор для управления системой CD
• Удобные интерфейсы для работы с системой
26. Deploy service from template
Configuration parameters loaded from dropMP CI_20140408.6TattooParameters
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
Есть много путей решения проблемы
Не важно «как» будет выглядеть ваш
Вы можете пойти радикальным путем
или использовать отдельные приемы
Главное - начать смотреть в эту сторону
Четко понять, что внедряемость продукта
ТРЕБУЕТ ВНИМАНИЯ
Это обязательная «фича» продукта
Но многие об этом не помнят...
Не надо так