Самые большие сайты на фреймворке Symfony2

Как вы думаете, что объединяет сайты открытой государственной базы данных Швейцарии, Vogue France и голландской версии журнала National Geographic Traveler? Все они работают на Symfony2! В этой статье мы расскажем вам о высоконагруженных сайтах, которые используют этот производительный PHP-фреймворк, а также о собственном опыте работы с Symfony2 на таком типе проектов.

Во-первых, следует объяснить, почему мы считаем, что Symfony2 так хорошо подходит для работы над большими сайтами.

Почему Symfony2 подходит для создания больших сайтов?

В этом фреймворке имеется функционал, который пригодится вам, если вы хотите создавать большие сайты на Symfony2:

  1. Composer — менеджер зависимостей для PHP-компонентов для установки и обновления библиотек, которые используются в проекте.
  2. Организация функционала в виде бандлов, которыми легко управлять.
  3. Возможность выполнять команды из консоли для автоматизации некоторых действий.
  4. Наличие панели веб-отладки, которая предоставляет полезную информацию для профилирования работы сайта и запросов к базе данных.

Кто использует Symfony2?

Самые большие сайты Symfony2 принадлежат к разнообразным категориям.

BlaBlaCar — сайт для поиска попутчиков. Ежеквартально его использует более 10 млн людей. Symfony2 отвечает за бэкенд сайта и мобильных приложений, а также бэкофис.

Сайт BlaBlaCar сделан на Symfony2

Платный видеосервис NatGeo Play предоставляет пользователям возможность смотреть программы и документальные фильмы от National Geographic как в браузере, так и на мобильных устройствах под управлением iOS и Android.

Видеосайт NatGeo Play сделан на Symfony2

Сервис по стримингу музыки Spotify тоже полагается на возможности Symfony2. У Spotify более 75 миллионов активных пользователей, из которых 20 миллионов предпочитают платную подписку. В среднем сервис обрабатывает 600 тысяч запросов в секунду и более половины трафика приходится на мобильные устройства.

Вот несколько PHP-фремворков, которые рассматривала компания в 2012 году при выборе нового инструмента:

  1. CodeIgniter
  2. Zend Framework 2
  3. Symfony 2
  4. Kohana

Главной целью перехода было найти удобный фреймворк, который позволил бы легко изолировать компоненты для тестирования, создавать кастомные URL с помощью роутинга и использовать внедрение зависимостей (помогает переопределять что-угодно согласно индивидуальным требованиям) и был достаточно надежным.

Кроме того, требовалось, чтобы новый фреймворк был хорошо задокументирован для более быстрого обучения сотрудников. Symfony2 отвечает всем этим требованиям, поэтому Spotify выбрали именно его. О технических деталях один из разработчиков рассказал на SymfonyLive London 2015.

Сайт Spotify работает на Symfony2

На Symfony2 также работает известный сайт с видеоконтентом для взрослых — YouPorn.

MeinFernbus — большой сайт транспортной компании на Symfony2

На протяжении 3 лет мы принимали участие в разработке этого проекта на Symfony совместно с IT-командой MeinFernbus. Компания — лидер транспортных услуг Германии в области пассажирских перевозок автобусами дальнего следования. В 2015 году она объединилась с Flixbus, в результате чего на новую компанию приходится 76% перевозок в соответствующем сегменте рынка.

Сайт транспортной компании MeinFernbus сделан на Symfony2

Структура проекта

Для MeinFernbus мы разработали систему из трех основных составляющих: сайт продаж (frontend), система управления компанией (backend) и API. При этом портал агентств и партнеров вынесены в отдельные сервисы:

Структура проекта MeinFernbus

Как использовались возможности Symfony2

Все бизнес-процессы регулируются с помощью API. Сайт продаж (frontend), через который совершаются продажи билетов, связывается с backend через API. Управление его внешним видом и информационным наполнением осуществляется с помощью простой CMS, написанной на Symfony2 с использованием студийных и сторонних бандлов.

Сайт MeinFernbus

Система управления компанией (backend) содержит ряд ключевых компонентов, связанных с планированием поездок, оповещением пользователей о поездках, инструментами ценообразования, управлением агентствами и партнерами. При этом визуализация этих данных выполнена с помощью библиотеки D3.js.

Важной частью backend-процессов является геоинформационная система (GIS), которая занимается обработкой геоданных:

  1. Получает, фильтрует и обрабатывает сведения о местоположении автобусов.
  2. Подготавливает данные, которые будут отображаться на карте в режиме реального времени.
  3. Фиксирует случаи опоздания автобусов.
  4. Анализирует собравшиеся данные по опозданиям, чтобы скорректировать графики движения.

Учитывая перечисленный функционал, системе приходиться быстро обрабатывать большое количество запросов, поэтому для ее реализации мы решили использовать легкий и быстрый микро-фреймворк Silex. Он обладает минимально необходимым набором компонентов, но при необходимости его можно расширять с помощью компонентов Symfony2.

Сайт MeinFernbus

Напоследок следует сказать, что большие сайты, разработанные на Symfony2, имеют ряд общих черт. При их создании требуется уделять достаточно внимания планированию архитектуры и принимать решения касательно того, какие именно компоненты будут использоваться для того или иного функционала. При этом фреймворк Symfony2 является достаточно гибким, чтобы создавать большие сайты разного назначения: от видеохостингов до магазинов.

Мы, студия stfalcon.com, использовали Symfony2 для разнообразных проектов и будем рады создать сайт на Symfony2 для вашего бизнеса.