DevOps в Agile среде. Как, почему и когда инструменты...

38
DevOps в Agile среде. Как, почему и когда инструменты помогают. Титов Александр, Экспресс 42

description

Модное слово DevOps уже успело стать заезженным базвордом. Сотни компаний ищут DevOps инженеров, потому что искать системного администратора уже не модно. Я расскажу вам про свое понимание DevOps, как технические инструменты помогают делать Agile еще более гибким. Мы разберем основные принципы DevOps через призму донесения смысла без потерь: - Особая культура - Автоматизация - Изменения через измерения - Распространение знаний и практик Я поделюсь своим 5ти летним опытом в обеспечении повторяемости, мониторинге, логировании с примерами из реальной жизни. Александр Титов - управляющий партнер в компании "Экспресс 42", мы внедряем DevOps практики и инструменты, помогаем эксплуатировать интернет-проекты. В 2009, 2010 годах был техническим директором первого облачного хостинга в России Скалакси. В 2010 - 2012 прошел увлекательный путь поглощений вместе с компанией Qik - путь из эксплуатации быстрорастущего стартапа к эксплуатации в крупной международной компании Microsoft.

Transcript of DevOps в Agile среде. Как, почему и когда инструменты...

Page 1: DevOps в Agile среде. Как, почему и когда инструменты помогают.

DevOps в Agile среде. Как, почему и когда инструменты

помогают.

Титов Александр, Экспресс 42

Page 2: DevOps в Agile среде. Как, почему и когда инструменты помогают.

О себе

Экспресс 42

Page 3: DevOps в Agile среде. Как, почему и когда инструменты помогают.

DevOps?

Page 4: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Проблемы?

• собирать информационные системы вручную стало дорого

• разработчики, тестировщики и администраторы работают как “лебедь, рак и щука”

Page 5: DevOps в Agile среде. Как, почему и когда инструменты помогают.

vs

До и после DevOps

Page 6: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Что делать?

• инструменты для создания конвейра непрерывной поставки программного обеспечения

• новые отношения между системными администраторами, тестировщиками и разработчиками

Page 7: DevOps в Agile среде. Как, почему и когда инструменты помогают.

DevOps CAMS

• автоматизация

• изменения через измерения

• культура

• распространение знаний

Page 8: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Автоматизация и сохранение информации

• Lean

• инструменты для сохранения информации

• критерий эффективного использования - больше порядка в системе

Page 9: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Как инструменты помогают

Dev Test Prod

Контекст Контекст’ Контекст’’

Одинаковые образы ОС (cobbler)

Контекст изменения в Chef

Изменение

Page 10: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Инструменты управления конфигурацией

• chef

• puppet

• ansible

• saltstack

Page 11: DevOps в Agile среде. Как, почему и когда инструменты помогают.

• сохранение информации о системе - bash скрипты, хранение конфигов в git

• сохранение информации об изменении в системе - инструменты управления конфигурацией

Инструменты управления конфигурацией

Page 12: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Скрипт на 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 среде. Как, почему и когда инструменты помогают.

Инфраструктура как код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 среде. Как, почему и когда инструменты помогают.

Повторяемость

• управление кодом - svn, git

• управление пакетами - bundler, pip, berkshelf, librarian, aptly

• управление ОС - cobbler, vagrant, packer, docker

Page 15: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Модель описания инфраструктуры

application

service (nginx, pgsql,etc)

base (ОС, бэкапы, базовый мониторинг) Ops

Ops

Dev Ops

Инструменты

Page 16: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Пример

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 среде. Как, почему и когда инструменты помогают.

Еще пример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 среде. Как, почему и когда инструменты помогают.

Постоянная поставка ПО

• малыми частями и каждый день

• автоматическое тестирование

• обратная связь

Page 19: DevOps в Agile среде. Как, почему и когда инструменты помогают.

• графики на все

• логирование

• сбор эксепшенов

• визуализация статистики

Изменения через измерения

Page 20: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Требования к мониторингу• автоматизированное добавление проверок через

API

• отображение любой собираемой статистики

• автоматическое добавление/удаление машин в мониторинге

• масштабируемость

• удобство

Page 21: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Мониторинг отстой• zabbix

• circonus

• nagios

• graphite

• sensu

• statsd

• new relic

• прочее

Page 22: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Логирование• логирование по 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 среде. Как, почему и когда инструменты помогают.

DevOps, Lean, Agile• для DevOps нужна специальная организация

• Agile и Lean уже решали теже проблемы для разработки, можно применить и в эксплуатации

• Agile помогает разрабатывать быстрее, но какой толк если Эксплуатация тормозит?

• Фокус на переносе неискаженного смысла между системами и людьми

Page 24: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Что если не изменить культуру?

Page 25: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Два подхода

• армия (декларативные инструкции)

• айкидо (развитие и мастерство)

Page 26: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Пример про гребцов

Page 27: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Культура

• применение Agile техник - Scrum, Kanban

• идеи Lean для донесения ценности без потерь

• мотивация команды на решение проблем людей и всего мира, а не на соревнование и доминирование

Page 28: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Культура!

• Честность

• Открытость

• Искренность

• Самосовершенствование

Меньше потерь информации!

Page 29: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Как применять?

• на своем примере

• победить дискомфорт

• управлять своим эго

Page 30: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Что почитать?

Page 31: DevOps в Agile среде. Как, почему и когда инструменты помогают.

• continuousdelivery.com

Page 32: DevOps в Agile среде. Как, почему и когда инструменты помогают.

The Phoenix Project

• http://www.amazon.com/The-Phoenix-Project-Helping-Business/dp/0988262592/

Page 33: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Митап и рассылка

http://www.meetup.com/DevOps-Moscow-in-Russian/

https://groups.google.com/d/forum/devopsru

Page 34: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Вкуснейший дефлопе*

http://devopsdeflope.ru*пожалуй лучший в Москве

Page 35: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Экспресс 42

Надёжные решения для сложной инфраструктуры

http://express42.com

Page 36: DevOps в Agile среде. Как, почему и когда инструменты помогают.

http://brainwashing.pro/devops

Промой мозги!

Page 37: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Контакты

twitter: @osminog

email: [email protected]

Page 38: DevOps в Agile среде. Как, почему и когда инструменты помогают.

Вопросы?