Con$nuous	
  Delivery	
  
как	
  перестать	
  релизиться	
  и	
  	
  
          начать	
  жить	
  

          Иван	
  Евтухович	
  
                   	
  
           SECON’	
  2013	
  
Иван Евтухович — Как перестать релизиться и начать жить
План	
  доклада	
  
•      Неудачные	
  истории	
  из	
  жизни	
  
•      Принципы	
  непрерывной	
  поставки	
  ПО	
  
•      Управление	
  конфигурацией	
  
•      Непрерывная	
  интеграция	
  
•      Тестирование	
  
	
  
Иван Евтухович — Как перестать релизиться и начать жить
Неудачные	
  истории	
     	
  


    из	
  жизни  	
  
Сломавшийся	
  сервер	
  
1.    Плановая	
  перезагрузка	
  
2.    Сервер	
  не	
  подымается	
  
3.    В	
  23	
  часа	
  начинаем	
  перенос	
  
4.    В	
  4	
  утра	
  он	
  все	
  еще	
  идет	
  
5.    Утром	
  с	
  10	
  продолжаем	
  
Что	
  там	
  было?	
  
1.  10-­‐15	
  скриптов	
  в	
  cron	
  
2.  у	
  каждого	
  скрипта	
  свой	
  набор	
  ключей	
  
3.  2	
  ключевых	
  сервиса	
  
4.  все	
  настройки	
  умерли	
  вместе	
  с	
  сервером	
  
Много	
  оборудования   	
  
•  Десятки	
  и	
  сотни	
  единиц	
  оборудования	
  
•  Процесс	
  первоначальной	
  настройки:	
  
   –  Загружаемся	
  с	
  диска	
  
   –  Переставляем	
  диск	
  с	
  образом	
  
   –  Записываем	
  
   –  Правим	
  3	
  параметра	
  в	
  системе	
  
•  Сколько	
  раз	
  я	
  ошибся	
  в	
  IP-­‐адресах?	
  
•  Сколько	
  это	
  занимало	
  времени?	
  
•  И	
  это	
  только	
  настройка	
  OS	
  
Ошибки	
  в	
  конфигурации	
  
•  MySQL	
  5.0	
  на	
  produc$on,	
  5.1	
  на	
  stage	
  
•  php	
  без	
  модуля	
  и	
  вызов	
  @funcname	
  
•  database	
  pool	
  size	
  в	
  многопоточном	
  
   приложении	
  
•  Array.count	
  в	
  Ruby	
  1.8.7	
  (development)	
  и	
  
   1.8.6	
  (produc$on)	
  
•  Патчи	
  для	
  Ruby	
  во	
  FreeBSD	
  и	
  Hpricot	
  
И	
  еще…	
  
•    Патч	
  в	
  gem	
  $dy,	
  который	
  делали	
  руками	
  
•    Размер	
  блока	
  в	
  md-­‐устройстве	
  
•    PostgreSQL	
  мастер	
  на	
  Linux,	
  слейв	
  –	
  FreeBSD	
  
•    Выкатка	
  через	
  chef/capistrano	
  
•    Версии	
  PostgreSQL	
  9.0	
  –	
  на	
  stage,	
  9.1	
  в	
  бою	
  
Опрос   	
  
Как	
  предотвратить	
  подобные	
  
            ситуации?	
  
Принципы	
  
•  Создать	
  повторяемый	
  и	
  надежный	
  процесс	
  
     поставки	
  ПО	
  
•  Автоматизировать	
  все,	
  что	
  можно	
  
•  Хранить	
  все	
  в	
  системе	
  контроля	
  версий	
  
•  Совершенствоваться	
  через	
  повторения	
  
•  Получать	
  раннюю	
  обратную	
  связь	
  
	
  
продолжение…	
  
•    Встроенный	
  контроль	
  качества	
  
•    Выполнено,	
  значит	
  зарелизилось	
  
•    Каждый	
  отвечает	
  за	
  процесс	
  поставки	
  ПО	
  
•    Непрерывные	
  улучшения	
  
Преимущества	
  
