Высоконагруженные сайты и приложения на PHP / Symfony

Каждый разработчик, который работает на той или иной технологии, постоянно читает о ней что-то новенькое и углубляет свои знания. И мы не исключение. PHP довольно старый и популярный язык, на котором есть много разных фреимворков. Один из самых популярных и серьезных — это Symfony и так уж исторически получилось, что мы на нем пишем. По этому фреимфорку в рунете не так много информации, как хотелось бы, мы часто читаем разные статьи, обзоры и интервью на английском языке, чтобы быть в курсе последних событий. Эта статья — обзор больших сайтов, которые сделаны на PHP / Symfony с уникальной для рунета информацией, а также описание некоторых технологий, которые применяются в связке с ними. И да, мы знаем, что PHP «уже не торт» и что использовать его уже не модно, однако эта технология имеет большую долю рынка, много наработок и отличную документацию, поэтому мы её используем наравне с Python, Ruby, Java и другими.Таблица известных проектов (на основе данных http://builtwith.com/), кликабельно: image

Yahoo! Bookmarks (онлайн сервис)Использованные технологии: Думаю, не стоит рассказывать о компании Yahoo!… Всем она хорошо известна, пусть даже и сдала немного в своих позициях. Здесь стоит отметить, что одно время проект Yahoo! Bookmarks был написан на языке Perl, а в дальнейшем стал использоваться PHP и фреймворк Symfony. При том, по словам Майкла Солсбери выбор пал на Symfony благодаря прекрасной документации, широким возможностям настройки и использованию лучших в своем роде компонентов, которые не надо разрабатывать с нуля.

(источник http://www.symfony-project.org/blog//2006/10/28/yahoo-bookmarks-uses-symfony)

Немного о статистике:

Yahoo! Bookmarks ежемесячно посещают более 500 тыс. пользователей. Кол-во уникальных посещений на апрель месяца 2014 года составляет чуть более 200 тыс. Это число значительно уменьшилось по отношению к показателям за прошлый год — более 500 тыс. уникальных посещений за июнь 2013 года.

(источник http://www.siteclass.com/www/bookmarks.yahoo.com)

Delicious.com. (онлайн сервис) Использованные технологии: PHP как язык программирования и в качестве фреймворка был выбран Symfony. Хостинг — Amazon. За основную систему управления базами данных взята MySQL, кэширование объектов выполняет memcached, а Redis выступает в качестве дополнительного хранилища данных.

Немного о статистике:

Ежемесячно delicious.com посещает около 1,5 миллиона человек, из них уникальных посещений — более чем 250 тысяч. Статистика на данный момент сильно падает. На тот момент, как проектом владела компания Yahoo! на сайте было зарегистрировано более 5,3 миллионов пользователей и 180 миллионов уникальных закладок.

(источник http://www.siteclass.com/www/delicious.com, http://en.wikipedia.org/wiki/Delicious_(website))

TED (сайт конференции) Использованные технологии: Ted.com родился в 2006 году. Проект использовал PHP как язык программирования и Symfony в качестве фреймворка. В интервью с главным техническим директором Гэвином Холлом и архитектором ПО Майклом Твентимэном говорится о первой версии сайта, построенной на вышеперечисленной технологии. PHP был выбран как один из популярных на то время языков, который знали многие разработчики. Также упоминается, что опыт масштабирования таких гигантов как Yahoo! и Facebook, использующих PHP, также повлиял на выбор языка программирования.

(источник http://hello.ted.com/2013/10/04/under-the-hood/)

Немного о статистике:

На январь 2014 года более чем 1500 записей выступлений на конференции было опубликовано на сайте. Каждую неделю публикуется 5–7 новых выступлений. 13 ноября 2012 года TED достиг отметки в миллиард просмотров. Ежемесячно ted.com посещают 2 миллиона 200 тыс. человек, из них уникальных посещений — более чем 1 миллион.

(источник https://www.quantcast.com/pitchfork.com)

Dailymotion (видеохостинг) Использованные технологии: Проект был запущен в 2005 году на основе домашних серверов Linux. Поначалу к нему относились скептически, и после того, как отметка уникальных посещений перевалила за 37 миллионов в месяц, создатели задумались о расширении. В 2009 Dailymotion перешел на Symfony. Итак, в проекте так же используется связка PHP и Symfony. За основную систему управления базами данных взята MySQL, кэширование объектов выполняет memcached.

(источник https://www.ndm.net/isilon/pdf/dailymotion.pdf, http://whoisusing.it/website/dailymotion)

Немного о статистике:

Dailymotion на 2013 год имел более 112 миллионов уникальных посещений и 2,5 миллиарда просмотров по всему миру. Сюда входят 50 Гбит информации в день, 25 миллионов просмотров страниц в день, 2 миллиона пользователей в день и добавление видео объемом в 1 Тбайт в день (источник ComScore, январь 2013). На 2012 год сайт был 32 м по посещаемости в мире.

(источник https://www.ndm.net/isilon/pdf/dailymotion.pdf, http://advertising.dailymotion.com/stats/)

BlaBlaCar (социальная сеть (платформа)) Использованные технологии: PHP как язык программирования и в качестве фреймворка был выбран Symfony. За основную систему управления базами данных взята MySQL, кэширование объектов выполняет memcached, а коллекций объектов — Redis. Все это работает также в связке с RabbitMQ. Elasticsearch используется как поисковая платформа.

(источник http://moquet.net/talks/symfony-live-2013/)

Немного о статистике:

Проект был запущен в 2004 году. За десять лет количество пользователей постепенно росло, и на 2014 год составляет 6 миллионов зарегистрированных водителей и пассажиров. Было совершенно порядка 30 миллионов поездок за время работы проекта. В январе 2014 года BlaBlaCar появился в России и Украине. На сегодняшний момент статистика по сайту такая: более 27 тысяч уникальных ежедневных посещений и более 160 тысяч просмотров страниц.

(источник http://fr.wikipedia.org/wiki/BlaBlaCar, http://www.rankstats.org/worth/blablacar.com)

YouPorn (порносайт) Использованные технологии: С 2011 года сайт использует PHP + Symfony вместо Perl, а также Redis вместо MySQL и ActiveMQ. Таким образом, за основную систему управления базами данных взят Redis, он же отвечает за кэширование объектов. MySQL используется как инструмент администратора для управления и добавления данных в кластер Redis. За балансировку нагрузки отвечает HAProxy.

(источник http://highscalability.com/blog/2012/4/2/youporn-targeting-200-million-views-a-day-and-beyond.html)

Немного о статистике:

Понятно, что сайт подобного содержания имеет высокую посещаемость, поэтому приведу только несколько цифр для общей картины. Статистика на 2012 год составила 4,851,384,493 посещений по всему миру. В среднем в день передается 950 ТБ. Количество просмотров в день составляет 200 миллионов. Сервер Redis обрабатывает 300 тысяч запросов в секунду.

(источник http://blog.youporn.com/youporn-2012-big-numbers-hard-facts/, http://www.extremetech.com/computing/123929-just-how-big-are-porn-sites/2)

W3Counter (сервис статистики) Использованные технологии: PHP как язык программирования и в качестве фреймворка был выбран Symfony. За основную систему управления базами данных взята MySQL, кэширование объектов выполняет Redis.

(источник http://www.dangrossman.info/2014/02/08/10-years-of-w3counter/)

Немного о статистике:

Сервис предоставляет детальную статистику более чем 76,000 сайтам. Проект посещают более 3 тысяч пользователей в день, и более 8 тысяч просмотров страниц. Уникальных посещений ежемесячно — около 40 тысяч.

(источник http://bluehorn.co.nz/2008/12/06/popular-websites-built-using-symfony-framework/, https://www.quantcast.com/w3counter.com? country=GLOBAL)

Photobucket (сервис хостинга изображений) Использованные технологии: PHP как язык программирования и в качестве фреймворка был выбран Symfony. За основную систему управления базами данных взята MySQL, используется Hadoop — для реализации поисковых и контекстных механизмов, анализа данных. Squid реализует функцию кэширующего прокси-сервера.

(источник http://www.linkedin.com/in/jgoss1074)

Немного о статистике:

На проекте размещено более 10 миллиардов изображений, из них ежедневно загружаются около 4 миллионов картинок и видео файлов из Сети и подключенных цифровых устройств. Все это загружают более чем 100 миллионов зарегистрированных пользователей. Проект популярен, на него ссылаются более 300 тысяч различных сайтов.

За июнь месяц проект имеет около 62 миллиона посещений и около 180 миллионов просмотров страниц, из них в день более 1,8 миллиона посещений и более 5 миллионов просмотров станиц.

(источник http://en.wikipedia.org/wiki/Photobucket, http://ru.wikipedia.org/wiki/Photobucket, https://www.quantcast.com/photobucket.com)

Postcrossing (сайт проекта) Использованные технологии: Проект написан на PHP с использованием фреймворка Symfony. За основную систему управления базами данных взята MySQL, которая работает в связке с Redis. Проект также использует инфраструктуру Amazon, в частности S3.

(источник http://sankarsuresh.wordpress.com/2005/11/24/postcrossing/, http://codemonkey.ravelry.com/2010/03/24/ravelry-runs-on-2010/)

Немного о статистике:

На данный момент на проекте зарегистрировано более 480 тысяч пользователей из 212 стран. При помощи проекта было получено более 24,5 миллионов открыток, из них 15,5 миллионов были опубликованы на сайте. На июнь 2014 года количество уникальных посещений составляет 18 тысяч.

(источник http://www.postcrossing.com/stats/postcards, http://www.postcrossing.com/stats/users)

Eventfinder (социальная сеть) Использованные технологии: В 2006 году проект перешел на связку PHP как язык программирования и Symfony как фреймворк. Хостинг — ICONZ. За основную систему управления базами данных взята MySQL.

(источник http://www.scoop.co.nz/stories/SC0606/S00050.htm)

Немного о статистике:

В штате работает 18 человек. Проект имеет около 800 тысяч уникальных посещений в месяц, из них в день — более 25 тысяч. А также ежедневно просматриваются более 75 тысяч страниц.

(источник http://eventfinder.co.nz.w3snoop.com/)

Таким образом, хотя некоторые специалисты PHP сильно критикуют в последнее время, но на нем до сих пор много серьезных проектов. В данном случае в статье приведен обзор проектов на конкретном фреимворке, а их на PHP очень много и они очень разные, всего на этом языке проектов очень много. Главное для реализации качественной технической основы проекта — хорошие программисты, а делать можно на разных языках и фреимворках, которые, кстати, лучше всего подбирать под конкретные задачи и часто нужно делать смесь технологий для максимального эффекта. Symfony отлично подходит для средних и больших проектов, хотя и имеет ряд недостатков.

Вообще, на Symfony существует много проектов. И многие из них используются для разработки. Например, для e-commerce проектов есть Sylius (сразу скажу, что к проекту отношения мы не имеем, чтобы не приняли за рекламу. Это просто пример). Весьма интересное решение. Можно сказать, что это один из немногих бесплатных и хорошо проработанных бандлов, основанных на Symfony. Возможно, не удастся разобраться в нем сразу, и придется потратить время и усилия, однако все это с лихвой окупается множеством уникальных возможностей, предоставляемых как отдельными его компанентами, так и системой в целом. Разобравшись в функциональности и идеях определенных бандлов, входящих в Sylius, вы можете захотеть применить их в других проектах, отличных от e-commerce.

Оставайтесь с нами, мы будем продолжать писать про PHP и другие технологии. В комментариях можно предлагать темы, самые интересные мы разберем.

© Habrahabr.ru