devops в agile среде. Как, почему и когда инструменты...
DESCRIPTION
Модное слово DevOps уже успело стать заезженным базвордом. Сотни компаний ищут DevOps инженеров, потому что искать системного администратора уже не модно. Я расскажу вам про свое понимание DevOps, как технические инструменты помогают делать Agile еще более гибким. Мы разберем основные принципы DevOps через призму донесения смысла без потерь: - Особая культура - Автоматизация - Изменения через измерения - Распространение знаний и практик Я поделюсь своим 5ти летним опытом в обеспечении повторяемости, мониторинге, логировании с примерами из реальной жизни. Александр Титов - управляющий партнер в компании "Экспресс 42", мы внедряем DevOps практики и инструменты, помогаем эксплуатировать интернет-проекты. В 2009, 2010 годах был техническим директором первого облачного хостинга в России Скалакси. В 2010 - 2012 прошел увлекательный путь поглощений вместе с компанией Qik - путь из эксплуатации быстрорастущего стартапа к эксплуатации в крупной международной компании Microsoft.TRANSCRIPT
![Page 1: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/1.jpg)
DevOps в Agile среде. Как, почему и когда инструменты
помогают.
Титов Александр, Экспресс 42
![Page 2: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/2.jpg)
О себе
Экспресс 42
![Page 3: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/3.jpg)
DevOps?
![Page 4: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/4.jpg)
Проблемы?
• собирать информационные системы вручную стало дорого
• разработчики, тестировщики и администраторы работают как “лебедь, рак и щука”
![Page 5: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/5.jpg)
vs
До и после DevOps
![Page 6: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/6.jpg)
Что делать?
• инструменты для создания конвейра непрерывной поставки программного обеспечения
• новые отношения между системными администраторами, тестировщиками и разработчиками
![Page 7: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/7.jpg)
DevOps CAMS
• автоматизация
• изменения через измерения
• культура
• распространение знаний
![Page 8: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/8.jpg)
Автоматизация и сохранение информации
• Lean
• инструменты для сохранения информации
• критерий эффективного использования - больше порядка в системе
![Page 9: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/9.jpg)
Как инструменты помогают
Dev Test Prod
Контекст Контекст’ Контекст’’
Одинаковые образы ОС (cobbler)
Контекст изменения в Chef
Изменение
![Page 10: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/10.jpg)
Инструменты управления конфигурацией
• chef
• puppet
• ansible
• saltstack
![Page 11: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/11.jpg)
• сохранение информации о системе - bash скрипты, хранение конфигов в git
• сохранение информации об изменении в системе - инструменты управления конфигурацией
Инструменты управления конфигурацией
![Page 12: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/12.jpg)
Скрипт на bash# packages!echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" > /etc/apt/sources.list.d/pgdg.list!wget -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -!apt-get update!# apt-get upgrade -y!apt-get install -y postgresql-9.3 postgresql-9.3-postgis-2.1 libpq-dev cowsay build-essential!!# PostgreSQL!sed -i -r -e 's/local\s+all\s+postgres\s+peer//' /etc/postgresql/9.3/main/pg_hba.conf!sed -i -r -e 's/local\s+all\s+all\s+peer/local all all trust/' /etc/postgresql/9.3/main/pg_hba.conf!service postgresql restart!createuser -U postgres -s clan-web!createdb -U clan-web -E utf8 -l en_US.utf8 -T template0 clan-web!!# remove Vagrant's Ruby!rm -fr /opt/vagrant_ruby!rm -fr /etc/profile.d/vagrant_ruby.sh!!# install Ruby with ruby-install!wget https://github.com/postmodern/ruby-install/archive/v0.4.1.tar.gz!tar -xzvf v0.4.1.tar.gz!make -C ruby-install-0.4.1 install!rm -fr ruby-install-0.4.1!ruby-install --no-reinstall --md5 53edc33b2f590ecdd9f6a344b9d92d0d ruby 2.1.1!echo "PATH=\$PATH:/opt/rubies/ruby-2.1.1/bin" > /etc/profile.d/ruby.2.1.1.sh!export PATH=$PATH:/opt/rubies/ruby-2.1.1/bin!gem install bundler!!cd /vagrant!bundle!bin/rake db:setup!!bin/rails server -p 3000 -d!!cowsay "Done! Go to http://localhost:8080/"!
![Page 13: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/13.jpg)
Инфраструктура как кодdirectory "#{application_directory}/shared" do! owner user! group user!end!%w( packages ).each do |pkg|! package pkg!end!rvm_ruby "ruby-1.9.3-p286" do! user user!end!!rvm_default_ruby "1.9.3-p286" do! user user!end!!sudo "beta-#{user}" do! user user! commands ["/usr/bin/sv * beta-express42-site_*"]! host "ALL"! nopasswd true!end!!template "#{node[:nginx][:directories][:conf_dir]}/sites-available/nginx-beta-express42-site.conf" do! source "nginx-beta-express42-site.conf.erb"! owner user! group user! variables :application_directory => application_directory! notifies :reload, resources(:service => "nginx")!end!!nginx_site "nginx-beta-express42-site"!!iptables_rule "http"!iptables_rule "ssh"!
![Page 14: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/14.jpg)
Повторяемость
• управление кодом - svn, git
• управление пакетами - bundler, pip, berkshelf, librarian, aptly
• управление ОС - cobbler, vagrant, packer, docker
![Page 15: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/15.jpg)
Модель описания инфраструктуры
application
service (nginx, pgsql,etc)
base (ОС, бэкапы, базовый мониторинг) Ops
Ops
Dev Ops
Инструменты
![Page 16: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/16.jpg)
Пример
runit_service 'settings-svc' do! run_template_name "java_service"! log_template_name "java_service"! default_logger true! options( "app_version" => app_version,! "procname" => procname,! "java_class" => java_class,! "home" => application_directory,! "user" => user,! "reverse_classpath" => true! )! only_if "test -f #{application_directory}/current/settings-svc-#{app_version}.jar"!end!
![Page 17: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/17.jpg)
Еще примерphp_pool "admin" do! address "127.0.0.1"! port "8003"! allow "127.0.0.1"! backlog -1! limits :core => 0, :files => 1024, :requests => 500, :children => 5, :spare_children => { :min => 1, :max => 3 }! php_var 'register_globals' => true,! 'short_open_tag' => true,! 'display_errors' => false,! 'max_execution_time' => '600',! 'error_reporting' => 'E_ALL & ~E_DEPRECATED',! 'date.timezone' => 'UTC',! 'error_log' => '/var/log/svc/php-admin-error.log',! 'memory_limit' => '128M',! 'post_max_size' => '32M',! 'max_input_time' => '60'! action :add!end!
![Page 18: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/18.jpg)
Постоянная поставка ПО
• малыми частями и каждый день
• автоматическое тестирование
• обратная связь
![Page 19: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/19.jpg)
• графики на все
• логирование
• сбор эксепшенов
• визуализация статистики
Изменения через измерения
![Page 20: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/20.jpg)
Требования к мониторингу• автоматизированное добавление проверок через
API
• отображение любой собираемой статистики
• автоматическое добавление/удаление машин в мониторинге
• масштабируемость
• удобство
![Page 21: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/21.jpg)
Мониторинг отстой• zabbix
• circonus
• nagios
• graphite
• sensu
• statsd
• new relic
• прочее
![Page 22: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/22.jpg)
Логирование• логирование по id всего потока данных
• отдельные потоки для ошибок
• надо различать логи приложения и логи системы
system A system B system C
system X
system D
id1 ip:8.8.7.1 id1 login successful
id1 write to sys X failed
id1 write to sda1 failed, write timeout
![Page 23: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/23.jpg)
DevOps, Lean, Agile• для DevOps нужна специальная организация
• Agile и Lean уже решали теже проблемы для разработки, можно применить и в эксплуатации
• Agile помогает разрабатывать быстрее, но какой толк если Эксплуатация тормозит?
• Фокус на переносе неискаженного смысла между системами и людьми
![Page 24: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/24.jpg)
Что если не изменить культуру?
![Page 25: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/25.jpg)
Два подхода
• армия (декларативные инструкции)
• айкидо (развитие и мастерство)
![Page 26: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/26.jpg)
Пример про гребцов
![Page 27: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/27.jpg)
Культура
• применение Agile техник - Scrum, Kanban
• идеи Lean для донесения ценности без потерь
• мотивация команды на решение проблем людей и всего мира, а не на соревнование и доминирование
![Page 28: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/28.jpg)
Культура!
• Честность
• Открытость
• Искренность
• Самосовершенствование
Меньше потерь информации!
![Page 29: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/29.jpg)
Как применять?
• на своем примере
• победить дискомфорт
• управлять своим эго
![Page 30: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/30.jpg)
Что почитать?
![Page 31: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/31.jpg)
• continuousdelivery.com
![Page 32: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/32.jpg)
The Phoenix Project
• http://www.amazon.com/The-Phoenix-Project-Helping-Business/dp/0988262592/
![Page 33: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/33.jpg)
Митап и рассылка
http://www.meetup.com/DevOps-Moscow-in-Russian/
https://groups.google.com/d/forum/devopsru
![Page 34: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/34.jpg)
Вкуснейший дефлопе*
http://devopsdeflope.ru*пожалуй лучший в Москве
![Page 35: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/35.jpg)
Экспресс 42
Надёжные решения для сложной инфраструктуры
http://express42.com
![Page 38: DevOps в Agile среде. Как, почему и когда инструменты помогают](https://reader034.vdocuments.net/reader034/viewer/2022051014/549bcfe9b47959b7318b4585/html5/thumbnails/38.jpg)
Вопросы?