Continuous deployment Smartling event

1,485 views

Published on

Published in: Engineering
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,485
On SlideShare
0
From Embeds
0
Number of Embeds
78
Actions
Shares
0
Downloads
9
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide
  • Mogu tupit’ - obychno govoryu na anglijskom. Pomogajte.
  • V oanovnom rabotaem s zhivymi pervodchikami - ochen’ malo perevodov delaetsya cherez machine translattion
  • detali - foursquare - website and mobile apps - pereklyuchite na russkij
    Tesla - Elon Mask - perevodim sites na raznye yazyki
  • Nabiraem komandu djavistov - esli interesno - vse voprosy k Vike, 2 cheloveka uzhe nanyali.
  • А что делаете вы?
    Eto kak v anekdote pro professora po seksologii (eto budet zavtra, zavtra)
  • 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’.
  • Team culture = Processes, Priorities, Values

  • Team culture = Processes, Priorities, Values
    devOps = development toolset support
  • Жопа - печальный смайлик
    Шантаж - кто не хочит делать конт деплой - отвечает за следующий релиз
    Сейчас бай-ин будет легче - continuous deployment is a trend
    Pyat’ stadii prinyatiya neizbezhnogo: otricanie, gnev, torg, depressiya, prinyatie
  • Is someone is commited but did not deploy -> skandal - nikto ne xochet otvechat’ za chej-to code
    feature branches vs switches in the code
  • no sending the ball over the wall
    testirovanie parserov - sravnenie versij po rezul’tatam parsinga i skorosti
  • U nas Bamboo kazhdyj raz pri sozdanii brancha avtomaticheski podhvatyvaet i build. Pro+Con Bamboo (branches+costs)
  • screenshot bamboo. 18 min average
  • 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.
  • 1. communication, synchronization. 2. history of deploys 3. before: skype, now: slack automatic. 4. 1-deploy, 2-check, 3-confirm.
  • 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)
  • 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

    ×