SlideShare a Scribd company logo
1 of 40
Continuous Deployment
by Smartling, Inc
#SmartlingDevLove
Andrey Akselrod
Smartling, Founder & CTO
@chelya
Alexey Shesterov
Smartling, Senior Engineer
@AlexShesterov
Что мы делаем?
● Cloud-based enterprise software platform for
translation management
● Used for websites and dynamic Web
applications, desktop & mobile apps,
business documents, and all kinds of digital
content
Клиенты
Smartling Operational Scale
3active data centers: US
East, US West, Ireland
400+servers
~200production
deployments a month
2B+page views/month
84K+metrics monitored
17K+triggers for alerts
Техническая Команда
Нью-Йорк: 19
Днепропетровск: 32
Киев: <Набираем команду>
Технологии
Java
+
Everything you can imagine
Continuous Deployment == Continuous
Releases
Continuous Deployment != Continuous
Integration
Мухи отдельно, котлеты отдельно
Жизнь До Того Как
● Тонна всего идет в релиз
○ Баги гаранитированны
○ Сложно понять из кучи нового кода где и что не
работает
○ Откатить назад сложно, иногда невозможно
● Баги которые бысто фиксятся ждут неделями,
чтобы быть запущенными в прод
● Давление закончить функциональность любой
ценой до запуска. Качество страдает
● В день релиза никто не работает и все в
ожидании бессонной ночи
● Фидбэк от пользователей приходит поздно
после существенного вложения времени в
девелопмент
● Отсутствие раннего фидбэка увеличивает
нагрузку на планирование и скатывается в
waterfall вместо agile
● Результаты фидбэка ждут следующего релиза -
циклы девелопмента заметно удлиняются
OODA Loop
Переходный период - команда
Сложности переходного периода
● Обязательна поддержка менеджментом
o Переход занимает время и ресурсы
o Полный переход может занять 6-8 месяцев
● Team culture претерпит существенные изменения
o Найти champions и заручится их поддержкой
o Лучше получить поддержку других отделов
компании обьяснив что они получат в конце
Сложности переходного периода
● Хороший повод создать DevOps
● Не нужно ждать идеальной имплементации.
Начните с одного компонента и с одной кнопки.
● Празднуйте каждое небольшое продвижение вперед
Что мы делали
● Команда пассивно-агессивно делать ничего не
хотела
● Перед запуском мы много убеждали, дискутировали
и шантажировали команду.
● Отменили недельные релизы.
● Добавили стикеры на мониторы на каждый деплой.
Смайлики и жопы. Смайлик - успешный деплой,
жопа - деплой проблемный
● Поначалу все боялись деплоить, постепенно
привыкли.
Смайлики и жопы
Правила Continuous Deployment
● Master (git) or Trunk (svn) is always stable
● Every commit to master (trunk) is deployed to prod asap
● Continuous integration
● Automated testing => where is QA Team?
● Single button deployment
● Monitoring
● Zero downtime software update
● Communication. Every deployment is in chat. Every
deployment should be confirmed. Skype => Slack
● Разработчик ответственный за фичу от начала и до
конца
QA
● Максимальная автоматизация
o unit testing
o integration testing
o front end testing - нужен баланс!
● Ручное тестирование делается
разработчиками, не QA
● QA ответственны за автоматизацию
Continuous Integration
● Bamboo or Jenkins
● Every branch is built and tested on every
commit
● Only green builds could be deployed
● Build time is critical (fighting for < 10min)
Bamboo
CDeploy
Slack communication
Monitoring
● Examples:
o RPS
o avg resp time & percentile
o error rates
o CPU Utilization
o transaction rates
● Correlate Deployments with Metrics
● Мы используем: Splunk, Zabbix, Graphite,
New Relic, Loggly
Splunk
Splunk
● Простой и мощный язык запросов
выбор источника, временного диапазона, группирование, ...
● Визуализация
● Запрос отображается в URL
быстрый обмен запросами в чате
● Сохранённые запросы
● Автоматические уведомления (Alerts)
Не нужно изобретать колесо для уведомлений, просто
throw new MyException(); или log.warn("My message");
● По коду ошибки — прямо в stack trace!
Не нужно подробного описания как воспроизвести ошибку.
Нет необходимости вручную искать ошибку в журналах.
● “Log duty” — «Дежурство по журналам»
Поиск ошибок, анализ медленных запросов к БД, анализ кода
► Находим проблемы до того,
как их найдут клиенты!
Splunk
New Relic
New Relic
● Метрики для Web-приложений
● Отслеживание всех уровней, вкл. JS
● Метки deployment’ов
● Анализ поведения пользователей
● Рассылка отчётов
Zabbix
Wallboards
DB Updates
● Use DB version control system. DBMaintain
● Every change to DB is reviewed by two leads
● There is a single button deploy of DB changes
● Two phase DB updates
o Phase 1: new structures, backward compatible
 New columns always nullable, etc.
