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

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

    Таблица известных проектов (на основе данных http://builtwith.com/), кликабельно:

    image

    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)

    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)

    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 и другие технологии. В комментариях можно предлагать темы, самые интересные мы разберем.

    Курсы PHP / Symfony. В нашей школе на днях стартует пятимесячный курс обучения «Хочу стать Junior PHP Developer!» и «Symfony 2. Гибкая разработка». Чтобы записаться пишите на info@digitov.com

    Новые статьи Чтобы получать наши новые статьи раньше других или просто не пропустить новые публикации — подписывайтесь на нас в Facebook, VK и Twitter.

    Авторы:
    Андрей Астафьев, Middle Project Manager, Компания «SECL GROUP» / «Internet Sales Technologies»
    Никита Семенов, президент, Компания «SECL GROUP» / «Internet Sales Technologies»

    SECL Group

    46,00

    Делаем стартапы успешными!

    Поделиться публикацией
    Комментарии 25
      +3
      Хорошо бы еще указать Symfony 1 или Symfony 2.
        +3
        Я думаю, большинство Symfony 1. Это большие и старые проекты, а второй Symfony вышел не так давно. Кстати, число логически предположить, больше проектов на аналоге Symfony — фреимворке Zend. Потому как во времена Symfony 1 и Zend 1 второй был лучше, а сейчас наоборот.
          0
          Поспорил бы на счет «наоборот».
          С ZF вопрос, как всегда, в приготовлении.
            +1
            На ZF 2 дольше, чем на ZF1. Мы раньше писали на зенде, после выхода вторых версий перешли на симфони…
              –1
              У меня абсолютно противоположный опыт (использовал SF1 и перешел на ZF2) =)
              Хотя SF1 и ZF1 использовались примерно одинаково, сейчас же полностью на ZF2.

              А учитывая некоторые заскоки Фабиена, использовать SF2 вообще не предвидится возможным лично мне.
                0
                Я выше описался. ZF1 был лучше, чем Symfony1 (на зенде быстрее), а во вторых версиях Symfony2 лучше, по сравнению с ZF2 (стало быстрее на симфони)
                  0
                  Я так и понял, хотя все равно не совсем понимаю, что там дольше стало в ZF2 и что быстрее на SF2 =)
                    0
                    «стало быстрее» — быстрее разрабатывать или производительность сайта в production лучше?
                      0
                      Быстрее разрабатывать
                  0
                  Дольше, зато качественнее. И с выходом ZF3 возможно он снова аозьмет первенство.
                    0
                    Возможно. Посмотрим.
            –7
            >Высоконагруженные…

            >Yahoo! Bookmarks ежемесячно посещают более 500 тыс. пользователей

            дальше читать не стал
              +12
              А зря, там есть разные сайты) Сейчас поставлю порно сайт на первое место, чтобы никто не пугался, там точно все ок с нагрузками ;)
                +7
                Все, порносайт на первом месте. Самый посещаемый сайт из всех. Так лучше? Теперь статья стала интереснее?)
                  +4
                  да, гораздо лучше. Теперь сайт станет еще более посещаемым )
                    +4
                    хм… а ведь идея… нужно сделать обзор технологий порно-сайтов. И про работу и с досугом :D
                    +3
                    Теперь у меня появился железный аргумент в пользу симфони, спасибо!
                      +1
                      это хилый аргумент,
                      принципиально важен не фреймворк а архитектура.
                      ну и последнее, еще хорошо бы видеть для сравнения каково кол-во серверов и желательно по ролям (WEB-морда, БД, статика, бэдграунд/скрипт-сервер), которое справляется с данной нагрузкой
                        0
                        Там много серверов))
                          0
                          Порно сайт это хилый аргумент?
                    +1
                    Используем Synfony 1 в своем проекте. Нагрузка около 60000 посещений в день. Используем 2 сервера. ОДин — БД (Postgres, mongo), второй — Nginx+PHP. Средний LA на фронте 4 балла
                      0
                      Ссылочку в студию!
                    +2
                    Используем Symfony2. Посещений ~60тыс за день (150к просмотров). Фронты — nginx в нескольких географических ДЦ, Varnish в качестве реверс-прокси с ESI, далее несколько бэкендов на nginx+fpm. Помимо этого, внутри находится мощная SOA сеть из сервисов (около 15инстансов) на базе Symfony2 и шина с очередью сообщений и событий.

                    Сайт: www.alpari.ru
                      0
                      С такими успехами скоро наберем проектов в рунете на отдельный обзор!

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

                    Самое читаемое