Раньше PaaS системы казались чем-то сложным и недосягаемым. И немногие могли попытаться реализовать такую систему самостоятельно. Но стремительное развитие технологий снизило порог входа в мир PaaS. Появилось множество готовых продуктов. И более того, вы сами можете сделать свой PaaS.
В своём докладе я поделюсь опытом проектирования и создания PaaS системы на базе docker, registrator, etcd, confd и ansible. Расскажу, почему я решил сделать его самостоятельно, а не взять готовый, поделюсь опытом реального использования этого продукта в production.
16. Это — не альтернативы
1. Только вышли из beta
2. Сложные системы
3. Есть ограничения buildpack
16
17. Это — не альтернативы
1. Только вышли из beta
2. Сложные системы
3. Есть ограничения buildpack
17
18. Ограничения buildpack
1. Стандартные buildpack ориентированы на типовые проекты
2. Нет стандартного решения для:
a. сборки мультистековых проектов
b. установки произвольных пакетов
18
19. Контейнеризация и Docker
Если вместо buildpack использовать Dockerfile, то мы
получаем неограниченную свободу и единый формат
запускаемого приложения.
Требования к контейнерам возьмем из 12factor.net
19
36. Определяем MVP
То, что запускает ваши приложения
То, что сообщает о новых запущенных приложениях
То, что маршрутизирует запросы и балансирует нагрузку
36
51. Ansible
1. Лучше, чем скрипт на обычном языке программирования
2. Развертывание платформы с нуля
3. Конфигурирование подключаемых ресурсов
51
52. Ansible
1. Лучше, чем скрипт на обычном языке программирования
2. Развертывание платформы с нуля
3. Конфигурирование подключаемых ресурсов
4. Повторное использование существующих модулей
и playbook
52
53. Ansible
1. Лучше, чем скрипт на обычном языке программирования
2. Развертывание платформы с нуля
3. Конфигурирование подключаемых ресурсов
4. Повторное использование существующих модулей
и playbook
5. Конфигурирование роли через переменные заменяет
конфигурационный файл
53
54. Ansible роль для приложения
1. Запуск контейнера с приложением
54
55. Ansible роль для приложения
1. Запуск контейнера с приложением
2. Клонирование исходников и сборка контейнера
приложения
55
56. Ansible роль для приложения
1. Запуск контейнера с приложением
2. Клонирование исходников и сборка контейнера
приложения
3. Создание Базы данных
4. Запуск redis для кэшей и очередей
56
57. Ansible роль для приложения
1. Запуск контейнера с приложением
2. Клонирование исходников и сборка контейнера
приложения
3. Создание Базы данных
4. Запуск redis для кэшей и очередей
5. Запуск демона отложенных задач (sidekiq или celery)
57
58. Ansible роль для приложения
1. Запуск контейнера с приложением
2. Клонирование исходников и сборка контейнера
приложения
3. Создание Базы данных
4. Запуск redis для кэшей и очередей
5. Запуск демона отложенных задач (sidekiq или celery)
6. Дополнительное конфигурирование load balancer
58
65. Таким образом, мы решили возникшие
проблемы
1. Быстрое и удобное развертывание
2. Простой сетап из одного сервера
3. Знание всех деталей и тонкостей реализации
65
75. Enterprise private cluster
Кластеризация PaaS
Разграничение ресурсов с помощью cgroup
Мониторинг и проверка доступности сервисов
Перемещаемые между серверами тома
75