Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Continuous deployment Smartling event

1,682 views

Published on

Published in: Engineering
  • Be the first to comment

Continuous deployment Smartling event

  1. 1. Continuous Deployment by Smartling, Inc #SmartlingDevLove
  2. 2. Andrey Akselrod Smartling, Founder & CTO @chelya Alexey Shesterov Smartling, Senior Engineer @AlexShesterov
  3. 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
  4. 4. Клиенты
  5. 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
  6. 6. Техническая Команда Нью-Йорк: 19 Днепропетровск: 32 Киев: <Набираем команду>
  7. 7. Технологии Java + Everything you can imagine
  8. 8. Continuous Deployment == Continuous Releases Continuous Deployment != Continuous Integration Мухи отдельно, котлеты отдельно
  9. 9. Жизнь До Того Как
  10. 10. ● Тонна всего идет в релиз ○ Баги гаранитированны ○ Сложно понять из кучи нового кода где и что не работает ○ Откатить назад сложно, иногда невозможно ● Баги которые бысто фиксятся ждут неделями, чтобы быть запущенными в прод ● Давление закончить функциональность любой ценой до запуска. Качество страдает
  11. 11. ● В день релиза никто не работает и все в ожидании бессонной ночи
  12. 12. ● Фидбэк от пользователей приходит поздно после существенного вложения времени в девелопмент ● Отсутствие раннего фидбэка увеличивает нагрузку на планирование и скатывается в waterfall вместо agile ● Результаты фидбэка ждут следующего релиза - циклы девелопмента заметно удлиняются
  13. 13. OODA Loop
  14. 14. Переходный период - команда
  15. 15. Сложности переходного периода ● Обязательна поддержка менеджментом o Переход занимает время и ресурсы o Полный переход может занять 6-8 месяцев ● Team culture претерпит существенные изменения o Найти champions и заручится их поддержкой o Лучше получить поддержку других отделов компании обьяснив что они получат в конце
  16. 16. Сложности переходного периода ● Хороший повод создать DevOps ● Не нужно ждать идеальной имплементации. Начните с одного компонента и с одной кнопки. ● Празднуйте каждое небольшое продвижение вперед
  17. 17. Что мы делали ● Команда пассивно-агессивно делать ничего не хотела ● Перед запуском мы много убеждали, дискутировали и шантажировали команду. ● Отменили недельные релизы. ● Добавили стикеры на мониторы на каждый деплой. Смайлики и жопы. Смайлик - успешный деплой, жопа - деплой проблемный ● Поначалу все боялись деплоить, постепенно привыкли.
  18. 18. Смайлики и жопы
  19. 19. Правила Continuous Deployment
  20. 20. ● 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 ● Разработчик ответственный за фичу от начала и до конца
  21. 21. QA ● Максимальная автоматизация o unit testing o integration testing o front end testing - нужен баланс! ● Ручное тестирование делается разработчиками, не QA ● QA ответственны за автоматизацию
  22. 22. 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)
  23. 23. Bamboo
  24. 24. CDeploy
  25. 25. Slack communication
  26. 26. 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
  27. 27. Splunk
  28. 28. Splunk ● Простой и мощный язык запросоввыбор источника, временного диапазона, группирование, ... ● Визуализация ● Запрос отображается в URLбыстрый обмен запросами в чате ● Сохранённые запросы ● Автоматические уведомления (Alerts)Не нужно изобретать колесо для уведомлений, просто throw new MyException(); или log.warn("My message");
  29. 29. ● По коду ошибки — прямо в stack trace! Не нужно подробного описания как воспроизвести ошибку. Нет необходимости вручную искать ошибку в журналах. ● “Log duty” — «Дежурство по журналам»Поиск ошибок, анализ медленных запросов к БД, анализ кода► Находим проблемы до того, как их найдут клиенты! Splunk
  30. 30. New Relic
  31. 31. New Relic ● Метрики для Web-приложений ● Отслеживание всех уровней, вкл. JS ● Метки deployment’ов ● Анализ поведения пользователей ● Рассылка отчётов
  32. 32. Zabbix
  33. 33. Wallboards
  34. 34. 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
  35. 35. Результаты
  36. 36. ● Наступает привыкание - жизнь без continuous deployment вызывает недоумение. ● Результат твоей работы сразу начинает использоваться юзерами. Это клево. ● Менеджмент доволен - идет постоянная череда запусков. Пользователи довольны - постоянно идут новые фичи.
  37. 37. ● Быстрый фидбек и итерации приводят к продукту который гораздо лучше адаптирован к рынку ● Конкуренты не понимают как вы их стали с легкостью обходить ● Приходит уважение других отделов компании ● Практически нулевая текучка людей в команде
  38. 38. Обсуждение #SmartlingDevLove

×