1. Варианты развертывания
проектов на платформе М3
+
Докладчик:
Решения для электронного правительства и
Кирилл электронизация государственных услуг
Борисов
Больше, чем технологии!
2. Взгляд со стороны пользователя
Запрос
Система
Клиент
Ответ
С точки зрения клиента, система представляет собой «черный ящик».
3
3. WSGI? Что это?
WSGI (Web Server Gateway Interface)
WSGI
middleware
middleware
middleware
Web-сервер ... Приложение
Универсальный интерфейс между web-приложениями на Python и Web-сервером.
3
4. Взгляд со стороны администратора
Frontend Backend
Запрос
Ответ
Клиент Web-сервер Сервер Сервер БД
приложений
С точки зрения системного администратора, бэкенд представляет собой сложный
комплекс взаимодействующих между собой систем.
3
7. Классический вариант: Apache + mod_wsgi
За Против
Обширная документация Прожорлив к ресурсам
Работает «из коробки» Сложность создания
нестандартных конфигураций
Поддержка Windows Плохо переносит DoS атаки
3
8. Перспективный вариант: nginx + uWSGI
worker
worker Приложение 1
worker
Обратный Контроллирующий
Web-браузер
прокси процесс
worker
worker Приложение 2
worker
Использование схемы «master-worker» позволяет гибко изменять конфигурацию
работающей системы и распределять нагрузку без видимых для клиента изменений.
3
9. Прогрессивный: вариант: nginx + WSGI-сервер
За Против
Гибкость конфигурации и
Очень сложен в настройке
расширяемость
Избыточен для большинства
Встроенный load balancer
сценариев
Тесная интеграция:
nginx+uWSGI, Сложно заставить работать
nginx+memcached под Windows
3
10. Дополнительные аспекты развертывания
1 Контроль за процессами: supervisor, Upstart
2 Автоматическое обновление систем: Fabric, Puppet
Автоматическая установка необходимых библиотек под
3 Linux: apt-get, pip
3
11. Анонс мастер-класса
1 Развертывание системы под Apache + mod_wsgi
2 Использование gunicorn
3 Автоматическая балансировка нагрузки через nginx
4 Все вместе: supervisor + nginx + gunicorn
3