ݺߣ

ݺߣShare a Scribd company logo
Варианты развертывания
  проектов на платформе М3




                       +


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


                                  Запрос




                                                            Система

          Клиент


                                   Ответ



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


3
WSGI? Что это?

    WSGI (Web Server Gateway Interface)

                                                WSGI



                              middleware

                                           middleware

                                                        middleware
     Web-сервер                                                      ...   Приложение




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


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


         Frontend                    Backend




                    Запрос




                     Ответ
      Клиент                      Web-сервер            Сервер           Сервер БД
                                                      приложений




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



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




     1   Apache + mod_wsgi

     2    nginx + (gunicorn / uWSGI)

     3    supervisor + nginx + (gunicorn | uWSGI)




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



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




    Web-браузер                          Apache      mod_wsgi      Приложение 2




                                         Apache      mod_wsgi      Приложение 3




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



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




              За                    Против

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




        Работает «из коробки»       Сложность создания
                                нестандартных конфигураций



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



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

                                                            worker


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



                                                            worker

                       Обратный      Контроллирующий
       Web-браузер
                        прокси            процесс

                                                            worker



                                                            worker   Приложение 2



                                                            worker




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



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




              За                       Против

        Гибкость конфигурации и
                                   Очень сложен в настройке
             расширяемость

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

           Тесная интеграция:
              nginx+uWSGI,         Сложно заставить работать
            nginx+memcached              под Windows



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



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




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




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


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



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



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



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



     4     Все вместе: supervisor + nginx + gunicorn



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




                  Вопросы?



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

      +

More Related Content

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

  • 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
  • 5. Варианты развертывания 1 Apache + mod_wsgi 2 nginx + (gunicorn / uWSGI) 3 supervisor + nginx + (gunicorn | uWSGI) 3
  • 6. Классический вариант: Apache + mod_wsgi Apache mod_wsgi Приложение 1 Web-браузер Apache mod_wsgi Приложение 2 Apache mod_wsgi Приложение 3 Каждое приложение выполняется в контексте отдельного экземпляра Apache. 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
  • 12. И в завершение… Вопросы? 3