o Phase 2: cleanup of unused stuff
Результаты
● Наступает привыкание - жизнь без
continuous deployment вызывает
недоумение.
● Результат твоей работы сразу начинает
использоваться юзерами. Это клево.
● Менеджмент доволен - идет постоянная
череда запусков. Пользователи довольны
- постоянно идут новые фичи.
● Быстрый фидбек и итерации приводят к
продукту который гораздо лучше
адаптирован к рынку
● Конкуренты не понимают как вы их стали
с легкостью обходить
● Приходит уважение других отделов
компании
● Практически нулевая текучка людей в
команде
Обсуждение
#SmartlingDevLove

More Related Content

What's hot

Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.ScrumTrek
 
Выбираем стратегию создания бранчей
Выбираем стратегию создания бранчейВыбираем стратегию создания бранчей
Выбираем стратегию создания бранчейVitebsk DSC
 
Развитие навыков 1с специалиста до 5 го уровня
Развитие навыков 1с специалиста до 5 го уровняРазвитие навыков 1с специалиста до 5 го уровня
Развитие навыков 1с специалиста до 5 го уровняAlexey Lustin
 
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?CEE-SEC(R)
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQubePositive Hack Days
 
Badger — инструмент для мониторинга качества продуктов
Badger — инструмент для мониторинга качества продуктовBadger — инструмент для мониторинга качества продуктов
Badger — инструмент для мониторинга качества продуктовSQALab
 
Мобильный веб: назад в будущее
Мобильный веб: назад в будущееМобильный веб: назад в будущее
Мобильный веб: назад в будущееBadoo Development
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQAFest
 
Автоматическая сборка и развертывание на платформе 1C
Автоматическая сборка и развертывание на платформе 1CАвтоматическая сборка и развертывание на платформе 1C
Автоматическая сборка и развертывание на платформе 1CAlexey Lustin
 
Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)Alexander Babich
 
Xp days 2019 - Why startups need SRE practices
Xp days 2019 - Why startups need SRE practicesXp days 2019 - Why startups need SRE practices
Xp days 2019 - Why startups need SRE practicesAlexey Andreev
 
Free Desktop QA Engineers: implement automation testing
Free Desktop QA Engineers: implement automation testingFree Desktop QA Engineers: implement automation testing
Free Desktop QA Engineers: implement automation testingAlexandr Zinovyev
 
Работа с рисками в Scrum проектах
Работа с рисками в Scrum проектахРабота с рисками в Scrum проектах
Работа с рисками в Scrum проектахDenis Tuchin
 
How we built continuous delivery
How we built continuous deliveryHow we built continuous delivery
How we built continuous deliveryAlik Kurdyukov
 
Management of projects
Management of projectsManagement of projects
Management of projectsMageCloud
 
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous DeliveryJenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous DeliverySQALab
 
Александр Шуров, Олег Николенко «Как устроено автоматическое frontend-тестир...
Александр Шуров, Олег Николенко  «Как устроено автоматическое frontend-тестир...Александр Шуров, Олег Николенко  «Как устроено автоматическое frontend-тестир...
Александр Шуров, Олег Николенко «Как устроено автоматическое frontend-тестир...WrikeTechClub
 
WP как экспериментальная платформа
WP как экспериментальная платформаWP как экспериментальная платформа
WP как экспериментальная платформаSQALab
 

What's hot (20)

Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
 
Выбираем стратегию создания бранчей
Выбираем стратегию создания бранчейВыбираем стратегию создания бранчей
Выбираем стратегию создания бранчей
 
