13
+ Кирилл Борисов Докладчик: Решения для электронного правительства и электронизация государственных услуг Больше, чем технологии! Варианты развертывания проектов на платформе М3

Варианты развертывания проектов на M3

Embed Size (px)

DESCRIPTION

Борисов К. Варианты развертывания проектов на M3

Citation preview

Page 1: Варианты развертывания проектов на M3

+

КириллБорисов

Докладчик:Решения для электронного правительства и электронизация государственных услуг

Больше, чем технологии!

Варианты развертывания проектов на платформе М3

Page 2: Варианты развертывания проектов на M3

3

Взгляд со стороны пользователя

С точки зрения клиента, система представляет собой «черный ящик».

Клиент

Запрос

Ответ

Система

Page 3: Варианты развертывания проектов на M3

3

WSGI? Что это?

WSGI (Web Server Gateway Interface)

Универсальный интерфейс между web-приложениями на Python и Web-сервером.

Web-серверmiddlew

are

middlew

are

middlew

are

... Приложение

WSGI

Page 4: Варианты развертывания проектов на M3

3

Взгляд со стороны администратора

С точки зрения системного администратора, бэкенд представляет собой сложный комплекс взаимодействующих между собой систем.

Клиент

Запрос

ОтветWeb-сервер Сервер БДСервер

приложений

Frontend Backend

Page 5: Варианты развертывания проектов на M3

3

Варианты развертывания

Apache + mod_wsgi1

supervisor + nginx + (gunicorn | uWSGI)

nginx + (gunicorn / uWSGI)

3

2

Page 6: Варианты развертывания проектов на M3

3

Классический вариант: Apache + mod_wsgi

Каждое приложение выполняется в контексте отдельного экземпляра Apache.

Web-браузер

Apache Приложение 1

Приложение 2

Приложение 3

mod_wsgi

Apache mod_wsgi

Apache mod_wsgi

Page 7: Варианты развертывания проектов на M3

3

Классический вариант: Apache + mod_wsgi

Обширная документация Прожорлив к ресурсам

Работает «из коробки»Сложность создания

нестандартных конфигураций

Плохо переносит DoS атаки

Поддержка Windows

За Против

Page 8: Варианты развертывания проектов на M3

3

Перспективный вариант: nginx + uWSGI

Использование схемы «master-worker» позволяет гибко изменять конфигурацию работающей системы и распределять нагрузку без видимых

для клиента изменений.

Web-браузерКонтроллирующий

процесс

Приложение 1

worker

worker

worker

Приложение 2

worker

worker

worker

Обратный прокси

Page 9: Варианты развертывания проектов на M3

3

Прогрессивный: вариант: nginx + WSGI-сервер

Гибкость конфигурации и расширяемость

Встроенный load balancer

Тесная интеграция: nginx+uWSGI,

nginx+memcached

Очень сложен в настройке

Избыточен для большинства сценариев

За Против

Сложно заставить работать под Windows

Page 10: Варианты развертывания проектов на M3

3

Дополнительные аспекты развертывания

Контроль за процессами: supervisor, Upstart

Автоматическая установка необходимых библиотек под Linux: apt-get, pip

Автоматическое обновление систем: Fabric, Puppet

1

3

2

Page 11: Варианты развертывания проектов на M3

3

Анонс мастер-класса

Развертывание системы под Apache + mod_wsgi

Автоматическая балансировка нагрузки через nginx

Использование gunicorn

1

3

2

Все вместе: supervisor + nginx + gunicorn4

Page 12: Варианты развертывания проектов на M3

3

И в завершение…

Вопросы?

Page 13: Варианты развертывания проектов на M3

+Спасибо за внимание!