continuous deployment smartling event

40
Continuous Deployment by Smartling, Inc #SmartlingDevL ove

Upload: -

Post on 23-Dec-2014

430 views

Category:

Engineering


5 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Continuous deployment Smartling event

Continuous Deployment by Smartling, Inc

#SmartlingDevLove

Page 2: Continuous deployment Smartling event

Andrey AkselrodSmartling, Founder & CTO @chelya

Alexey Shesterov

Smartling, Senior Engineer

@AlexShesterov

Page 3: Continuous deployment Smartling event

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

● 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 Smartling event

Клиенты

Page 5: Continuous deployment Smartling event

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 Smartling event

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

Нью-Йорк: 19

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

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

Page 7: Continuous deployment Smartling event

Технологии

Java+

Everything you can imagine

Page 8: Continuous deployment Smartling event

Continuous Deployment == Continuous Releases

Continuous Deployment != Continuous Integration

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

Page 9: Continuous deployment Smartling event
Page 10: Continuous deployment Smartling event

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

Page 11: Continuous deployment Smartling event
Page 12: Continuous deployment Smartling event

● Тонна всего идет в релиз○ Баги гаранитированны○ Сложно понять из кучи нового кода где и что не

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

● Баги которые бысто фиксятся ждут неделями, чтобы быть запущенными в прод

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

Page 13: Continuous deployment Smartling event

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

Page 14: Continuous deployment Smartling event

● Фидбэк от пользователей приходит поздно после существенного вложения времени в девелопмент

● Отсутствие раннего фидбэка увеличивает нагрузку на планирование и скатывается в waterfall вместо agile

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

Page 15: Continuous deployment Smartling event

OODA Loop

Page 16: Continuous deployment Smartling event

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

Page 17: Continuous deployment Smartling event

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

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

● Team culture претерпит существенные измененияo Найти champions и заручится их поддержкойo Лучше получить поддержку других отделов

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

Page 18: Continuous deployment Smartling event

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

● Хороший повод создать DevOps● Не нужно ждать идеальной имплементации. Начните

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

Page 19: Continuous deployment Smartling event

Что мы делали

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

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

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

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

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

Page 20: Continuous deployment Smartling event

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

Page 21: Continuous deployment Smartling event

Правила Continuous Deployment

Page 22: Continuous deployment Smartling event

● 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 Smartling event

QA

● Максимальная автоматизацияo unit testingo integration testingo front end testing - нужен баланс!

● Ручное тестирование делается разработчиками, не QA

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

Page 24: Continuous deployment Smartling event

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 Smartling event

Bamboo

Page 26: Continuous deployment Smartling event

CDeploy

Page 27: Continuous deployment Smartling event

Slack communication

Page 28: Continuous deployment Smartling event

Monitoring

● Examples:o RPSo avg resp time & percentileo error rateso CPU Utilizationo transaction rates

● Correlate Deployments with Metrics● Мы используем: Splunk, Zabbix, Graphite,

New Relic, Loggly

Page 29: Continuous deployment Smartling event

Splunk

Page 30: Continuous deployment Smartling event

Splunk

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

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

запросами в чате

● Сохранённые запросы● Автоматические уведомления (Alerts)Не

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

Page 31: Continuous deployment Smartling event

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

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

анализ кода► Находим проблемы до того, как их найдут клиенты!

Splunk

Page 32: Continuous deployment Smartling event

New Relic

Page 33: Continuous deployment Smartling event

New Relic

● Метрики для Web-приложений● Отслеживание всех уровней, вкл. JS● Метки deployment’ов● Анализ поведения пользователей● Рассылка отчётов

Page 34: Continuous deployment Smartling event

Zabbix

Page 35: Continuous deployment Smartling event

Wallboards

Page 36: Continuous deployment Smartling event

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 Smartling event

Результаты

Page 38: Continuous deployment Smartling event

● Наступает привыкание - жизнь без continuous deployment вызывает недоумение.

● Результат твоей работы сразу начинает использоваться юзерами. Это клево.

● Менеджмент доволен - идет постоянная череда запусков. Пользователи довольны - постоянно идут новые фичи.

Page 39: Continuous deployment Smartling event

● Быстрый фидбек и итерации приводят к продукту который гораздо лучше адаптирован к рынку

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

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

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

Page 40: Continuous deployment Smartling event

Обсуждение

#SmartlingDevLove