Continuous delivery

2,312 views
2,203 views

Published on

Published in: Technology

Continuous delivery

  1. 1. Continuous Delivery как перестать релизиться и начать жить Иван Евтухович
  2. 2. Оверсан-Скалакси scalaxy.ru
  3. 3. План доклада
  4. 4. Неудачные истории из жизни Принципы непрерывной поставки ПО Управление конфигурацией Непрерывная интеграция Тестирование
  5. 5. Неудачные истории из жизни
  6. 6. Сломавшийся сервер 1. Плановая перезагрузка 2. Сервер не подымается 3. В 23 часа начинаем перенос 4. В 4 утра он все еще идет 5. Утром с 10 продолжаем
  7. 7. Что там было? 10-15 скриптов в cron у каждого скрипта свой набор ключей 2 ключевых сервиса все настройки умерли вместе с сервером
  8. 8. Много оборудования
  9. 9. Десятки и сотни единиц оборудования Процесс первоначальной настройки: Загружаемся с диска Переставляем диск с образом Записываем Правим 3 параметра в системе Сколько раз я ошибся в IP-адресах? Сколько это занимало времени? И это только настройка OS
  10. 10. Ошибки в конфигурации MySQL 5.0 на production, 5.1 на stage php без модуля и вызов @funcname database pool size в многопоточном приложении Array.count в Ruby 1.8.7 (development) и 1.8.6 (production) Патчи для Ruby во FreeBSD и Hpricot Патч в gem tidy, который делали руками
  11. 11. Опрос
  12. 12. Как предотвратить подобные ситуации?
  13. 13. Принципы Создать повторяемый и надежный процесс поставки ПО Автоматизировать все, что можно Хранить все в системе контроля версий Совершенствоваться через повторения
  14. 14. продолжение... Встроенный контроль качества Выполнено, значит зарелизилось Каждый отвечает за процесс поставки ПО Непрерывные улучшения
  15. 15. Преимущества Понижение стресса Уменьшение ошибок Поддержка команды Гибкость выкатки
  16. 16. Сколько времени нужно, чтобы строчка кода попала в релиз? Сколько времени вам надо, чтобы развернуть ваше приложение?
  17. 17. Управление конфигурацией
  18. 18. Как хранить конфигурацию? Хранить образы всех серверов Минусы: изменение в образе и на сервере отсутствие контроля (кто и когда)
  19. 19. Что такое конфигурация?
  20. 20. Что ценно на сервере? /usr на моей Ubunte 4Gb Дороги ли мне эти данные?
  21. 21. OS (версия, образ) Список установленных пакетов (с версиями) Настройки системы Библиотеки приложения
  22. 22. Образ OS KIWI Image System http://kiwi.berlios.de/
  23. 23. Пакеты OBS - openSUSE Build Service
  24. 24. Список пакетов и настройки Chef Puppet http://github.com/lg/murder - BitTorrent
  25. 25. Функции Устанавливать нужные пакеты Следить за конфигами Запускать и перезапускать сервисы
  26. 26. Библиотеки приложения Maven для Java Bundler для Ruby
  27. 27. Bundler source 'http://rubygems.org' gem 'rails', '=2.3.5' gem 'net-ssh', '=2.0.19', :require => 'net/ssh' gem 'authlogic', '=2.1.3' gem 'uuid', '=2.1.0' gem 'foreign_keys', '=2.0.0' gem 'mysqlplus', '=0.1.1' gem 'will_paginate', '=2.3.12' gem 'aasm', '=2.1.4' gem 'russian', '=0.2.5' gem 'hoptoad_notifier', '=2.1.3'
  28. 28. При этом настройки Kiwi, OBS, Chef, Bundler лежат в системе контроля версий
  29. 29. Непрерывная интеграция (Continuous Integration)
  30. 30. При каждом изменении: проект забирается из СКВ проект собирается прогоняются тесты проходит выкатка на тестовый стенд (?) рассылаются оповещения
  31. 31. CruiseControl (CruiseControl.rb) Hudson TeamCity от JetBrains
  32. 32. Проблема в людях
  33. 33. Практики
  34. 34. Делайте коммиты часто
  35. 35. создайте хорошее покрытие автоматическими тестами сохраняйте время сборки и выполнения тестов небольшим не вносите изменений, когда сборка сломана прогоняйте тесты локально перед внесением изенений
  36. 36. подождите прохождения тестов, а потом продолжайте работу не уходите домой, если сборка сломана будьте готовы откатить изменения не комментируйте сломавшиеся тесты берите на себя ответственность за свои изменения пишите тесты перед кодом (TDD)
  37. 37. Тестирование
  38. 38. Автоматические Приемочные тесты Ручные Показы Юзабилити Юнит тесты Интеграционные Выкатка Автоматические Нагрузочные Безопасности Ручные/Автоматические Бизнес Технологии Поддержка Критика
  39. 39. Что почитать?
  40. 40. http://continuousdelivery.com/ DevOps
  41. 41. Спасибо за внимание! Вопросы и ответы

×