DevOps для 1С
DevOps для 1СDevOps для 1С
DevOps для 1С
 
Развитие навыков 1с специалиста до 5 го уровня
Развитие навыков 1с специалиста до 5 го уровняРазвитие навыков 1с специалиста до 5 го уровня
Развитие навыков 1с специалиста до 5 го уровня
 
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
Jenkins 2. Как сделать мажорный релиз и не развалить сообщество?
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQube
 
Badger — инструмент для мониторинга качества продуктов
Badger — инструмент для мониторинга качества продуктовBadger — инструмент для мониторинга качества продуктов
Badger — инструмент для мониторинга качества продуктов
 
Мобильный веб: назад в будущее
Мобильный веб: назад в будущееМобильный веб: назад в будущее
Мобильный веб: назад в будущее
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
 
Автоматическая сборка и развертывание на платформе 1C
Автоматическая сборка и развертывание на платформе 1CАвтоматическая сборка и развертывание на платформе 1C
Автоматическая сборка и развертывание на платформе 1C
 
Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)
 
Xp days 2019 - Why startups need SRE practices
Xp days 2019 - Why startups need SRE practicesXp days 2019 - Why startups need SRE practices
Xp days 2019 - Why startups need SRE practices
 
Free Desktop QA Engineers: implement automation testing
Free Desktop QA Engineers: implement automation testingFree Desktop QA Engineers: implement automation testing
Free Desktop QA Engineers: implement automation testing
 
Работа с рисками в Scrum проектах
Работа с рисками в Scrum проектахРабота с рисками в Scrum проектах
Работа с рисками в Scrum проектах
 
How we built continuous delivery
How we built continuous deliveryHow we built continuous delivery
How we built continuous delivery
 
Agile
AgileAgile
Agile
 
Management of projects
Management of projectsManagement of projects
Management of projects
 
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous DeliveryJenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
 
Александр Шуров, Олег Николенко «Как устроено автоматическое frontend-тестир...
Александр Шуров, Олег Николенко  «Как устроено автоматическое frontend-тестир...Александр Шуров, Олег Николенко  «Как устроено автоматическое frontend-тестир...
Александр Шуров, Олег Николенко «Как устроено автоматическое frontend-тестир...
 
WP как экспериментальная платформа
WP как экспериментальная платформаWP как экспериментальная платформа
WP как экспериментальная платформа
 

Viewers also liked

Пётр Зайцев, Percona
Пётр Зайцев, PerconaПётр Зайцев, Percona
Пётр Зайцев, PerconaOntico
 
Zabbix Rootconf2009
Zabbix Rootconf2009Zabbix Rootconf2009
Zabbix Rootconf2009Liudmila Li
 
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft AzureJelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft AzureDmitry Lazarenko
 
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow Vadim Nesterov
 
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)Badoo Development
 
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)Zabbix
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)Ontico
 

Viewers also liked (9)

Пётр Зайцев, Percona
Пётр Зайцев, PerconaПётр Зайцев, Percona
Пётр Зайцев, Percona
 
Zabbix Rootconf2009
Zabbix Rootconf2009Zabbix Rootconf2009
Zabbix Rootconf2009
 
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft AzureJelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
 
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
 
переезд мониторинга
переезд мониторингапереезд мониторинга
переезд мониторинга
 
Grafana zabbix
Grafana zabbixGrafana zabbix
Grafana zabbix
 
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
 
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
 

Similar to Continuous Deployment (in Russian)

Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Баннерокрутилка на Erlang
Баннерокрутилка на ErlangБаннерокрутилка на Erlang
Баннерокрутилка на ErlangArtyom Gavrichenkov
 
Meet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy SamilyakMeet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy SamilyakAmasty
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
 
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...Sergey Ponomarev
 
Continious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileContinious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileKairat Yussupov
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Google Update Crash Test или как быстро вернуть доход сайту
Google Update Crash Test или как быстро вернуть доход сайтуGoogle Update Crash Test или как быстро вернуть доход сайту
Google Update Crash Test или как быстро вернуть доход сайтуNetpeak
 
Теория ограничений в Agile команде
Теория ограничений в Agile командеТеория ограничений в Agile команде
Теория ограничений в Agile командеyiiconf
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspbGonchik Tsymzhitov
 
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Fwdays
 
