Общество с ограниченной ответственностью «Интеллектуальные автобусные системы» развивает проект avtobus.ru — B2C‑платформу продажи межгородних автобусных билетов в РФ. Сервис молодой, запущен 04.04.2024, но уже демонстрирует устойчивую положительную динамику и активный рост аудитории (по данным Яндекс.Метрики).
Архитектура программного обеспечения
Модульный монолит на базе CMF Drupal 11+ с жёсткой типизацией PHP‑кода и конфигурационным управлением.
Функциональность платформы
- Поиск рейсов, покупка и возврат электронных билетов.
- Личный кабинет, статусы поездок, уведомления по email.
- Отзывы о перевозчиках, страницы направлений и расписаний.
- Интеграция с платёжными провайдерами (Сбербанк, Т‑Банк, СБП, SberPay).
Фронтенд
- HTML5, CSS/SCSS, Twig‑шаблоны.
- JavaScript: Alpine.js (реактивные интерфейсы), IMask (маски ввода).
- Собственная библиотека компонентов:
ab-date-picker(Rollup, ESM).
Бэкенд
- PHP 8.3+ (FPM), Composer, строгая типизация.
- Веб‑сервер: Nginx.
- Базы данных: MariaDB/MySQL 8+ (основные), Redis (кэш), APCu (локальный кэш).
- Очереди фоновых задач, cron‑процессы и импорты.
- Инструменты эксплуатации: Drush для деплоя/миграций.
Инфраструктура и данные размещаются на серверах в Российской Федерации.
Инфраструктура и DevOps
- Docker для окружений; локальная разработка через DDEV.
- GitLab с CI/CD: автосборка, статический анализ, деплой веток на DEV‑окружения (
dev1…dev5.avtobus.ru). - Автоматическое применение конфигурации и обновлений:
drush deploy. - Логирование: Monolog в
var/log, уведомления в Telegram.
Тестирование и качество кода
- PHPUnit (unit, kernel, functional) с Drupal Test Traits; отчёт о покрытии.
- PHPStan (расширения для Drupal).
- PHP_CodeSniffer + Drupal Coding Standards; PHPCompatibility; Parallel Lint.
Работа с данными и базами данных
Для устойчивости под нагрузкой применяются:
- Нормализация и денормализация схем по сценарию использования.
- Индексы, покрывающие индексы; анализ планов выполнения запросов.
- Транзакции с заданным уровнем изоляции и управлением блокировками.
- Репликация и разделение read/write‑нагрузки при необходимости.
- Сложные SQL‑запросы и оптимизация джойнов.
- Кэш‑слои (APCu/Redis) и прогрев данных.
Безопасность и соответствие
- Разделение секретов и конфигураций по окружениям, хранение вне VCS.
- Политики
AB_ENVдля ограничения опасных действий на продакшене. - Регулярные обновления Drupal 11.x и зависимостей Composer.
Платформа avtobus.ru сочетает промышленный стек (Drupal 11, PHP 8.3, Nginx, MariaDB/MySQL, Redis) и зрелые практики DevOps/QA (Docker/DDEV, GitLab CI/CD, PHPUnit, PHPStan, PHPCS), что позволяет надёжно развивать продукт и масштабировать его под рост аудитории и транзакционной нагрузки.