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
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
12. ● Тонна всего идет в релиз
○ Баги гаранитированны
○ Сложно понять из кучи нового кода где и что не
работает
○ Откатить назад сложно, иногда невозможно
● Баги которые бысто фиксятся ждут неделями,
чтобы быть запущенными в прод
● Давление закончить функциональность любой
ценой до запуска. Качество страдает
13. ● В день релиза никто не работает и все в
ожидании бессонной ночи
14. ● Фидбэк от пользователей приходит поздно
после существенного вложения времени в
девелопмент
● Отсутствие раннего фидбэка увеличивает
нагрузку на планирование и скатывается в
waterfall вместо agile
● Результаты фидбэка ждут следующего релиза -
циклы девелопмента заметно удлиняются
17. Сложности переходного периода
● Обязательна поддержка менеджментом
o Переход занимает время и ресурсы
o Полный переход может занять 6-8 месяцев
● Team culture претерпит существенные изменения
o Найти champions и заручится их поддержкой
o Лучше получить поддержку других отделов
компании обьяснив что они получат в конце
18. Сложности переходного периода
● Хороший повод создать DevOps
● Не нужно ждать идеальной имплементации.
Начните с одного компонента и с одной кнопки.
● Празднуйте каждое небольшое продвижение вперед
19. Что мы делали
● Команда пассивно-агессивно делать ничего не
хотела
● Перед запуском мы много убеждали, дискутировали
и шантажировали команду.
● Отменили недельные релизы.
● Добавили стикеры на мониторы на каждый деплой.
Смайлики и жопы. Смайлик - успешный деплой,
жопа - деплой проблемный
● Поначалу все боялись деплоить, постепенно
привыкли.
22. ● 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
● Разработчик ответственный за фичу от начала и до
конца
23. QA
● Максимальная автоматизация
o unit testing
o integration testing
o front end testing - нужен баланс!
● Ручное тестирование делается
разработчиками, не QA
● QA ответственны за автоматизацию
24. 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)
28. 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
30. Splunk
● Простой и мощный язык запросоввыбор
источника, временного диапазона, группирование, ...
● Визуализация
● Запрос отображается в URLбыстрый обмен
запросами в чате
● Сохранённые запросы
● Автоматические уведомления (Alerts)Не
нужно изобретать колесо для уведомлений, просто throw new
MyException(); или log.warn("My message");
31. ● По коду ошибки — прямо в stack trace! Не
нужно подробного описания как воспроизвести ошибку.
Нет необходимости вручную искать ошибку в журналах.
● “Log duty” — «Дежурство по
журналам»Поиск ошибок, анализ медленных запросов к БД,
анализ кода► Находим проблемы до того,
как их найдут клиенты!
Splunk
33. New Relic
● Метрики для Web-приложений
● Отслеживание всех уровней, вкл. JS
● Метки deployment’ов
● Анализ поведения пользователей
● Рассылка отчётов
36. 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
38. ● Наступает привыкание - жизнь без
continuous deployment вызывает
недоумение.
● Результат твоей работы сразу начинает
использоваться юзерами. Это клево.
● Менеджмент доволен - идет постоянная
череда запусков. Пользователи довольны
- постоянно идут новые фичи.
39. ● Быстрый фидбек и итерации приводят к
продукту который гораздо лучше
адаптирован к рынку
● Конкуренты не понимают как вы их стали
с легкостью обходить
● Приходит уважение других отделов
компании
● Практически нулевая текучка людей в
команде
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)