DevOps в реальном времени
DevOps в реальном времениDevOps в реальном времени
DevOps в реальном времениAndriy Samilyak
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON
 
Анти шаблоны непрерывной интеграции
Анти шаблоны непрерывной интеграцииАнти шаблоны непрерывной интеграции
Анти шаблоны непрерывной интеграцииSQALab
 
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 ForgeYehor Herasymchuk
 
Agile: разработка + тестирование
Agile: разработка + тестированиеAgile: разработка + тестирование
Agile: разработка + тестированиеAlexander Byndyu
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеSQALab
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...DrupalCamp MSK
 

Similar to Continuous Deployment (in Russian) (20)

Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Баннерокрутилка на Erlang
Баннерокрутилка на ErlangБаннерокрутилка на Erlang
Баннерокрутилка на Erlang
 
Meet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy SamilyakMeet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy Samilyak
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
 
Continious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileContinious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-Agile
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Google Update Crash Test или как быстро вернуть доход сайту
Google Update Crash Test или как быстро вернуть доход сайтуGoogle Update Crash Test или как быстро вернуть доход сайту
Google Update Crash Test или как быстро вернуть доход сайту
 
Теория ограничений в Agile команде
Теория ограничений в Agile командеТеория ограничений в Agile команде
Теория ограничений в Agile команде
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspb
 
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
 
Team workflow
Team workflowTeam workflow
Team workflow
 
DevOps в реальном времени
DevOps в реальном времениDevOps в реальном времени
DevOps в реальном времени
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
 
Анти шаблоны непрерывной интеграции
Анти шаблоны непрерывной интеграцииАнти шаблоны непрерывной интеграции
Анти шаблоны непрерывной интеграции
 
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
 
Agile: разработка + тестирование
Agile: разработка + тестированиеAgile: разработка + тестирование
Agile: разработка + тестирование
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проекте
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
 

More from Smartling

Smartling+Coursera
Smartling+CourseraSmartling+Coursera
Smartling+CourseraSmartling
 
Smartling+OpenTable
Smartling+OpenTableSmartling+OpenTable
Smartling+OpenTableSmartling
 
Smartling+Flipagram
Smartling+FlipagramSmartling+Flipagram
Smartling+FlipagramSmartling
 
Smartling+Squarespace
Smartling+Squarespace Smartling+Squarespace
Smartling+Squarespace Smartling
 
A data driven approach to translation outcomes
A data driven approach to translation outcomesA data driven approach to translation outcomes
A data driven approach to translation outcomesSmartling
 
What 2016's Most-Downloaded Travel Apps Have in Common and How Yours Can Be L...
What 2016's Most-Downloaded Travel Apps Have in Common and How Yours Can Be L...What 2016's Most-Downloaded Travel Apps Have in Common and How Yours Can Be L...
What 2016's Most-Downloaded Travel Apps Have in Common and How Yours Can Be L...Smartling
 
Localization at Canary
Localization at CanaryLocalization at Canary
Localization at CanarySmartling
 
Three Considerations Before Globalizing Your Website
Three Considerations Before Globalizing Your WebsiteThree Considerations Before Globalizing Your Website
Three Considerations Before Globalizing Your WebsiteSmartling
 
Starwood Translation ROI Model
Starwood Translation ROI ModelStarwood Translation ROI Model
Starwood Translation ROI ModelSmartling
 
Global Travel in the Age of Uber and Airbnb
Global Travel in the Age of Uber and AirbnbGlobal Travel in the Age of Uber and Airbnb
Global Travel in the Age of Uber and AirbnbSmartling
 
Translation Technology ROI
Translation Technology ROITranslation Technology ROI
Translation Technology ROISmartling
 
50 shades of translation
50 shades of translation50 shades of translation
50 shades of translationSmartling
 
MUST-HAVE STATS FOR GLOBAL MOBILE MARKETING
MUST-HAVE STATS FOR GLOBAL MOBILE MARKETINGMUST-HAVE STATS FOR GLOBAL MOBILE MARKETING
MUST-HAVE STATS FOR GLOBAL MOBILE MARKETINGSmartling
 
