SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
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/	
  

Contenu connexe

Tendances

Лучшие практики 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 IntegrationSQALab
 
Kubernetes
KubernetesKubernetes
KubernetesSQALab
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов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 DockerPositive 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 TechnologiesPositive Hack Days
 
Как Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QAКак Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QASQALab
 
Winium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsWinium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsSQALab
 
Проникновение в 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 DeliverySQALab
 
Илья Кудинов
Илья КудиновИлья Кудинов
Илья КудиновCodeFest
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandexaviatakz
 

Tendances (20)

Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
 
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous Integration
 
Kubernetes
KubernetesKubernetes
Kubernetes
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
 
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
 
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 : уличная магия
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
 
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
 
Winium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsWinium — это как Selenium, только под Windows
Winium — это как Selenium, только под Windows
 
Проникновение в Docker с примерами
Проникновение в Docker с примерамиПроникновение в Docker с примерами
Проникновение в Docker с примерами
 
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
 
Codeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCodeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышло
 
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous DeliveryJenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
 
Илья Кудинов
Илья КудиновИлья Кудинов
Илья Кудинов
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandex
 
Dev collaboration
Dev collaborationDev collaboration
Dev collaboration
 

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

Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Technopark
 
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 ForgeYehor 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
Готовим тестируемую инфраструктуру с ChefSQALab
 
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 2015Ivan Evtukhovich
 

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

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

Plus de Daria Oreshkina

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

Plus de Daria Oreshkina (15)

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

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

  • 1. Con$nuous  Delivery   как  перестать  релизиться  и     начать  жить   Иван  Евтухович     SECON’  2013  
  • 2.
  • 3. План  доклада   •  Неудачные  истории  из  жизни   •  Принципы  непрерывной  поставки  ПО   •  Управление  конфигурацией   •  Непрерывная  интеграция   •  Тестирование    
  • 4.
  • 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. Спасибо  за  внимание!   Вопросы  и  ответы       ivan@express42.com   Twi•er:  evtuhovich   h•p://blog.evtuhovich.ru/