continuous deployment (in russian)

40
Continuous Deployment by Smartling, Inc #SmartlingDevLove

Upload: smartling

Post on 19-Jul-2015

128 views

Category:

Software


6 download

TRANSCRIPT

Page 1: Continuous Deployment  (in Russian)

Continuous Deployment

by Smartling, Inc

#SmartlingDevLove

Page 2: Continuous Deployment  (in Russian)

Andrey Akselrod

Smartling, Founder & CTO

@chelya

Alexey Shesterov

Smartling, Senior Engineer

@AlexShesterov

Page 3: Continuous Deployment  (in Russian)

Что мы делаем?

● 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

Page 4: Continuous Deployment  (in Russian)

Клиенты

Page 5: Continuous Deployment  (in Russian)

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

Page 6: Continuous Deployment  (in Russian)

Техническая Команда

Нью-Йорк: 19

Днепропетровск: 32

Киев: <Набираем команду>

Page 7: Continuous Deployment  (in Russian)

Технологии

Java+

Everything you can imagine

Page 8: Continuous Deployment  (in Russian)

Continuous Deployment == Continuous

Releases

Continuous Deployment != Continuous

Integration

Мухи отдельно, котлеты отдельно

Page 9: Continuous Deployment  (in Russian)
Page 10: Continuous Deployment  (in Russian)

Жизнь До Того Как

Page 11: Continuous Deployment  (in Russian)
Page 12: Continuous Deployment  (in Russian)

● Тонна всего идет в релиз

○ Баги гаранитированны

○ Сложно понять из кучи нового кода где и что не

работает

○ Откатить назад сложно, иногда невозможно

● Баги которые бысто фиксятся ждут неделями,

чтобы быть запущенными в прод

● Давление закончить функциональность любой

ценой до запуска. Качество страдает

Page 13: Continuous Deployment  (in Russian)

● В день релиза никто не работает и все в

ожидании бессонной ночи

Page 14: Continuous Deployment  (in Russian)

● Фидбэк от пользователей приходит поздно

после существенного вложения времени в

девелопмент

● Отсутствие раннего фидбэка увеличивает

нагрузку на планирование и скатывается в

waterfall вместо agile

● Результаты фидбэка ждут следующего релиза -

циклы девелопмента заметно удлиняются

Page 15: Continuous Deployment  (in Russian)

OODA Loop

Page 16: Continuous Deployment  (in Russian)

Переходный период - команда

Page 17: Continuous Deployment  (in Russian)

Сложности переходного периода

● Обязательна поддержка менеджментом

o Переход занимает время и ресурсы

o Полный переход может занять 6-8 месяцев

● Team culture претерпит существенные изменения

o Найти champions и заручится их поддержкой

o Лучше получить поддержку других отделов

компании обьяснив что они получат в конце

Page 18: Continuous Deployment  (in Russian)

Сложности переходного периода

● Хороший повод создать DevOps

● Не нужно ждать идеальной имплементации.

Начните с одного компонента и с одной кнопки.

● Празднуйте каждое небольшое продвижение вперед

Page 19: Continuous Deployment  (in Russian)

Что мы делали

● Команда пассивно-агессивно делать ничего не

хотела

● Перед запуском мы много убеждали, дискутировали

и шантажировали команду.

● Отменили недельные релизы.

● Добавили стикеры на мониторы на каждый деплой.

Смайлики и жопы. Смайлик - успешный деплой,

жопа - деплой проблемный

● Поначалу все боялись деплоить, постепенно

привыкли.

Page 20: Continuous Deployment  (in Russian)

Смайлики и жопы

Page 21: Continuous Deployment  (in Russian)

Правила Continuous Deployment

Page 22: Continuous Deployment  (in Russian)

● 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

● Разработчик ответственный за фичу от начала и до

конца

Page 23: Continuous Deployment  (in Russian)

QA

● Максимальная автоматизацияo unit testing

o integration testing

o front end testing - нужен баланс!

● Ручное тестирование делается

разработчиками, не QA

● QA ответственны за автоматизацию

Page 24: Continuous Deployment  (in Russian)

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)

Page 25: Continuous Deployment  (in Russian)

Bamboo

Page 26: Continuous Deployment  (in Russian)

CDeploy

Page 27: Continuous Deployment  (in Russian)

Slack communication

Page 28: Continuous Deployment  (in Russian)

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

Page 29: Continuous Deployment  (in Russian)

Splunk

Page 30: Continuous Deployment  (in Russian)

Splunk

● Простой и мощный язык запросоввыбор источника, временного диапазона, группирование, ...

● Визуализация

● Запрос отображается в URLбыстрый обмен запросами в чате

● Сохранённые запросы

● Автоматические уведомления (Alerts)Не нужно изобретать колесо для уведомлений, просто throw new MyException(); или log.warn("My message");

Page 31: Continuous Deployment  (in Russian)

● По коду ошибки — прямо в stack trace! Не нужно подробного описания как воспроизвести ошибку.

Нет необходимости вручную искать ошибку в журналах.

● “Log duty” — «Дежурство по журналам»Поиск ошибок, анализ медленных запросов к БД, анализ кода

► Находим проблемы до того,

как их найдут клиенты!

Splunk

Page 32: Continuous Deployment  (in Russian)

New Relic

Page 33: Continuous Deployment  (in Russian)

New Relic

● Метрики для Web-приложений

● Отслеживание всех уровней, вкл. JS

● Метки deployment’ов

● Анализ поведения пользователей

● Рассылка отчётов

Page 34: Continuous Deployment  (in Russian)

Zabbix

Page 35: Continuous Deployment  (in Russian)

Wallboards

Page 36: Continuous Deployment  (in Russian)

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

Page 37: Continuous Deployment  (in Russian)

Результаты

Page 38: Continuous Deployment  (in Russian)

● Наступает привыкание - жизнь без

continuous deployment вызывает

недоумение.

● Результат твоей работы сразу начинает

использоваться юзерами. Это клево.

● Менеджмент доволен - идет постоянная

череда запусков. Пользователи довольны

- постоянно идут новые фичи.

Page 39: Continuous Deployment  (in Russian)

● Быстрый фидбек и итерации приводят к

продукту который гораздо лучше

адаптирован к рынку

● Конкуренты не понимают как вы их стали

с легкостью обходить

● Приходит уважение других отделов

компании

● Практически нулевая текучка людей в

команде

Page 40: Continuous Deployment  (in Russian)

Обсуждение

#SmartlingDevLove