French in Canada and French in France. 50 Differences That Might Surprise You
French in Canada and French in France. 50 Differences That Might Surprise YouFrench in Canada and French in France. 50 Differences That Might Surprise You
French in Canada and French in France. 50 Differences That Might Surprise YouSmartling
 
Continuous Deployment
Continuous DeploymentContinuous Deployment
Continuous DeploymentSmartling
 
The Evolution of Content
The Evolution of ContentThe Evolution of Content
The Evolution of ContentSmartling
 
The Power of Language
The Power of LanguageThe Power of Language
The Power of LanguageSmartling
 
Internationalizing your website? There's an app for that!
Internationalizing your website? There's an app for that!Internationalizing your website? There's an app for that!
Internationalizing your website? There's an app for that!Smartling
 
Getting Started with Gaming Localization
Getting Started with Gaming LocalizationGetting Started with Gaming Localization
Getting Started with Gaming LocalizationSmartling
 
The 50 Most Beautiful Words in the Irish Language
The 50 Most Beautiful Words in the Irish LanguageThe 50 Most Beautiful Words in the Irish Language
The 50 Most Beautiful Words in the Irish LanguageSmartling
 

More from Smartling (20)

Smartling+Coursera
Smartling+CourseraSmartling+Coursera
Smartling+Coursera
 
Smartling+OpenTable
Smartling+OpenTableSmartling+OpenTable
Smartling+OpenTable
 
Smartling+Flipagram
Smartling+FlipagramSmartling+Flipagram
Smartling+Flipagram
 
Smartling+Squarespace
Smartling+Squarespace Smartling+Squarespace
Smartling+Squarespace
 
A data driven approach to translation outcomes
A data driven approach to translation outcomesA data driven approach to translation outcomes
A data driven approach to translation outcomes
 
What 2016's Most-Downloaded Travel Apps Have in Common and How Yours Can Be L...
What 2016's Most-Downloaded Travel Apps Have in Common and How Yours Can Be L...What 2016's Most-Downloaded Travel Apps Have in Common and How Yours Can Be L...
What 2016's Most-Downloaded Travel Apps Have in Common and How Yours Can Be L...
 
Localization at Canary
Localization at CanaryLocalization at Canary
Localization at Canary
 
Three Considerations Before Globalizing Your Website
Three Considerations Before Globalizing Your WebsiteThree Considerations Before Globalizing Your Website
Three Considerations Before Globalizing Your Website
 
Starwood Translation ROI Model
Starwood Translation ROI ModelStarwood Translation ROI Model
Starwood Translation ROI Model
 
Global Travel in the Age of Uber and Airbnb
Global Travel in the Age of Uber and AirbnbGlobal Travel in the Age of Uber and Airbnb
Global Travel in the Age of Uber and Airbnb
 
Translation Technology ROI
Translation Technology ROITranslation Technology ROI
Translation Technology ROI
 
50 shades of translation
50 shades of translation50 shades of translation
50 shades of translation
 
MUST-HAVE STATS FOR GLOBAL MOBILE MARKETING
MUST-HAVE STATS FOR GLOBAL MOBILE MARKETINGMUST-HAVE STATS FOR GLOBAL MOBILE MARKETING
MUST-HAVE STATS FOR GLOBAL MOBILE MARKETING
 
French in Canada and French in France. 50 Differences That Might Surprise You
French in Canada and French in France. 50 Differences That Might Surprise YouFrench in Canada and French in France. 50 Differences That Might Surprise You
French in Canada and French in France. 50 Differences That Might Surprise You
 
Continuous Deployment
Continuous DeploymentContinuous Deployment
Continuous Deployment
 
The Evolution of Content
The Evolution of ContentThe Evolution of Content
The Evolution of Content
 
The Power of Language
The Power of LanguageThe Power of Language
The Power of Language
 
Internationalizing your website? There's an app for that!
Internationalizing your website? There's an app for that!Internationalizing your website? There's an app for that!
Internationalizing your website? There's an app for that!
 
Getting Started with Gaming Localization
Getting Started with Gaming LocalizationGetting Started with Gaming Localization
Getting Started with Gaming Localization
 
The 50 Most Beautiful Words in the Irish Language
The 50 Most Beautiful Words in the Irish LanguageThe 50 Most Beautiful Words in the Irish Language
The 50 Most Beautiful Words in the Irish Language
 