•    Понижение	
  стресса	
  
•    Уменьшение	
  ошибок	
  
•    Помощь	
  команде	
  
•    Гибкость	
  выкатки	
  
Сколько	
  времени	
  нужно,	
  чтобы	
  	
  
    строчка	
  кода	
  попала	
  в	
  релиз?	
  
                        	
  

    Сколько	
  времени	
  вам	
  надо,	
  
чтобы	
  развернуть	
  ваше	
  приложение?	
  
Конвейер	
  
Среда	
  
разработки	
  



                 CI	
  



                          QA	
  



                                   Staging	
  



                                                 Produc$on	
  
DevOps	
  
•    Разработчики	
  и	
  QA	
  –	
  враги	
  
•    QA	
  и	
  админы	
  –	
  враги	
  
•    Разработчики	
  и	
  админы	
  –	
  враги	
  
•    Это	
  неправда!	
  
Управление	
  
              	
  



конфигурацией        	
  
Как	
  хранить	
  конфигурацию?	
  

Хранить	
  образы	
  всех	
  серверов	
  
	
  
Минусы:	
  
   –  изменение	
  в	
  образе	
  и	
  на	
  сервере	
  
   –  отсутствие	
  контроля	
  (кто	
  и	
  когда)	
  
Что	
  такое	
  конфигурация?	
  
Что	
  ценно	
  на	
  сервере?	
  
На	
  боевом	
  сервере	
  размер	
  
       папки	
  /usr	
  730	
  Мб	
  
                  	
  
Дороги	
  ли	
  мне	
  эти	
  данные?	
  
Минимальное	
  количество	
  данных,	
  
  необходимое	
  для	
  того,	
  чтобы	
  
повторяемо	
  воспроизводить	
  среду	
  
•    OS	
  (версия,	
  образ)	
  
•    Список	
  установленных	
  пакетов	
  (с	
  версиями)	
  
•    Настройки	
  системы	
  
•    Библиотеки	
  приложения	
  
Образ	
  системы	
  
•  Kiwi	
  h•p://opensuse.github.com/kiwi/	
  
•  Cobbler	
  h•p://cobbler.github.com/	
  
•  Spacewalk	
  h•p://spacewalk.redhat.com/	
  
Пакеты	
  


 OBS	
  -­‐	
  Open	
  Build	
  Service	
  
h•ps://build.opensuse.org/	
  
                      	
  
Системы	
  управления	
  конфигурацией	
  
•  Chef	
  h•p://www.opscode.com/chef/	
  
•  Puppet	
  
   h•ps://puppetlabs.com/puppet/puppet-­‐open-­‐
   source/	
  
•  CFEngine	
  
•  Salt	
  
Функции	
  
•      Устанавливать	
  нужные	
  пакеты	
  
•      Следить	
  за	
  файлами	
  конфигурации	
  
•      Запускать	
  и	
  перезапускать	
  сервисы	
  
•      Интеграция	
  компонет	
  
	
  
Opscode	
  Chef	
  
                Chef	
  сервер	
  




db01	
                    web01	
     web02	
  
Выкатка	
  
•    Повторяема	
  
•    Полностью	
  автоматизирована	
  
•    Независима	
  от	
  локальных	
  настроек	
  
•    Независимые	
  релизы	
  (и	
  конфигурация)	
  
•    Откат	
  отрепетирован	
  
•    Например:	
  capistrano,	
  fabric	
  
Библиотеки	
  приложения	
  
•  Maven	
  для	
  Java	
  
•  Bundler	
  для	
  Ruby	
  
•  Virtualenv/pip	
  для	
  Python	
  
Bundler	
  
source	
  'h•p://rubygems.org’	
  
	
  
gem	
  'rails',	
  '3.1.10’	
  
gem	
  'pg’	
  
gem	
  'nokogiri'	
  
gem	
  'haml'	
  
gem	
  'devise',	
  '1.5.0'	
  
gem	
  'russian',	
  '~>	
  0.6.0'	
  
gem	
  'simple_form',	
  '1.5.2'	
  
gem	
  'state_machine'	
  
