SlideShare ist ein Scribd-Unternehmen logo
1 von 49
Downloaden Sie, um offline zu lesen
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/	
  

Weitere ähnliche Inhalte

Was ist angesagt?

Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Ontico
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Ontico
 
Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...
Ontico
 
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
Ontico
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Ontico
 
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько разRootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
Timur Batyrshin
 
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
Ontico
 
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
Ontico
 
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Ontico
 

Was ist angesagt? (20)

Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
 
Выступление Юрия Насретдинова, Badoo, на High Performance Conference
Выступление Юрия Насретдинова, Badoo, на High Performance ConferenceВыступление Юрия Насретдинова, Badoo, на High Performance Conference
Выступление Юрия Насретдинова, Badoo, на High Performance Conference
 
Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
 
Sivko
SivkoSivko
Sivko
 
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
 
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web Workers
 
Управление контейнерами в облаках
 Управление контейнерами в облаках Управление контейнерами в облаках
Управление контейнерами в облаках
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
 
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько разRootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
 
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
 
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
 
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Тестируем мобильное приложение в суровых реалиях Интернета
Тестируем мобильное приложение в суровых реалиях ИнтернетаТестируем мобильное приложение в суровых реалиях Интернета
Тестируем мобильное приложение в суровых реалиях Интернета
 
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
 

Andere mochten auch

Seconardy Research
Seconardy ResearchSeconardy Research
Seconardy Research
katiebabey
 
Primary Research
Primary ResearchPrimary Research
Primary Research
katiebabey
 
Os services overview 2013
Os services overview 2013Os services overview 2013
Os services overview 2013
Aditi Arora
 
Composting with OS1 probiotics
Composting with OS1 probioticsComposting with OS1 probiotics
Composting with OS1 probiotics
Aditi Arora
 
Нетрадиционное использование Ruby и PostgreSQL
Нетрадиционное использование Ruby и PostgreSQLНетрадиционное использование Ruby и PostgreSQL
Нетрадиционное использование Ruby и PostgreSQL
Ivan Evtukhovich
 

Andere mochten auch (7)

Seconardy Research
Seconardy ResearchSeconardy Research
Seconardy Research
 
Primary Research
Primary ResearchPrimary Research
Primary Research
 
Повторяемость для котиков: библиотекарь и книжная полка
Повторяемость для котиков: библиотекарь и книжная полкаПовторяемость для котиков: библиотекарь и книжная полка
Повторяемость для котиков: библиотекарь и книжная полка
 
Os services overview 2013
Os services overview 2013Os services overview 2013
Os services overview 2013
 
Media Management Services 2009
Media Management Services 2009Media Management Services 2009
Media Management Services 2009
 
Composting with OS1 probiotics
Composting with OS1 probioticsComposting with OS1 probiotics
Composting with OS1 probiotics
 
Нетрадиционное использование Ruby и PostgreSQL
Нетрадиционное использование Ruby и PostgreSQLНетрадиционное использование Ruby и PostgreSQL
Нетрадиционное использование Ruby и PostgreSQL
 

Ähnlich wie Continuousdelivery

Иван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать житьИван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать жить
Daria Oreshkina
 
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
Ontico
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
IT-Portfolio
 
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Ontico
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
Alex Chistyakov
 
Инженерный дзен. Непрерывные изменения (Александр Титов)
Инженерный дзен. Непрерывные изменения (Александр Титов)Инженерный дзен. Непрерывные изменения (Александр Титов)
Инженерный дзен. Непрерывные изменения (Александр Титов)
Ontico
 
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные измененияCodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
CodeFest
 
Консервация процессов в домашних условиях
Консервация процессов в домашних условияхКонсервация процессов в домашних условиях
Консервация процессов в домашних условиях
OpenVZ
 

Ähnlich wie Continuousdelivery (20)

Иван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать житьИван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать жить
 
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
 
Chef @DevWeb
Chef @DevWebChef @DevWeb
Chef @DevWeb
 
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
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
 
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
 
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
 
«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»
 
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
 
Инженерный дзен. Непрерывные изменения (Александр Титов)
Инженерный дзен. Непрерывные изменения (Александр Титов)Инженерный дзен. Непрерывные изменения (Александр Титов)
Инженерный дзен. Непрерывные изменения (Александр Титов)
 
Wgforge CI/CD
Wgforge CI/CDWgforge CI/CD
Wgforge CI/CD
 
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные измененияCodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
 
Страх и ненависть в мире релиз-инжиниринга
Страх и ненависть в мире релиз-инжинирингаСтрах и ненависть в мире релиз-инжиниринга
Страх и ненависть в мире релиз-инжиниринга
 
Консервация процессов в домашних условиях
Консервация процессов в домашних условияхКонсервация процессов в домашних условиях
Консервация процессов в домашних условиях
 
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)
 
Docker Containers orchestrators: Kubernetes vs. Swarm
Docker Containers orchestrators: Kubernetes vs. SwarmDocker Containers orchestrators: Kubernetes vs. Swarm
Docker Containers orchestrators: Kubernetes vs. Swarm
 

Mehr von Ivan Evtukhovich

Git для продолжающих
Git для продолжающихGit для продолжающих
Git для продолжающих
Ivan Evtukhovich
 

Mehr von Ivan Evtukhovich (10)

Развитие DevOps/NoOps инструментов. Что было, что есть, что будет.
Развитие DevOps/NoOps инструментов.  Что было, что есть, что будет.Развитие DevOps/NoOps инструментов.  Что было, что есть, что будет.
Развитие DevOps/NoOps инструментов. Что было, что есть, что будет.
 
Микросервисы: откуда столько шума?
Микросервисы: откуда столько шума?Микросервисы: откуда столько шума?
Микросервисы: откуда столько шума?
 
Микросервисы: откуда столько шума?
Микросервисы: откуда столько шума?Микросервисы: откуда столько шума?
Микросервисы: откуда столько шума?
 
Жизнь консалтинга в мире DevOps
Жизнь консалтинга в мире DevOpsЖизнь консалтинга в мире DevOps
Жизнь консалтинга в мире DevOps
 
DevOps и системы управления конфигурацией. SECON 2015
DevOps и системы управления конфигурацией. SECON 2015DevOps и системы управления конфигурацией. SECON 2015
DevOps и системы управления конфигурацией. SECON 2015
 
Куда движется управление инфраструктурой
Куда движется управление инфраструктуройКуда движется управление инфраструктурой
Куда движется управление инфраструктурой
 
Vim or die
Vim or dieVim or die
Vim or die
 
Git для продолжающих
Git для продолжающихGit для продолжающих
Git для продолжающих
 
Краткое описание Scrum
Краткое описание ScrumКраткое описание Scrum
Краткое описание Scrum
 
Распределенные системы контоля версия на примере git
Распределенные системы контоля версия на примере gitРаспределенные системы контоля версия на примере git
Распределенные системы контоля версия на примере git
 

Continuousdelivery

  • 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  и  админы  –  враги   •  Разработчики  и  админы  –  враги   •  Это  неправда!  
  • 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/