Continuous Deployment (in Russian)

  • 1. Continuous Deployment by Smartling, Inc #SmartlingDevLove
  • 2. Andrey Akselrod Smartling, Founder & CTO @chelya Alexey Shesterov Smartling, Senior Engineer @AlexShesterov
  • 3. Что мы делаем? ● Cloud-based enterprise software platform for translation management ● Used for websites and dynamic Web applications, desktop & mobile apps, business documents, and all kinds of digital content
  • 5. Smartling Operational Scale 3active data centers: US East, US West, Ireland 400+servers ~200production deployments a month 2B+page views/month 84K+metrics monitored 17K+triggers for alerts
  • 8. Continuous Deployment == Continuous Releases Continuous Deployment != Continuous Integration Мухи отдельно, котлеты отдельно
  • 9.
  • 11.
  • 12. ● Тонна всего идет в релиз ○ Баги гаранитированны ○ Сложно понять из кучи нового кода где и что не работает ○ Откатить назад сложно, иногда невозможно ● Баги которые бысто фиксятся ждут неделями, чтобы быть запущенными в прод ● Давление закончить функциональность любой ценой до запуска. Качество страдает
  • 13. ● В день релиза никто не работает и все в ожидании бессонной ночи
  • 14. ● Фидбэк от пользователей приходит поздно после существенного вложения времени в девелопмент ● Отсутствие раннего фидбэка увеличивает нагрузку на планирование и скатывается в waterfall вместо agile ● Результаты фидбэка ждут следующего релиза - циклы девелопмента заметно удлиняются
  • 17. Сложности переходного периода ● Обязательна поддержка менеджментом o Переход занимает время и ресурсы o Полный переход может занять 6-8 месяцев ● Team culture претерпит существенные изменения o Найти champions и заручится их поддержкой o Лучше получить поддержку других отделов компании обьяснив что они получат в конце
  • 18. Сложности переходного периода ● Хороший повод создать DevOps ● Не нужно ждать идеальной имплементации. Начните с одного компонента и с одной кнопки. ● Празднуйте каждое небольшое продвижение вперед
  • 19. Что мы делали ● Команда пассивно-агессивно делать ничего не хотела ● Перед запуском мы много убеждали, дискутировали и шантажировали команду. ● Отменили недельные релизы. ● Добавили стикеры на мониторы на каждый деплой. Смайлики и жопы. Смайлик - успешный деплой, жопа - деплой проблемный ● Поначалу все боялись деплоить, постепенно привыкли.
  • 22. ● Master (git) or Trunk (svn) is always stable ● Every commit to master (trunk) is deployed to prod asap ● Continuous integration ● Automated testing => where is QA Team? ● Single button deployment ● Monitoring ● Zero downtime software update ● Communication. Every deployment is in chat. Every deployment should be confirmed. Skype => Slack ● Разработчик ответственный за фичу от начала и до конца
  • 23. QA ● Максимальная автоматизация o unit testing o integration testing o front end testing - нужен баланс! ● Ручное тестирование делается разработчиками, не QA ● QA ответственны за автоматизацию
  • 24. Continuous Integration ● Bamboo or Jenkins ● Every branch is built and tested on every commit ● Only green builds could be deployed ● Build time is critical (fighting for < 10min)
  • 28. Monitoring ● Examples: o RPS o avg resp time & percentile o error rates o CPU Utilization o transaction rates ● Correlate Deployments with Metrics ● Мы используем: Splunk, Zabbix, Graphite, New Relic, Loggly
  • 30. Splunk ● Простой и мощный язык запросов выбор источника, временного диапазона, группирование, ... ● Визуализация ● Запрос отображается в URL быстрый обмен запросами в чате ● Сохранённые запросы ● Автоматические уведомления (Alerts) Не нужно изобретать колесо для уведомлений, просто throw new MyException(); или log.warn("My message");
  • 31. ● По коду ошибки — прямо в stack trace! Не нужно подробного описания как воспроизвести ошибку. Нет необходимости вручную искать ошибку в журналах. ● “Log duty” — «Дежурство по журналам» Поиск ошибок, анализ медленных запросов к БД, анализ кода ► Находим проблемы до того, как их найдут клиенты! Splunk
  • 33. New Relic ● Метрики для Web-приложений ● Отслеживание всех уровней, вкл. JS ● Метки deployment’ов ● Анализ поведения пользователей ● Рассылка отчётов
  • 36. DB Updates ● Use DB version control system. DBMaintain ● Every change to DB is reviewed by two leads ● There is a single button deploy of DB changes ● Two phase DB updates o Phase 1: new structures, backward compatible  New columns always nullable, etc. o Phase 2: cleanup of unused stuff
  • 38. ● Наступает привыкание - жизнь без continuous deployment вызывает недоумение. ● Результат твоей работы сразу начинает использоваться юзерами. Это клево. ● Менеджмент доволен - идет постоянная череда запусков. Пользователи довольны - постоянно идут новые фичи.
  • 39. ● Быстрый фидбек и итерации приводят к продукту который гораздо лучше адаптирован к рынку ● Конкуренты не понимают как вы их стали с легкостью обходить ● Приходит уважение других отделов компании ● Практически нулевая текучка людей в команде

