Как вы думаете, что объединяет сайты открытой государственной базы данных Швейцарии, Vogue France и голландской версии журнала National Geographic Traveler? Все они работают на Symfony2! В этой статье мы расскажем вам о высоконагруженных сайтах, которые используют этот производительный PHP-фреймворк, а также о собственном опыте работы с Symfony2 на таком типе проектов.
Во-первых, следует объяснить, почему мы считаем, что Symfony2 так хорошо подходит для работы над большими сайтами.
Почему Symfony2 подходит для создания больших сайтов?
В этом фреймворке имеется функционал, который пригодится вам, если вы хотите создавать большие сайты на Symfony2:
- Composer — менеджер зависимостей для PHP-компонентов для установки и обновления библиотек, которые используются в проекте.
- Организация функционала в виде бандлов, которыми легко управлять.
- Возможность выполнять команды из консоли для автоматизации некоторых действий.
- Наличие панели веб-отладки, которая предоставляет полезную информацию для профилирования работы сайта и запросов к базе данных.
Кто использует Symfony2?
Самые большие сайты Symfony2 принадлежат к разнообразным категориям.
BlaBlaCar — сайт для поиска попутчиков. Ежеквартально его использует более 10 млн людей. Symfony2 отвечает за бэкенд сайта и мобильных приложений, а также бэкофис.
Платный видеосервис NatGeo Play предоставляет пользователям возможность смотреть программы и документальные фильмы от National Geographic как в браузере, так и на мобильных устройствах под управлением iOS и Android.
Сервис по стримингу музыки Spotify тоже полагается на возможности Symfony2. У Spotify более 75 миллионов активных пользователей, из которых 20 миллионов предпочитают платную подписку. В среднем сервис обрабатывает 600 тысяч запросов в секунду и более половины трафика приходится на мобильные устройства.
Вот несколько PHP-фремворков, которые рассматривала компания в 2012 году при выборе нового инструмента:
- CodeIgniter
- Zend Framework 2
- Symfony 2
- Kohana
Главной целью перехода было найти удобный фреймворк, который позволил бы легко изолировать компоненты для тестирования, создавать кастомные URL с помощью роутинга и использовать внедрение зависимостей (помогает переопределять что-угодно согласно индивидуальным требованиям) и был достаточно надежным.
Кроме того, требовалось, чтобы новый фреймворк был хорошо задокументирован для более быстрого обучения сотрудников. Symfony2 отвечает всем этим требованиям, поэтому Spotify выбрали именно его. О технических деталях один из разработчиков рассказал на SymfonyLive London 2015.
На Symfony2 также работает известный сайт с видеоконтентом для взрослых — YouPorn.
MeinFernbus — большой сайт транспортной компании на Symfony2
На протяжении 3 лет мы принимали участие в разработке этого проекта на Symfony совместно с IT-командой MeinFernbus. Компания — лидер транспортных услуг Германии в области пассажирских перевозок автобусами дальнего следования. В 2015 году она объединилась с Flixbus, в результате чего на новую компанию приходится 76% перевозок в соответствующем сегменте рынка.
Структура проекта
Для MeinFernbus мы разработали систему из трех основных составляющих: сайт продаж (frontend), система управления компанией (backend) и API. При этом портал агентств и партнеров вынесены в отдельные сервисы:
Как использовались возможности Symfony2
Все бизнес-процессы регулируются с помощью API. Сайт продаж (frontend), через который совершаются продажи билетов, связывается с backend через API. Управление его внешним видом и информационным наполнением осуществляется с помощью простой CMS, написанной на Symfony2 с использованием студийных и сторонних бандлов.
Система управления компанией (backend) содержит ряд ключевых компонентов, связанных с планированием поездок, оповещением пользователей о поездках, инструментами ценообразования, управлением агентствами и партнерами. При этом визуализация этих данных выполнена с помощью библиотеки D3.js.
Важной частью backend-процессов является геоинформационная система (GIS), которая занимается обработкой геоданных:
- Получает, фильтрует и обрабатывает сведения о местоположении автобусов.
- Подготавливает данные, которые будут отображаться на карте в режиме реального времени.
- Фиксирует случаи опоздания автобусов.
- Анализирует собравшиеся данные по опозданиям, чтобы скорректировать графики движения.
Учитывая перечисленный функционал, системе приходиться быстро обрабатывать большое количество запросов, поэтому для ее реализации мы решили использовать легкий и быстрый микро-фреймворк Silex. Он обладает минимально необходимым набором компонентов, но при необходимости его можно расширять с помощью компонентов Symfony2.
Напоследок следует сказать, что большие сайты, разработанные на Symfony2, имеют ряд общих черт. При их создании требуется уделять достаточно внимания планированию архитектуры и принимать решения касательно того, какие именно компоненты будут использоваться для того или иного функционала. При этом фреймворк Symfony2 является достаточно гибким, чтобы создавать большие сайты разного назначения: от видеохостингов до магазинов.
Мы, студия stfalcon.com, использовали Symfony2 для разнообразных проектов и будем рады создать сайт на Symfony2 для вашего бизнеса.