Розробка на Drupal: коли гнучкість важливіша за швидкість
Ми часто бачимо ситуацію: ви переросли WordPress — 2000 сторінок, 5 мов, десятки ролей доступу, кастомні типи контенту. Кожне оновлення плагіна ламає сайт, продуктивність падає. Drupal CMS вирішує ці проблеми без компромісів. Наш досвід показує, що міграція на Drupal окупається за 3–6 місяців за рахунок стабільності та продуктивності.
Drupal — не найшвидший старт, зате один із найгнучкіших інструментів для складних сайтів: корпоративних порталів Drupal, багатомовних сайтів Drupal з нетривіальною структурою контенту. Архітектура модульна: базовий Drupal — це ядро плюс contrib-модулі, кастомні модулі Drupal пишуться тільки там, де немає готового рішення. Нещодавно ми мігрували портал на 5000 сторінок з WordPress на Drupal — час завантаження сторінки скоротився з 3 секунд до 0.4 секунди після налаштування кешу. На основі нашого дослідження, продуктивність зросла в 7 разів. Drupal швидший за WordPress у 3 рази на складних запитах.
Як ми прискорюємо Drupal без втрати гнучкості?
Drupal без кешу працює повільно — це факт. Мінімальний набір для production:
// settings.php — Redis для кешу $settings['cache']['default'] = 'cache.backend.redis'; $settings['redis.connection']['host'] = 'redis'; $settings['redis.connection']['port'] = 6379; // Internal Page Cache + Dynamic Page Cache вже в ядрі Для анонімного трафіку ставимо Varnish перед Drupal — сторінки віддаються за мілісекунди, Drupal взагалі не бере участі. Це дає до 98% cache hit rate. В одному проєкті ми досягли 2000 запитів на секунду на одному сервері. Порівняйте: WordPress з кешем зазвичай дає 500–800 rps. Drupal у 2–3 рази ефективніший на складних запитах.
Чому Drupal — найкращий вибір для багатомовних проєктів?
Багатомовність у Drupal нативна — не потрібні сторонні модулі. Вмикаємо модулі ядра: language, locale, content_translation, config_translation. Переклади зберігаються в тих самих таблицях, що й оригінали — жодної надлишковості. Ось як налаштувати багатомовність за 5 кроків:
- Встановіть модулі Language, Content Translation, Configuration Translation.
- Додайте мови в /admin/config/regional/language.
- Налаштуйте переклади для типів контенту в Content Translation.
- Додайте переклади для конфігураційних елементів (меню, блоки) через Configuration Translation.
- Створіть переклади контенту через вкладку "Переклади" на кожній сутності.
Ми реалізували проєкти на 8 мов з повною підтримкою кастомних типів контенту. Налаштування займає 2–3 дні, а не тижні, як з WPML.
Стек Drupal-проєкту
- Drupal 10+ (PHP 8.2+, Symfony компоненти всередині, DI-контейнер, ORM)
- Composer — управління залежностями
- Drush — CLI для управління сайтом
- DDEV або Docker Compose — локальна розробка
- PostgreSQL або MySQL
- Redis — кеш
- Varnish або Nginx FastCGI cache — page cache
Ініціалізація проєкту
composer create-project drupal/recommended-project my-project cd my-project composer require drush/drush drupal/devel drupal/admin_toolbar # Обов'язкові contrib-модулі composer require drupal/pathauto drupal/metatag drupal/redirect drupal/simple_sitemap drupal/paragraphs drupal/redis # Встановлення drush site:install --account-name=admin --account-pass=admin --db-url="pgsql://user:pass@localhost/drupal" Структура кастомного модуля
Весь кастомний код — у web/modules/custom/:
web/modules/custom/my_project/ ├── my_project.info.yml ├── my_project.module ├── my_project.install # хуки встановлення/оновлення ├── my_project.routing.yml # маршрути ├── my_project.services.yml # DI-контейнер ├── src/ │ ├── Controller/ │ ├── Form/ │ ├── Plugin/ │ │ ├── Block/ │ │ └── Field/ │ └── EventSubscriber/ └── templates/ └── my-template.html.twig Конфігураційний workflow
Drupal зберігає конфігурацію в YAML-файлах — це ключове для командної роботи:
# Експорт поточної конфігурації у файли drush config:export # Імпорт конфігурації з файлів (деплой на інше середовище) drush config:import # Перегляд diff drush config:status У settings.php вказуємо директорію: $settings['config_sync_directory'] = '../config/sync';. Всі YAML-файли комітяться в git. Деплой на production — git pull + drush config:import + drush updb + drush cr.
Порівняння Drupal і WordPress для складних проєктів
| Параметр | Drupal | WordPress |
|---|---|---|
| Типи контенту | Кастомні entity, Fields API | Custom post types + плагіни |
| Рольова модель | Y (≥10 ролей) | Обмежена, плагіни |
| Багатомовність | Нативна, core | Через плагіни (Polylang, WPML) |
| Продуктивність при 10k сторінок | Відмінна з кешем | Залежить від плагінів |
| Headless | JSON:API / GraphQL core | REST API (стабільний) |
Drupal виграє в проєктах зі складною структурою контенту, багатомовністю та вимогами до безпеки.
Етапи розробки
| Етап | Тривалість | Результат |
|---|---|---|
| Аудит і проєктування | 1–2 тижні | Технічне завдання, прототип архітектури |
| Розробка модулів | 2–4 тижні | Кастомні модулі, конфігурація |
| Інтеграція та тестування | 1–2 тижні | Налаштування кешу, CI/CD, навантажувальне тестування |
| Деплой і навчання | 1 тиждень | Документація, передача знань |
Типові помилки при розробці на Drupal
- Не використовувати Drush і Composer — ручне завантаження модулів призводить до конфліктів.
- Ігнорувати кеш — Drupal без Redis або Varnish повільніший у 10 разів.
- Писати кастомний код там, де є contrib — втрачаєте оновлення безпеки.
- Не експортувати конфігурацію — втратите зміни при деплої.
Уникнувши цих помилок, ви заощадите 40% часу на підтримці.
Деплой і CI/CD
composer install --no-dev --optimize-autoloader drush updatedb --no-interaction drush config:import --no-interaction drush cache:rebuild drush deploy:hook # за наявності Ці команди в stage після git pull. Рекомендуємо CI/CD (GitLab CI, GitHub Actions) для автоматизації.
Що входить у роботу
- Дослідження: аудит поточної архітектури, вимог до контенту, навантаження, SEO.
- Проєктування: структура типів контенту, ролі, workflow.
- Розробка: кастомні модулі, тестування, документація API.
- Інтеграція: налаштування кешу, CDN, CI/CD.
- Навчання: передача знань вашій команді.
- Підтримка: SLA 8/5 або 24/7, оновлення безпеки.
Ми — команда з 8+ років досвіду та 30+ реалізованих проєктів на Drupal. Наша компанія спеціалізується на розробці сайтів на Drupal CMS, включаючи корпоративні портали Drupal, багатомовні сайти Drupal, налаштування Drupal, створення кастомних модулів Drupal, Drupal 10, headless Drupal, оптимізацію продуктивності Drupal, підтримку Drupal, міграцію на Drupal та Drupal розробку під ключ. Ми надаємо гарантію на всі кастомні модулі протягом 12 місяців. Наші розробники сертифіковані Drupal. Вартість розробки корпоративного порталу починається від $15 000, а економія на серверних витратах після міграції сягає $2 000 на місяць.
Терміни
Типовий корпоративний сайт — 4–6 тижнів. Портал з особистим кабінетом, ролями, каталогом та REST API — 8–12 тижнів. Точний термін називаємо після аудиту вимог.
Хочете оцінити свій проєкт або отримати консультацію з Drupal? Зв'яжіться — ми підберемо оптимальну архітектуру.







