Полтора года со своим heroku-like paas€¦ · Варианты tar/deb...

Post on 20-Aug-2020

8 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Полтора года со своим 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 -> отдельные ноды

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

Janitor: github.com/2gis/janitor

Выводы

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

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

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

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

Будущее

Deis v2 на Kubernetes

Спасибо!

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

e.dekhtyarev@2gis.ru

github.com/dekhtyarev/devopspro-readme

Вопросы?

top related