ݺߣ

ݺߣShare a Scribd company logo
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

What's hot (20)

Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Ontico
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous Integration
SQALab
Kubernetes
KubernetesKubernetes
Kubernetes
SQALab
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
SQALab
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Ontico
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
Positive Hack Days
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
CEE-SEC(R)
CD with Jenkins. Lessons Learned
CD with Jenkins. Lessons LearnedCD with Jenkins. Lessons Learned
CD with Jenkins. Lessons Learned
Кирилл Толкачёв
Maven 3 : уличная магия
Maven 3 : уличная магияMaven 3 : уличная магия
Maven 3 : уличная магия
Aleksey Solntsev
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
Positive Hack Days
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
Анастасия Асеева
Как Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QAКак Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QA
SQALab
Winium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsWinium — это как Selenium, только под Windows
Winium — это как Selenium, только под Windows
SQALab
Проникновение в Docker с примерами
Проникновение в Docker с примерамиПроникновение в Docker с примерами
Проникновение в Docker с примерами
Дмитрий Столяров
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
corehard_by
Codeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCodeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышло
COMAQA.BY
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous DeliveryJenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
SQALab
Илья Кудинов
Илья КудиновИлья Кудинов
Илья Кудинов
CodeFest
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandex
aviatakz
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Ontico
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous Integration
SQALab
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
SQALab
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Ontico
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
Positive Hack Days
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
CEE-SEC(R)
Maven 3 : уличная магия
Maven 3 : уличная магияMaven 3 : уличная магия
Maven 3 : уличная магия
Aleksey Solntsev
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
Positive Hack Days
Как Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QAКак Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QA
SQALab
Winium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsWinium — это как Selenium, только под Windows
Winium — это как Selenium, только под Windows
SQALab
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
corehard_by
Codeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCodeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышло
COMAQA.BY
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous DeliveryJenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
SQALab
Илья Кудинов
Илья КудиновИлья Кудинов
Илья Кудинов
CodeFest
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandex
aviatakz

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

Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5
Technopark
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And Forge
Yehor Herasymchuk
Марина Широчкина - Тестирование
Марина Широчкина - ТестированиеМарина Широчкина - Тестирование
Марина Широчкина - Тестирование
Yandex
Марина Широчкина — «Тестирование»
Марина Широчкина — «Тестирование»Марина Широчкина — «Тестирование»
Марина Широчкина — «Тестирование»
Yandex
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные измененияCodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
CodeFest
Инженерный дзен. Непрерывные изменения (Александр Титов)
Инженерный дзен. Непрерывные изменения (Александр Титов)Инженерный дзен. Непрерывные изменения (Александр Титов)
Инженерный дзен. Непрерывные изменения (Александр Титов)
Ontico
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
SQALab
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Ontico
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
SQALab
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
FDConf
Готовим тестируемую инфраструктуру с Chef
Готовим тестируемую инфраструктуру с ChefГотовим тестируемую инфраструктуру с Chef
Готовим тестируемую инфраструктуру с Chef
SQALab
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
Ontico
Continuous delivery on IBMi
Continuous delivery on IBMi Continuous delivery on IBMi
Continuous delivery on IBMi
Maxim Shatunov
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙСтановление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
CEE-SEC(R)
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
Denis Tuchin
Parallels, Денис Чернилевский, "Проблемы роста системы тестирования большого ...
Parallels, Денис Чернилевский, "Проблемы роста системы тестирования большого ...Parallels, Денис Чернилевский, "Проблемы роста системы тестирования большого ...
Parallels, Денис Чернилевский, "Проблемы роста системы тестирования большого ...
dchernilevskiy
DevOps и системы управления конфигурацией. SECON 2015
DevOps и системы управления конфигурацией. SECON 2015DevOps и системы управления конфигурацией. SECON 2015
DevOps и системы управления конфигурацией. SECON 2015
Ivan Evtukhovich
Enter: testing
Enter: testingEnter: testing
Enter: testing
Kamil Samigullin
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5
Technopark
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And Forge
Yehor Herasymchuk
Марина Широчкина - Тестирование
Марина Широчкина - ТестированиеМарина Широчкина - Тестирование
Марина Широчкина - Тестирование
Yandex
Марина Широчкина — «Тестирование»
Марина Широчкина — «Тестирование»Марина Широчкина — «Тестирование»
Марина Широчкина — «Тестирование»
Yandex
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные измененияCodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
CodeFest
Инженерный дзен. Непрерывные изменения (Александр Титов)
Инженерный дзен. Непрерывные изменения (Александр Титов)Инженерный дзен. Непрерывные изменения (Александр Титов)
Инженерный дзен. Непрерывные изменения (Александр Титов)
Ontico
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
SQALab
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Ontico
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
SQALab
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
FDConf
Готовим тестируемую инфраструктуру с Chef
Готовим тестируемую инфраструктуру с ChefГотовим тестируемую инфраструктуру с Chef
Готовим тестируемую инфраструктуру с Chef
SQALab
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
Ontico
Continuous delivery on IBMi
Continuous delivery on IBMi Continuous delivery on IBMi
Continuous delivery on IBMi
Maxim Shatunov
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙСтановление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
CEE-SEC(R)
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
Denis Tuchin
Parallels, Денис Чернилевский, "Проблемы роста системы тестирования большого ...
Parallels, Денис Чернилевский, "Проблемы роста системы тестирования большого ...Parallels, Денис Чернилевский, "Проблемы роста системы тестирования большого ...
Parallels, Денис Чернилевский, "Проблемы роста системы тестирования большого ...
dchernilevskiy
DevOps и системы управления конфигурацией. SECON 2015
DevOps и системы управления конфигурацией. SECON 2015DevOps и системы управления конфигурацией. SECON 2015
DevOps и системы управления конфигурацией. SECON 2015
Ivan Evtukhovich

More from Daria Oreshkina (15)

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

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

  • 1. Con$nuous Delivery как перестать релизиться и начать жить Иван Евтухович SECON’ 2013
  • 3. План доклада •į Неудачные истории из жизни •į Принципы непрерывной поставки ПО •į Управление конфигурацией •į Непрерывная интеграция •į Тестирование
  • 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 лежат в системе контроля версий
  • 37. При каждом изменении: •į проект забирается из СКВ •į проект собирается •į прогоняются тесты •į проходит выкатка на тестовый стенд (?) •į рассылаются оповещения
  • 38. •į CruiseControl (CruiseControl.rb) •į Jenkins •į TeamCity от JetBrains •į TravisCI
  • 42. •į создайте хорошее покрытие автоматическими тестами •į сохраняйте время сборки и выполнения тестов небольшим •į не вносите изменений, когда сборка сломана •į прогоняйте тесты локально перед внесением изменений
  • 43. •į подождите прохождения тестов, а потом продолжайте работу •į не уходите домой, если сборка сломана •į будьте готовы откатить изменения •į не комментируйте сломавшиеся тесты •į берите на себя ответственность за свои изменения •į пишите тесты перед кодом (TDD)
  • 45. Бизнес Автоматические Ручные Приемочные Показы тесты Юзабилити Поддержка Критика Юнит тесты Нагрузочные Интеграционные Безопасности Выкатка Автоматические Ручные/Автоматические Технологии
  • 46. Готовых рецептов нет •į Думайте •į Измеряйте •į Экспериментируйте
  • 49. Спасибо за внимание! Вопросы и ответы ivan@express42.com Twi•er: evtuhovich h•p://blog.evtuhovich.ru/