Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Django under load, или django тоже может быть быстрой

Django under load, или django тоже может быть быстрой

Алексей Штырняев (Х5 Retail Group, разработчик) @ MoscowPython Meetup 70

"В своей работе используем Django для высоконагруженного сервиса. И постоянно тестируем сервисы под нагрузкой, чтобы удостовериться, что новый код выдержит наш следующий релиз. За время регулярных высоконагруженных тестов выработали n-советов, которые помогают увеличить производительность в проектах на Django".

Видео: http://www.moscowpython.ru/meetup/70/django-under-load/

Moscow Python Meetup
PRO

November 28, 2019
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Django под нагрузкой
    или django тоже может быть быстрой

    View Slide

  2. Цифровая трансформация

    View Slide

  3. Microservices

    View Slide

  4. Microservices
    ● Легко внедрять
    ○ Поэтапный отказ от старых решений
    ● Быстро разрабатывать
    ○ Любой микросервис мы пишем за 1 спринт за 2 внедряем
    ● И недорого

    View Slide

  5. Проблема

    View Slide

  6. Микросервисы работают
    ● Настроенный CI/CD
    ● Непрерывное тестирование
    ● У микросервиса есть владелец
    ● Документация

    View Slide

  7. CI/CD

    View Slide

  8. View Slide

  9. Как мы тестируем
    Merge
    Request

    View Slide

  10. Тем временем в OpenShift
    Пространство TANK Пространство TEST
    yandex tank
    test DB
    Mock
    service
    #1
    Mock
    service
    #2
    Mock
    service
    #3
    Стресс
    Нагрузочное
    Тест #1
    Тест #2 Сервис

    View Slide

  11. Ресурсы

    View Slide

  12. Client ms-service Partner
    ms-
    auth
    ms-service

    View Slide

  13. Bottlenecks

    View Slide

  14. WSGI сервер
    ● Waitress
    ● Bjoern
    Server App
    wsgi

    View Slide

  15. MIDDLEWARE
    MIDDLEWARE
    здорового человека
    обычного проекта
    MIDDLEWARE
    микросервиса

    View Slide

  16. MIDDLEWARE for microservices
    - 'django.contrib.messages.middleware.MessageMiddleware'
    - 'django.middleware.clickjacking.XFrameOptionsMiddleware'
    - 'django.contrib.sessions.middleware.SessionMiddleware'
    - 'django.middleware.csrf.CsrfViewMiddleware'
    + 'django.middleware.gzip.GZipMiddleware'

    View Slide

  17. Concurrent programming

    View Slide

  18. Python 3

    View Slide

  19. Выводы
    ● Правильно распоряжаться ресурсами
    ● Обращать внимание на пакеты и middleware которые используем
    ● Очень важен WSGI сервер
    ● Обращайте внимание на альтернативные библиотеки написанные на Си

    View Slide

  20. Вопросы

    View Slide