gem	
  'globalize3',	
  "~>	
  0.2.0.beta4”	
  
При	
  этом	
  настройки	
  Cobbler,	
  
 OBS,	
  Chef,	
  Bundler	
  лежат	
  в	
  	
  
 системе	
  контроля	
  версий	
  
                    	
  
Непрерывная	
  интеграция      	
  


 (Con$nuous	
  Integra$on)
                        	
  
При	
  каждом	
  изменении:	
  
•      проект	
  забирается	
  из	
  СКВ	
  
•      проект	
  собирается	
  
•      прогоняются	
  тесты	
  
•      проходит	
  выкатка	
  на	
  тестовый	
  стенд	
  (?)	
  
•      рассылаются	
  оповещения	
  
	
  
•    CruiseControl	
  (CruiseControl.rb)	
  
•    Jenkins	
  
•    TeamCity	
  от	
  JetBrains	
  
•    TravisCI	
  
Проблема	
  в	
  людях
                     	
  
Практики	
  
   	
  
Делайте	
  коммиты	
  часто   	
  
•  создайте	
  хорошее	
  покрытие	
  
     автоматическими	
  тестами	
  
•  сохраняйте	
  время	
  сборки	
  и	
  выполнения	
  
     тестов	
  небольшим	
  
•  не	
  вносите	
  изменений,	
  когда	
  сборка	
  
     сломана	
  
•  прогоняйте	
  тесты	
  локально	
  перед	
  
     внесением	
  изменений	
  
	
  
•  подождите	
  прохождения	
  тестов,	
  а	
  потом	
  
     продолжайте	
  работу	
  
•  не	
  уходите	
  домой,	
  если	
  сборка	
  сломана	
  
•  будьте	
  готовы	
  откатить	
  изменения	
  
•  не	
  комментируйте	
  сломавшиеся	
  тесты	
  
•  берите	
  на	
  себя	
  ответственность	
  за	
  свои	
  
     изменения	
  
•  пишите	
  тесты	
  перед	
  кодом	
  (TDD)	
  
	
  
Тестирование	
  
Бизнес	
  
                    Автоматические	
                      Ручные	
  
                          	
                                 	
  
                          	
                                 	
  
                  Приемочные	
  	
                     Показы	
  
                     тесты	
                          Юзабилити	
  
Поддержка	
  




                                                                             Критика	
  
                            	
                               	
  
                            	
                               	
  
                            	
                               	
  
                  Юнит	
  тесты	
                Нагрузочные	
  
                Интеграционные	
                 Безопасности	
  
                    Выкатка	
                              	
  
                          	
                               	
  
                    Автоматические	
             Ручные/Автоматические	
  



                                   Технологии	
  
Готовых	
  рецептов	
  нет	
  
•  Думайте	
  
•  Измеряйте	
  
•  Экспериментируйте	
  
Что	
  почитать?	
  
•  con$nuousdelivery.com	
  
	
  
Спасибо	
  за	
  внимание!               	
  


 Вопросы	
  и	
  ответы           	
  
               	
  
               	
  

    ivan@express42.com	
  
     Twi•er:	
  evtuhovich	
  
  h•p://blog.evtuhovich.ru/	
  

More Related Content

PPTX
Роман Василенко. Continuous delivery или как упростить себе жизнь
PDF
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
PPT
Инструментация среды исполнения в арсенале тестировщика
PPTX
Мастер класс- Maven + Jenkins
PDF
Введение в maven
PDF
Артём Ерошенко «Рецепт приготовления облачных тестингов»
PDF
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)
PDF
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Роман Василенко. Continuous delivery или как упростить себе жизнь
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
Инструментация среды исполнения в арсенале тестировщика
Мастер класс- Maven + Jenkins
Введение в maven
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы

What's hot (20)

