70
Полтора года со своим Heroku-like PaaS Дехтярев Евгений

Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Полтора года со своим Heroku-like PaaS

Дехтярев Евгений

Page 2: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

300+

городов

40+ млн.

пользователей

3600

сотрудников

Page 3: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело
Page 4: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

О чём поговорим

● Кратко: Почему мы захотели изменений?

○ http://rootconf.ru/2016/abstracts/2053.html

● Чего мы достигли за полтора года использования.

● Позитив и негатив от выбранного решения.

● Итоги.

Page 5: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Проблемы

✘ Зоопарк виртуальных машин

✘ Разработчики пишут деплой

✘ Staging != Production

✘ Деплой > 1h

Page 6: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Варианты

Tar/Deb Не решает проблемы

Page 7: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Варианты

Tar/Deb

LXC/OpenVZ

Не решает проблемы

Лучше, но не взлетело

Page 8: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Варианты

Tar/Deb

LXC/OpenVZ

Docker

Не решает проблемы

Лучше, но не взлетело

То, что надо!

Page 9: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Кандидаты

Dokku Для local PC

Page 10: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Кандидаты

Dokku

Rancher

Для local PC

Глючный и Java

Page 11: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Кандидаты

Dokku

Rancher

Flynn

Для local PC

Глючный и Java

Медленная разработка

Page 12: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Кандидаты

Dokku

Rancher

Flynn

DEIS

Для local PC

Глючный и Java

Медленная разработка

Лёгкий, большое сообщество

Page 13: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

✘ Зоопарк виртуальных машин

✘ Разработчики пишут деплой

✘ Staging != Production

✘ Деплой > 1h

Page 14: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

✓ Унифицированная инфраструктура(CoreOS, Docker)

✘ Разработчики пишут деплой

✘ Staging != Production

✘ Деплой > 1h

Page 15: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

✓ Унифицированная инфраструктура(CoreOS, Docker)

✓ Разработчики пишут код, тесты, CI/CD

✘ Staging != Production

✘ Деплой > 1h

Page 16: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

✓ Унифицированная инфраструктура(CoreOS, Docker)

✓ Разработчики пишут код, тесты, CI/CD

✓ Staging == Production

✘ Деплой > 1h

Page 17: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

✓ Унифицированная инфраструктура(CoreOS, Docker)

✓ Разработчики пишут код, тесты, CI/CD

✓ Staging == Production

✓ Деплой < 10m

Page 18: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело
Page 19: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело
Page 20: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело
Page 21: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело
Page 22: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Что у нас есть

4 инсталляции веб-платформы:

● Staging

● Production

○ Новосибирск

○ Москва

○ Дронтен(Голландия)

Page 23: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Что у нас есть

4 инсталляции веб-платформы:

● Staging - 206 приложений

● Production - 63 приложения

○ Новосибирск

○ Москва

○ Дронтен(Голландия)

Page 24: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Что у нас есть

4 инсталляции веб-платформы:

● Staging - 206 приложений

● Production - 63 приложения

○ Новосибирск

○ Москва

○ Дронтен(Голландия)

● >90 разработчиков

Page 25: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Что у нас есть

4 инсталляции веб-платформы:

● Staging - 206 приложений

● Production - 63 приложения

○ Новосибирск

○ Москва

○ Дронтен(Голландия)

● >90 разработчиков

● ~12 млн. пользователей

Page 26: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Нам понравилось

Page 27: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Разработчики пишут код

Dev

Код

Page 28: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Разработчики пишут код

Dev

Код

Сборщик

Heroku

Buildpacks

Page 29: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Разработчики пишут код

Dev

Код

Сборщик

Heroku

Buildpacks

Образ

Хранилище

Page 30: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Разработчики пишут код

Образ

Page 31: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Разработчики пишут код

Образ

Apps

Page 32: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Разработчики пишут код

Образ

Apps

Etcd2

Page 33: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Разработчики пишут код

Образ

Apps

Etcd2

Роутер

Page 34: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Разработчики пишут код

Образ

Apps

Etcd2

Роутер

Клиенты

Page 35: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Простое горизонтальное масштабирование

Page 36: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Лёгкий CI и деплой с кнопки

Page 37: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Логирование

Разработчику: Просто отправь на stdout

Page 38: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Логирование

Разработчику: Просто отправь на stdout

Docker

logsLogspout

Data Plane node

Logger

Control Plane node

Grafana

Docker

logsLogspout

Data Plane node

Kibana

Elasticsearch

Page 39: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Логирование

Разработчику: Просто отправь на stdout

Journald

ncat

Syslog-ng

logger.py

Data Plane node

Kibana

Grafana

Elasticsearch

Page 40: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Логирование

