Upload
others
View
12
Download
0
Embed Size (px)
Citation preview
Полтора года со своим Heroku-like PaaS
Дехтярев Евгений
300+
городов
40+ млн.
пользователей
3600
сотрудников
О чём поговорим
● Кратко: Почему мы захотели изменений?
○ http://rootconf.ru/2016/abstracts/2053.html
● Чего мы достигли за полтора года использования.
● Позитив и негатив от выбранного решения.
● Итоги.
Проблемы
✘ Зоопарк виртуальных машин
✘ Разработчики пишут деплой
✘ Staging != Production
✘ Деплой > 1h
Варианты
Tar/Deb Не решает проблемы
Варианты
Tar/Deb
LXC/OpenVZ
Не решает проблемы
Лучше, но не взлетело
Варианты
Tar/Deb
LXC/OpenVZ
Docker
Не решает проблемы
Лучше, но не взлетело
То, что надо!
Кандидаты
Dokku Для local PC
Кандидаты
Dokku
Rancher
Для local PC
Глючный и Java
Кандидаты
Dokku
Rancher
Flynn
Для local PC
Глючный и Java
Медленная разработка
Кандидаты
Dokku
Rancher
Flynn
DEIS
Для local PC
Глючный и Java
Медленная разработка
Лёгкий, большое сообщество
✘ Зоопарк виртуальных машин
✘ Разработчики пишут деплой
✘ Staging != Production
✘ Деплой > 1h
✓ Унифицированная инфраструктура(CoreOS, Docker)
✘ Разработчики пишут деплой
✘ Staging != Production
✘ Деплой > 1h
✓ Унифицированная инфраструктура(CoreOS, Docker)
✓ Разработчики пишут код, тесты, CI/CD
✘ Staging != Production
✘ Деплой > 1h
✓ Унифицированная инфраструктура(CoreOS, Docker)
✓ Разработчики пишут код, тесты, CI/CD
✓ Staging == Production
✘ Деплой > 1h
✓ Унифицированная инфраструктура(CoreOS, Docker)
✓ Разработчики пишут код, тесты, CI/CD
✓ Staging == Production
✓ Деплой < 10m
Что у нас есть
4 инсталляции веб-платформы:
● Staging
● Production
○ Новосибирск
○ Москва
○ Дронтен(Голландия)
Что у нас есть
4 инсталляции веб-платформы:
● Staging - 206 приложений
● Production - 63 приложения
○ Новосибирск
○ Москва
○ Дронтен(Голландия)
Что у нас есть
4 инсталляции веб-платформы:
● Staging - 206 приложений
● Production - 63 приложения
○ Новосибирск
○ Москва
○ Дронтен(Голландия)
● >90 разработчиков
Что у нас есть
4 инсталляции веб-платформы:
● Staging - 206 приложений
● Production - 63 приложения
○ Новосибирск
○ Москва
○ Дронтен(Голландия)
● >90 разработчиков
● ~12 млн. пользователей
Нам понравилось
Разработчики пишут код
Dev
Код
Разработчики пишут код
Dev
Код
Сборщик
Heroku
Buildpacks
Разработчики пишут код
Dev
Код
Сборщик
Heroku
Buildpacks
Образ
Хранилище
Разработчики пишут код
Образ
Разработчики пишут код
Образ
Apps
Разработчики пишут код
Образ
Apps
Etcd2
Разработчики пишут код
Образ
Apps
Etcd2
Роутер
Разработчики пишут код
Образ
Apps
Etcd2
Роутер
Клиенты
Простое горизонтальное масштабирование
Лёгкий CI и деплой с кнопки
Логирование
Разработчику: Просто отправь на stdout
Логирование
Разработчику: Просто отправь на stdout
Docker
logsLogspout
Data Plane node
Logger
Control Plane node
Grafana
Docker
logsLogspout
Data Plane node
Kibana
Elasticsearch
Логирование
Разработчику: Просто отправь на stdout
Journald
ncat
Syslog-ng
logger.py
Data Plane node
Kibana
Grafana
Elasticsearch
Логирование
Разработчику: Просто отправь на stdout
Journald
ncat
Syslog-ng
logger.py
Data Plane node
Kibana
Grafana
Elasticsearch
Data Plane node
Логирование
Разработчику: Просто отправь на stdout
Docker logs
Kibana
Fluentd
Grafana
Elasticsearch
Мониторинг
Shinken
Google cAdvisor
Container metrics
monitoring.py
custom_checks.py
Elasticsearch
DEIS
Мониторинг
Shinken
Google cAdvisor
Container metrics
monitoring.py
custom_checks.py
Elasticsearch
DEIS
Мониторинг
PrometheusGoogle cAdvisor
Container metrics
DEIS
Grafana
Мониторинг
PrometheusGoogle cAdvisor
Container metrics
DEIS
Grafana
Apps
Metrics
Gateway
DataPlane node #1Простой maintenance
Роутер
Apps
Клиенты
DataPlane node #2
Apps
Publisher
Publisher
Простой maintenance
Роутер
Клиенты
DataPlane node #1
Apps
DataPlane node #2
Apps
Publisher
Publisher
Простой maintenance
Роутер
Клиенты
DataPlane node #1
Apps
DataPlane node #2
Apps
Publisher
Publisher
Быстрая доставка приложений
Было
1. Пишем код
2. Пишем деплой
Быстрая доставка приложений
Было
1. Пишем код
2. Пишем деплой
3. JIRA -> OpenVZ
Быстрая доставка приложений
Было
1. Пишем код
2. Пишем деплой
3. JIRA -> OpenVZ
4. Деплой инфраструктуры
5. Деплой приложения
Быстрая доставка приложений
Было
1. Пишем код
2. Пишем деплой
3. JIRA -> OpenVZ
4. Деплой инфраструктуры
5. Деплой приложения
6. JIRA -> Routing, DNS
Быстрая доставка приложений
Было
1. Пишем код
2. Пишем деплой
3. JIRA -> OpenVZ
4. Деплой инфраструктуры
5. Деплой приложения
6. JIRA -> Routing, DNS
Стало
1. Пишем код
Быстрая доставка приложений
Было
1. Пишем код
2. Пишем деплой
3. JIRA -> OpenVZ
4. Деплой инфраструктуры
5. Деплой приложения
6. JIRA -> Routing, DNS
Стало
1. Пишем код
2. Git push
Быстрая доставка приложений
Было
1. Пишем код
2. Пишем деплой
3. JIRA -> OpenVZ
4. Деплой инфраструктуры
5. Деплой приложения
6. JIRA -> Routing, DNS
Стало
1. Пишем код
2. Git push
3. JIRA -> DNS
Нам не понравилось
Scheduler приложений
Нет перебалансировки приложений
Fleet
Scheduler приложений
Нет перебалансировки приложений
Ручной scale приложений
Fleet
Scheduler приложений
Нет перебалансировки приложений
Ручной scale приложений
Пустая нода <- Новые релизы
Fleet
Scheduler приложений
Нет перебалансировки приложений
Ручной scale приложений
Пустая нода <- Новые релизы
Ввод ноды == Ручной scale приложений
Fleet
Вопросы с etcd2
Проблемы с multiDC
Вопросы с etcd2
Проблемы с multiDC
Несколько инсталляций DEIS
Вопросы с etcd2
Проблемы с multiDC
Несколько инсталляций DEIS
Router fallback
Вопросы с etcd2
Проблемы с multiDC
Несколько инсталляций DEIS
Router fallback
Зависим от нагрузки
Вопросы с etcd2
Проблемы с multiDC
Несколько инсталляций DEIS
Router fallback
Зависим от нагрузки
Etcd2 masters -> отдельные ноды
Выводы
● Доставляем быстрее
● Профильные задачи разработчикам
● Контроль деплоя/отката
● Унификация инфраструктуры
Будущее
Deis v2 на Kubernetes
Спасибо!
Дехтярёв Евгений
github.com/dekhtyarev/devopspro-readme
Вопросы?