Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Continuousdelivery

780 views

Published on

Continuousdelivery

  1. 1. Con$nuous  Delivery  как  перестать  релизиться  и    начать  жить  Иван  Евтухович    SECON’  2013  
  2. 2. План  доклада  •  Неудачные  истории  из  жизни  •  Принципы  непрерывной  поставки  ПО  •  Управление  конфигурацией  •  Непрерывная  интеграция  •  Тестирование    
  3. 3. Неудачные  истории    из  жизни  
  4. 4. Сломавшийся  сервер  1.  Плановая  перезагрузка  2.  Сервер  не  подымается  3.  В  23  часа  начинаем  перенос  4.  В  4  утра  он  все  еще  идет  5.  Утром  с  10  продолжаем  
  5. 5. Что  там  было?  1.  10-­‐15  скриптов  в  cron  2.  у  каждого  скрипта  свой  набор  ключей  3.  2  ключевых  сервиса  4.  все  настройки  умерли  вместе  с  сервером  
  6. 6. Много  оборудования  
  7. 7. •  Десятки  и  сотни  единиц  оборудования  •  Процесс  первоначальной  настройки:  – Загружаемся  с  диска  – Переставляем  диск  с  образом  – Записываем  – Правим  3  параметра  в  системе  •  Сколько  раз  я  ошибся  в  IP-­‐адресах?  •  Сколько  это  занимало  времени?  •  И  это  только  настройка  OS  
  8. 8. Ошибки  в  конфигурации  •  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  
  9. 9. И  еще…  •  Патч  в  gem  $dy,  который  делали  руками  •  Размер  блока  в  md-­‐устройстве  •  PostgreSQL  мастер  на  Linux,  слейв  –  FreeBSD  •  Выкатка  через  chef/capistrano  •  Версии  PostgreSQL  9.0  –  на  stage,  9.1  в  бою  
  10. 10. Опрос  
  11. 11. Как  предотвратить  подобные  ситуации?  
  12. 12. Принципы  •  Создать  повторяемый  и  надежный  процесс  поставки  ПО  •  Автоматизировать  все,  что  можно  •  Хранить  все  в  системе  контроля  версий  •  Совершенствоваться  через  повторения  •  Получать  раннюю  обратную  связь    
  13. 13. продолжение…  •  Встроенный  контроль  качества  •  Выполнено,  значит  зарелизилось  •  Каждый  отвечает  за  процесс  поставки  ПО  •  Непрерывные  улучшения  
  14. 14. Преимущества  •  Понижение  стресса  •  Уменьшение  ошибок  •  Помощь  команде  •  Гибкость  выкатки  
  15. 15. Сколько  времени  нужно,  чтобы    строчка  кода  попала  в  релиз?    Сколько  времени  вам  надо,  чтобы  развернуть  ваше  приложение?  
  16. 16. Конвейер  
  17. 17. Среда  разработки  CI  QA  Staging  Produc$on  
  18. 18. DevOps  •  Разработчики  и  QA  –  враги  •  QA  и  админы  –  враги  •  Разработчики  и  админы  –  враги  •  Это  неправда!  
  19. 19. Управление    конфигурацией  
  20. 20. Как  хранить  конфигурацию?  Хранить  образы  всех  серверов    Минусы:  – изменение  в  образе  и  на  сервере  – отсутствие  контроля  (кто  и  когда)  
  21. 21. Что  такое  конфигурация?  
  22. 22. Что  ценно  на  сервере?  На  боевом  сервере  размер  папки  /usr  730  Мб    Дороги  ли  мне  эти  данные?  
  23. 23. Минимальное  количество  данных,  необходимое  для  того,  чтобы  повторяемо  воспроизводить  среду  
  24. 24. •  OS  (версия,  образ)  •  Список  установленных  пакетов  (с  версиями)  •  Настройки  системы  •  Библиотеки  приложения  
  25. 25. Образ  системы  •  Kiwi  h•p://opensuse.github.com/kiwi/  •  Cobbler  h•p://cobbler.github.com/  •  Spacewalk  h•p://spacewalk.redhat.com/  
  26. 26. Пакеты  OBS  -­‐  Open  Build  Service  h•ps://build.opensuse.org/    
  27. 27. Системы  управления  конфигурацией  •  Chef  h•p://www.opscode.com/chef/  •  Puppet  h•ps://puppetlabs.com/puppet/puppet-­‐open-­‐source/  •  CFEngine  •  Salt  
  28. 28. Функции  •  Устанавливать  нужные  пакеты  •  Следить  за  файлами  конфигурации  •  Запускать  и  перезапускать  сервисы  •  Интеграция  компонет    
  29. 29. Opscode  Chef  Chef  сервер  db01   web01   web02  
  30. 30. Выкатка  •  Повторяема  •  Полностью  автоматизирована  •  Независима  от  локальных  настроек  •  Независимые  релизы  (и  конфигурация)  •  Откат  отрепетирован  •  Например:  capistrano,  fabric  
  31. 31. Библиотеки  приложения  •  Maven  для  Java  •  Bundler  для  Ruby  •  Virtualenv/pip  для  Python  
  32. 32. 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”  
  33. 33. При  этом  настройки  Cobbler,  OBS,  Chef,  Bundler  лежат  в    системе  контроля  версий    
  34. 34. Непрерывная  интеграция  (Con$nuous  Integra$on)  
  35. 35. При  каждом  изменении:  •  проект  забирается  из  СКВ  •  проект  собирается  •  прогоняются  тесты  •  проходит  выкатка  на  тестовый  стенд  (?)  •  рассылаются  оповещения    
  36. 36. •  CruiseControl  (CruiseControl.rb)  •  Jenkins  •  TeamCity  от  JetBrains  •  TravisCI  
  37. 37. Проблема  в  людях  
  38. 38. Практики    
  39. 39. Делайте  коммиты  часто  
  40. 40. •  создайте  хорошее  покрытие  автоматическими  тестами  •  сохраняйте  время  сборки  и  выполнения  тестов  небольшим  •  не  вносите  изменений,  когда  сборка  сломана  •  прогоняйте  тесты  локально  перед  внесением  изменений    
  41. 41. •  подождите  прохождения  тестов,  а  потом  продолжайте  работу  •  не  уходите  домой,  если  сборка  сломана  •  будьте  готовы  откатить  изменения  •  не  комментируйте  сломавшиеся  тесты  •  берите  на  себя  ответственность  за  свои  изменения  •  пишите  тесты  перед  кодом  (TDD)    
  42. 42. Тестирование  
  43. 43. Автоматические      Приемочные    тесты      Ручные      Показы  Юзабилити        Юнит  тесты  Интеграционные  Выкатка    Автоматические    Нагрузочные  Безопасности      Ручные/Автоматические  Бизнес  Технологии  Поддержка  Критика  
  44. 44. Готовых  рецептов  нет  •  Думайте  •  Измеряйте  •  Экспериментируйте  
  45. 45. Что  почитать?  
  46. 46. •  con$nuousdelivery.com    
  47. 47. Спасибо  за  внимание!  Вопросы  и  ответы      ivan@express42.com  Twi•er:  evtuhovich  h•p://blog.evtuhovich.ru/  

×