Павел Прищепа. Бббыстрый бэкенд на базе друпал

18
БББыстрый бэкенд на Друпале Да, ладно! Павел Прищепа CEO DrupalJedi

Upload: ksenia-rogachenko

Post on 21-Feb-2017

147 views

Category:

Internet


3 download

TRANSCRIPT

Page 1: Павел Прищепа. Бббыстрый бэкенд на базе друпал

БББыстрый бэкенд на Друпале

Да, ладно!

Павел Прищепа CEO DrupalJedi

Page 2: Павел Прищепа. Бббыстрый бэкенд на базе друпал

Есть мнение, что Друпал не очень быстрый

• Громоздкий и неповоротливый

• Куча модулей, которые поднимаются каждый раз

• Он “ненавидит” БД

• Работает только с кешем

• Быстрые бэкендыПла

та за фун

кциональ

ность

и расшир

яемость

Page 3: Павел Прищепа. Бббыстрый бэкенд на базе друпал

Я расскажу

• Как мы использовали Друпал

• Как мы отказались от Друпала как бэкенда

• Как открыли его с новой стороны :)

• И вернулись к Друпалу

Page 4: Павел Прищепа. Бббыстрый бэкенд на базе друпал

Внутренний проект• SilkPaints - приложение для рисования

• Бэкенд на Друпале (Services)

• Юзеры рисуют, шарят рисунки

• Юзеров +400 000, изображений +500 000

• 5-20 запросов в секунду

• Процессор загружен на 40-70%

Page 5: Павел Прищепа. Бббыстрый бэкенд на базе друпал

Запросы растут: запуск iOS версии

• Лайки

• Фолловеры

• Френдленты

• Забанить, удалить трек

• Списки: популярные рисунки, выбор редакции …

Page 6: Павел Прищепа. Бббыстрый бэкенд на базе друпал

Планируемая нагрузка

• 5 000-10 000 новых пользователей ежедневно

• 50-100 запросов в секунду

• Время генерации ответа не более 0.4-0.8 секунды

• Размер БД (уже сейчас > 12 Гб)

Что делать,

шеф?

Page 7: Павел Прищепа. Бббыстрый бэкенд на базе друпал

Ищем альтернативу Друпалу

• Node.js

• Python

• MongoDB

• Redis

Page 8: Павел Прищепа. Бббыстрый бэкенд на базе друпал

Все не то :( Нельзя просто взять и начать

использовать новый фреймворк

• Изменение производственного процесса

• Обучение/найм людей

• “Набить шишки”

• Проект неуправляем

А время п

оджима

ет…

Бизнес т

ребует …

Page 9: Павел Прищепа. Бббыстрый бэкенд на базе друпал

Back to Drupal• Redis

• Module EntityCache

• Module JS

• Module DrushD

• Drupal Queues API

Page 10: Павел Прищепа. Бббыстрый бэкенд на базе друпал

Запрос

Worker

Worker

1. Минимальная обработка

2. Постановка Задачи в очередь

3. Быстрый ответ

Queue

Page 11: Павел Прищепа. Бббыстрый бэкенд на базе друпал

Drupal

api.phpindex.php

Database (MySQL)

Worker 1 (DrushD)

Worker 2 (DrushD)

API Environment

Queue (Drupal based)

Page 12: Павел Прищепа. Бббыстрый бэкенд на базе друпал

Ограничения API Environment

• Не использовать node_save() и node_load()

• Кастомный session.inc хендлер без user_load()

• Аккуратно подключать контрибные модули

• Использовать “легкие” таблицы и кэш

• Минимизировать JOINы в запросах

Page 13: Павел Прищепа. Бббыстрый бэкенд на базе друпал

Queue

Внутренний сервис

Lock server (Redis)

Друпал модуль 1

Внешний сервис

Друпал модуль 2

Сервисн

о-ориенти

рованны

й

подход (SOA)

Page 14: Павел Прищепа. Бббыстрый бэкенд на базе друпал

Лайки

Добавление рисунка в ленты

фолловеров

Пересчет статистики

Очереди с разными приоритетами

Page 15: Павел Прищепа. Бббыстрый бэкенд на базе друпал

Результаты• В 10 раз снизилась нагрузка на БД

• Время отклика не более 1 секунды

• Загрузка процессора 10-30%

• “Простор” для масштабирования приложения

• SOA

Page 16: Павел Прищепа. Бббыстрый бэкенд на базе друпал

Как еще ускорить?• Деградация функциональности

• Масштабирование

• Репликация

• Денормализация

• Асинхронная обработка

• Горизонтальный шардинг

• Выносить функционал в сервисы

Page 17: Павел Прищепа. Бббыстрый бэкенд на базе друпал

На будущее• Основная причина тормозов - “кривые руки”

• Используйте то, что хорошо знаете

• Не более 1 новой технологии на проекте

• Оптимизировать только то что мешает “продавать”

• Помнить о “бизнесе”

Page 18: Павел Прищепа. Бббыстрый бэкенд на базе друпал

Ваши вопросыПавел Прищепа CEO DrupalJedi

[email protected]