Editor's Notes

  1. Mogu tupit’ - obychno govoryu na anglijskom. Pomogajte.
  2. Pro vs MT - V oanovnom rabotaem s zhivymi pervodchikami - ochen’ malo perevodov delaetsya cherez machine translattion Workflow
  3. detali - foursquare - website and mobile apps - pereklyuchite na russkij Tesla - Elon Mask - perevodim sites na raznye yazyki
  4. Nabiraem komandu djavistov - esli interesno - vse voprosy k Vike, 3 cheloveka uzhe nanyali.
  5. А что делаете вы?
  6. Vizualizaciya
  7. USAF полковник John Boyd, истребитель F-16. ne letaet tak vysoko i tak daleko kak F15, no v 2 raza legche i manevrennej dazhe na nizkih skorostyax Vazhnee produkt vypustit’ bystree, chem ego dolgo vylivat’.
  8. Team culture = Processes, Priorities, Values
  9. Team culture = Processes, Priorities, Values devOps = development toolset support
  10. Жопа - печальный смайлик Шантаж - кто не хочит делать конт деплой - отвечает за следующий релиз Сейчас бай-ин будет легче - continuous deployment is a trend Pyat’ stadii prinyatiya neizbezhnogo: otricanie, gnev, torg, depressiya, prinyatie
  11. Is someone is commited but did not deploy -> skandal - nikto ne xochet otvechat’ za chej-to code feature branches vs switches in the code
  12. no sending the ball over the wall testirovanie parserov - sravnenie versij po rezul’tatam parsinga i skorosti
  13. U nas Bamboo kazhdyj raz pri sozdanii brancha avtomaticheski podhvatyvaet i build. Pro+Con Bamboo (branches+costs)
  14. screenshot bamboo. 18 min average
  15. 3 steps: component, environment, build -> push a button, DOD. Environment: ENV = kompaktno 4 vitrualnih servera (soa: mysql, mongo, gdn, tms). Po nazhatiju knopki a developer can launch his own env.
  16. 1. communication, synchronization. 2. history of deploys 3. before: skype, now: slack automatic. 4. 1-deploy, 2-check, 3-confirm. ocheredi :)
  17. MySQL stops being responsive at 60% CPU utilization New Relic - prikol’nyj (around performance) - zhivaya profiling data. Automatic call stacks, shows query performance (java code vs db time)
  18. New relic: - PROD-WA: Average response time from browser - PROD-WA: Average response time from backend - PROD-WA: DB operations - PROD-WA: Throughput by hosts - PROD-WA: Database throuhput - PROD-WA: Database response time - PROD-API: Top 5 web transactions - PROD-API: Throughput Zabbix: - Slave DB latency - DB recently changed parts count - Primary DB CPU load - Slave DB CPU load - DBWriter - Total msg. rate - RabbitMQ Pinch Queues - Rabbit MT traffic per segment - Rabbit parts traffic per segment - wa4 - CPU Utilization - Dashboard response time Bamboo: - Status of all builds Custom: - Duty developer (integration with google docs + Jira)
  19. Komanda ne ponimaet kak mozhno rabotat’ bez CD na dannyj moment - tak zhe kak naprimer nevozmozhno rabotat’ bez version control Story about our WWW deployment. -- Don't afraid of problems, but still - evaluate risks