Разработчику: Просто отправь на stdout

Journald

ncat

Syslog-ng

logger.py

Data Plane node

Kibana

Grafana

Elasticsearch

Page 41: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Data Plane node

Логирование

Разработчику: Просто отправь на stdout

Docker logs

Kibana

Fluentd

Grafana

Elasticsearch

Page 42: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Мониторинг

Shinken

Google cAdvisor

Container metrics

monitoring.py

custom_checks.py

Elasticsearch

DEIS

Page 43: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Мониторинг

Shinken

Google cAdvisor

Container metrics

monitoring.py

custom_checks.py

Elasticsearch

DEIS

Page 44: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Мониторинг

PrometheusGoogle cAdvisor

Container metrics

DEIS

Grafana

Page 45: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Мониторинг

PrometheusGoogle cAdvisor

Container metrics

DEIS

Grafana

Apps

Metrics

Gateway

Page 46: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

DataPlane node #1Простой maintenance

Роутер

Apps

Клиенты

DataPlane node #2

Apps

Publisher

Publisher

Page 47: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Простой maintenance

Роутер

Клиенты

DataPlane node #1

Apps

DataPlane node #2

Apps

Publisher

Publisher

Page 48: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Простой maintenance

Роутер

Клиенты

DataPlane node #1

Apps

DataPlane node #2

Apps

Publisher

Publisher

Page 49: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Быстрая доставка приложений

Было

1. Пишем код

2. Пишем деплой

Page 50: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Быстрая доставка приложений

Было

1. Пишем код

2. Пишем деплой

3. JIRA -> OpenVZ

Page 51: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Быстрая доставка приложений

Было

1. Пишем код

2. Пишем деплой

3. JIRA -> OpenVZ

4. Деплой инфраструктуры

5. Деплой приложения

Page 52: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Быстрая доставка приложений

Было

1. Пишем код

2. Пишем деплой

3. JIRA -> OpenVZ

4. Деплой инфраструктуры

5. Деплой приложения

6. JIRA -> Routing, DNS

Page 53: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Быстрая доставка приложений

Было

1. Пишем код

2. Пишем деплой

3. JIRA -> OpenVZ

4. Деплой инфраструктуры

5. Деплой приложения

6. JIRA -> Routing, DNS

Стало

1. Пишем код

Page 54: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Быстрая доставка приложений

Было

1. Пишем код

2. Пишем деплой

3. JIRA -> OpenVZ

4. Деплой инфраструктуры

5. Деплой приложения

6. JIRA -> Routing, DNS

Стало

1. Пишем код

2. Git push

Page 55: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Быстрая доставка приложений

Было

1. Пишем код

2. Пишем деплой

3. JIRA -> OpenVZ

4. Деплой инфраструктуры

5. Деплой приложения

6. JIRA -> Routing, DNS

Стало

1. Пишем код

2. Git push

3. JIRA -> DNS

Page 56: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Нам не понравилось

Page 57: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Scheduler приложений

Нет перебалансировки приложений

Fleet

Page 58: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Scheduler приложений

Нет перебалансировки приложений

Ручной scale приложений

Fleet

Page 59: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Scheduler приложений

Нет перебалансировки приложений

Ручной scale приложений

Пустая нода <- Новые релизы

Fleet

Page 60: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Scheduler приложений

Нет перебалансировки приложений

Ручной scale приложений

Пустая нода <- Новые релизы

Ввод ноды == Ручной scale приложений

Fleet

Page 61: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Вопросы с etcd2

Проблемы с multiDC

Page 62: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Вопросы с etcd2

Проблемы с multiDC

Несколько инсталляций DEIS

Page 63: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Вопросы с etcd2

Проблемы с multiDC

Несколько инсталляций DEIS

Router fallback

Page 64: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Вопросы с etcd2

Проблемы с multiDC

Несколько инсталляций DEIS

Router fallback

Зависим от нагрузки

Page 65: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Вопросы с etcd2

Проблемы с multiDC

Несколько инсталляций DEIS

Router fallback

Зависим от нагрузки

Etcd2 masters -> отдельные ноды

Page 66: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Слишком много Docker

Janitor: github.com/2gis/janitor

Page 67: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Выводы

Page 68: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

● Доставляем быстрее

● Профильные задачи разработчикам

● Контроль деплоя/отката

● Унификация инфраструктуры

Page 69: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Будущее

Deis v2 на Kubernetes

Page 70: Полтора года со своим Heroku-like PaaS€¦ · Варианты Tar/Deb LXC/OpenVZ Не решает проблемы Лучше, но не взлетело

Спасибо!

Дехтярёв Евгений

[email protected]

github.com/dekhtyarev/devopspro-readme

Вопросы?