PDF
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
PPTX
Docker + Selenium Webdriver в рамках Continuous Integration
PPTX
Kubernetes
PPTX
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
PDF
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
PPTX
Как мы собираем проекты в выделенном окружении в Windows Docker
PDF
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
PDF
CD with Jenkins. Lessons Learned
PPTX
Maven 3 : уличная магия
PPTX
Типовая сборка и деплой продуктов в Positive Technologies
PDF
DevOps guide for awesome quality assurance
PDF
Как Cluster Membership Software может помочь QA
PDF
Winium — это как Selenium, только под Windows
PDF
Проникновение в Docker с примерами
PPTX
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
PPTX
Codeception + Docker + Robo и что из этого вышло
PPTX
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
PDF
Илья Кудинов
PDF
Python Development process in Yandex
PDF
Dev collaboration
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Docker + Selenium Webdriver в рамках Continuous Integration
Kubernetes
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Как мы собираем проекты в выделенном окружении в Windows Docker
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
CD with Jenkins. Lessons Learned
Maven 3 : уличная магия
Типовая сборка и деплой продуктов в Positive Technologies
DevOps guide for awesome quality assurance
Как Cluster Membership Software может помочь QA
Winium — это как Selenium, только под Windows
Проникновение в Docker с примерами
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
Codeception + Docker + Robo и что из этого вышло
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
Илья Кудинов
Python Development process in Yandex
Dev collaboration
Ad

Similar to Иван Евтухович — Как перестать релизиться и начать жить (20)

PDF
Continuousdelivery
PDF
Тестирование весна 2013 лекция 5
PDF
Zero Downtime PHP Deployment with Envoyer And Forge
PDF
Марина Широчкина - Тестирование
PDF
Марина Широчкина — «Тестирование»
PDF
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
PDF
Инженерный дзен. Непрерывные изменения (Александр Титов)
PPTX
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
PPTX
Добиваемся эффективности каждого из 9000+ UI-тестов
PDF
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
PPT
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
PDF
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
PPTX
Готовим тестируемую инфраструктуру с Chef
PDF
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PDF
Continuous delivery on IBMi
PPTX
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
PPTX
Лучшие практики на практике
PPTX
Parallels, Денис Чернилевский, "Проблемы роста системы тестирования большого ...
PDF
DevOps и системы управления конфигурацией. SECON 2015
PDF
Enter: testing
Continuousdelivery
Тестирование весна 2013 лекция 5
Zero Downtime PHP Deployment with Envoyer And Forge
Марина Широчкина - Тестирование
Марина Широчкина — «Тестирование»
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
Инженерный дзен. Непрерывные изменения (Александр Титов)
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
Добиваемся эффективности каждого из 9000+ UI-тестов
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
Готовим тестируемую инфраструктуру с Chef
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
Continuous delivery on IBMi
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Лучшие практики на практике
Parallels, Денис Чернилевский, "Проблемы роста системы тестирования большого ...
DevOps и системы управления конфигурацией. SECON 2015
Enter: testing
Ad

More from Daria Oreshkina (15)

PDF
Антон Веретенников и Илья Семаков. Презентация
PDF
Валкин, Мокевнин — Развитие IT-среды в Ульяновске
PDF
Максим Семенкин — Открытие
PDF
Сергей Парамонов — Что наша жизнь — игра!
PDF
Кирилл Мокевнин — Ментальное программирование
PDF
Антон Каляев — Быстрое развертывание среды с Vagrant
PDF
Дмитрий Еманов — Под капотом серверного ПО
PDF
Лев Валкин — Программируем функционально
PPT
Александр Жарков — Эволюция команды разработки: взгляд изнутри
PPTX
Алексей Шалдышев — Проектное управление
PPTX
Артём Рудаковский — Как мы электронное правительство делали
PPTX
Наталья Желнова — Как обзавестись аналитиками и получить от них пользу в проекте
PPTX
Асхат Уразбаев — Value Stream Mapping
PPT
Алексей Ситников. Итоговая презентация группы « Социальная политика». 19 апреля
PPT
Булат Столяров. Итоговая презентация дискуссионной группы «Защита прав гражд...
Антон Веретенников и Илья Семаков. Презентация
Валкин, Мокевнин — Развитие IT-среды в Ульяновске
Максим Семенкин — Открытие
Сергей Парамонов — Что наша жизнь — игра!
Кирилл Мокевнин — Ментальное программирование
Антон Каляев — Быстрое развертывание среды с Vagrant
Дмитрий Еманов — Под капотом серверного ПО
Лев Валкин — Программируем функционально
Александр Жарков — Эволюция команды разработки: взгляд изнутри
Алексей Шалдышев — Проектное управление
Артём Рудаковский — Как мы электронное правительство делали
Наталья Желнова — Как обзавестись аналитиками и получить от них пользу в проекте
Асхат Уразбаев — Value Stream Mapping
Алексей Ситников. Итоговая презентация группы « Социальная политика». 19 апреля
Булат Столяров. Итоговая презентация дискуссионной группы «Защита прав гражд...

