continuous deployment (in russian)

Post on 19-Jul-2015

128 Views

Category:

Software

6 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related