Upload
bars-group
View
730
Download
3
Embed Size (px)
DESCRIPTION
Борисов К. Варианты развертывания проектов на M3
Citation preview
+
КириллБорисов
Докладчик:Решения для электронного правительства и электронизация государственных услуг
Больше, чем технологии!
Варианты развертывания проектов на платформе М3
3
Взгляд со стороны пользователя
С точки зрения клиента, система представляет собой «черный ящик».
Клиент
Запрос
Ответ
Система
3
WSGI? Что это?
WSGI (Web Server Gateway Interface)
Универсальный интерфейс между web-приложениями на Python и Web-сервером.
Web-серверmiddlew
are
middlew
are
middlew
are
... Приложение
WSGI
3
Взгляд со стороны администратора
С точки зрения системного администратора, бэкенд представляет собой сложный комплекс взаимодействующих между собой систем.
Клиент
Запрос
ОтветWeb-сервер Сервер БДСервер
приложений
Frontend Backend
3
Варианты развертывания
Apache + mod_wsgi1
supervisor + nginx + (gunicorn | uWSGI)
nginx + (gunicorn / uWSGI)
3
2
3
Классический вариант: Apache + mod_wsgi
Каждое приложение выполняется в контексте отдельного экземпляра Apache.
Web-браузер
Apache Приложение 1
Приложение 2
Приложение 3
mod_wsgi
Apache mod_wsgi
Apache mod_wsgi
3
Классический вариант: Apache + mod_wsgi
Обширная документация Прожорлив к ресурсам
Работает «из коробки»Сложность создания
нестандартных конфигураций
Плохо переносит DoS атаки
Поддержка Windows
За Против
3
Перспективный вариант: nginx + uWSGI
Использование схемы «master-worker» позволяет гибко изменять конфигурацию работающей системы и распределять нагрузку без видимых
для клиента изменений.
Web-браузерКонтроллирующий
процесс
Приложение 1
worker
worker
worker
Приложение 2
worker
worker
worker
Обратный прокси
3
Прогрессивный: вариант: nginx + WSGI-сервер
Гибкость конфигурации и расширяемость
Встроенный load balancer
Тесная интеграция: nginx+uWSGI,
nginx+memcached
Очень сложен в настройке
Избыточен для большинства сценариев
За Против
Сложно заставить работать под Windows
3
Дополнительные аспекты развертывания
Контроль за процессами: supervisor, Upstart
Автоматическая установка необходимых библиотек под Linux: apt-get, pip
Автоматическое обновление систем: Fabric, Puppet
1
3
2
3
Анонс мастер-класса
Развертывание системы под Apache + mod_wsgi
Автоматическая балансировка нагрузки через nginx
Использование gunicorn
1
3
2
Все вместе: supervisor + nginx + gunicorn4
3
И в завершение…
Вопросы?
+Спасибо за внимание!