Иван Евтухович — Как перестать релизиться и начать жить

  • 1. Con$nuous  Delivery   как  перестать  релизиться  и     начать  жить   Иван  Евтухович     SECON’  2013  
  • 3. План  доклада   •  Неудачные  истории  из  жизни   •  Принципы  непрерывной  поставки  ПО   •  Управление  конфигурацией   •  Непрерывная  интеграция   •  Тестирование    
  • 5. Неудачные  истории     из  жизни  
  • 6. Сломавшийся  сервер   1.  Плановая  перезагрузка   2.  Сервер  не  подымается   3.  В  23  часа  начинаем  перенос   4.  В  4  утра  он  все  еще  идет   5.  Утром  с  10  продолжаем  
  • 7. Что  там  было?   1.  10-­‐15  скриптов  в  cron   2.  у  каждого  скрипта  свой  набор  ключей   3.  2  ключевых  сервиса   4.  все  настройки  умерли  вместе  с  сервером  
  • 9. •  Десятки  и  сотни  единиц  оборудования   •  Процесс  первоначальной  настройки:   –  Загружаемся  с  диска   –  Переставляем  диск  с  образом   –  Записываем   –  Правим  3  параметра  в  системе   •  Сколько  раз  я  ошибся  в  IP-­‐адресах?   •  Сколько  это  занимало  времени?   •  И  это  только  настройка  OS  
  • 10. Ошибки  в  конфигурации   •  MySQL  5.0  на  produc$on,  5.1  на  stage   •  php  без  модуля  и  вызов  @funcname   •  database  pool  size  в  многопоточном   приложении   •  Array.count  в  Ruby  1.8.7  (development)  и   1.8.6  (produc$on)   •  Патчи  для  Ruby  во  FreeBSD  и  Hpricot  
  • 11. И  еще…   •  Патч  в  gem  $dy,  который  делали  руками   •  Размер  блока  в  md-­‐устройстве   •  PostgreSQL  мастер  на  Linux,  слейв  –  FreeBSD   •  Выкатка  через  chef/capistrano   •  Версии  PostgreSQL  9.0  –  на  stage,  9.1  в  бою  
  • 14. Принципы   •  Создать  повторяемый  и  надежный  процесс   поставки  ПО   •  Автоматизировать  все,  что  можно   •  Хранить  все  в  системе  контроля  версий   •  Совершенствоваться  через  повторения   •  Получать  раннюю  обратную  связь    
  • 15. продолжение…   •  Встроенный  контроль  качества   •  Выполнено,  значит  зарелизилось   •  Каждый  отвечает  за  процесс  поставки  ПО   •  Непрерывные  улучшения  
  • 16. Преимущества   •  Понижение  стресса   •  Уменьшение  ошибок   •  Помощь  команде   •  Гибкость  выкатки  
  • 17. Сколько  времени  нужно,  чтобы     строчка  кода  попала  в  релиз?     Сколько  времени  вам  надо,   чтобы  развернуть  ваше  приложение?  
  • 19. Среда   разработки   CI   QA   Staging   Produc$on  
  • 20. DevOps   •  Разработчики  и  QA  –  враги   •  QA  и  админы  –  враги   •  Разработчики  и  админы  –  враги   •  Это  неправда!  
  • 21. Управление     конфигурацией  
  • 22. Как  хранить  конфигурацию?   Хранить  образы  всех  серверов     Минусы:   –  изменение  в  образе  и  на  сервере   –  отсутствие  контроля  (кто  и  когда)  
  • 24. Что  ценно  на  сервере?   На  боевом  сервере  размер   папки  /usr  730  Мб     Дороги  ли  мне  эти  данные?  
  • 25. Минимальное  количество  данных,   необходимое  для  того,  чтобы   повторяемо  воспроизводить  среду  
  • 26. •  OS  (версия,  образ)   •  Список  установленных  пакетов  (с  версиями)   •  Настройки  системы   •  Библиотеки  приложения  
  • 27. Образ  системы   •  Kiwi  h•p://opensuse.github.com/kiwi/   •  Cobbler  h•p://cobbler.github.com/   •  Spacewalk  h•p://spacewalk.redhat.com/  
  • 28. Пакеты   OBS  -­‐  Open  Build  Service   h•ps://build.opensuse.org/    
  • 29. Системы  управления  конфигурацией   •  Chef  h•p://www.opscode.com/chef/   •  Puppet   h•ps://puppetlabs.com/puppet/puppet-­‐open-­‐ source/   •  CFEngine   •  Salt  
  • 30. Функции   •  Устанавливать  нужные  пакеты   •  Следить  за  файлами  конфигурации   •  Запускать  и  перезапускать  сервисы   •  Интеграция  компонет    
  • 31. Opscode  Chef   Chef  сервер   db01   web01   web02  
  • 32. Выкатка   •  Повторяема   •  Полностью  автоматизирована   •  Независима  от  локальных  настроек   •  Независимые  релизы  (и  конфигурация)   •  Откат  отрепетирован   •  Например:  capistrano,  fabric  
  • 33. Библиотеки  приложения   •  Maven  для  Java   •  Bundler  для  Ruby   •  Virtualenv/pip  для  Python  
  • 34. Bundler   source  'h•p://rubygems.org’     gem  'rails',  '3.1.10’   gem  'pg’   gem  'nokogiri'   gem  'haml'   gem  'devise',  '1.5.0'   gem  'russian',  '~>  0.6.0'   gem  'simple_form',  '1.5.2'   gem  'state_machine'   gem  'globalize3',  "~>  0.2.0.beta4”  
  • 35. При  этом  настройки  Cobbler,   OBS,  Chef,  Bundler  лежат  в     системе  контроля  версий    
  • 36. Непрерывная  интеграция   (Con$nuous  Integra$on)  
  • 37. При  каждом  изменении:   •  проект  забирается  из  СКВ   •  проект  собирается   •  прогоняются  тесты   •  проходит  выкатка  на  тестовый  стенд  (?)   •  рассылаются  оповещения    
  • 38. •  CruiseControl  (CruiseControl.rb)   •  Jenkins   •  TeamCity  от  JetBrains   •  TravisCI  
  • 42. •  создайте  хорошее  покрытие   автоматическими  тестами   •  сохраняйте  время  сборки  и  выполнения   тестов  небольшим   •  не  вносите  изменений,  когда  сборка   сломана   •  прогоняйте  тесты  локально  перед   внесением  изменений    
  • 43. •  подождите  прохождения  тестов,  а  потом   продолжайте  работу   •  не  уходите  домой,  если  сборка  сломана   •  будьте  готовы  откатить  изменения   •  не  комментируйте  сломавшиеся  тесты   •  берите  на  себя  ответственность  за  свои   изменения   •  пишите  тесты  перед  кодом  (TDD)    
  • 45. Бизнес   Автоматические   Ручные           Приемочные     Показы   тесты   Юзабилити   Поддержка   Критика               Юнит  тесты   Нагрузочные   Интеграционные   Безопасности   Выкатка         Автоматические   Ручные/Автоматические   Технологии  
  • 46. Готовых  рецептов  нет   •  Думайте   •  Измеряйте   •  Экспериментируйте  
  • 49. Спасибо  за  внимание!   Вопросы  и  ответы       [email protected]   Twi•er:  evtuhovich   h•p://blog.evtuhovich.ru/