Высоконагруженные сайты и приложения на Python / Django
- Pinterest (cоциальная сеть)
- Немного о статистике:
- Disqus (сервис)
- Instagram (фото- и видео-приложение)
- Reddit (новостной сайт)
- Dropbox (облачное хранилище данных)
- Pitchfork (музыкальный электронный журнал)
- Lanyrd (портал)
- Mozilla (программное обеспечение)
- Yelp (портал с элементами социальной сети)
- Foursquare (социальная сеть с функцией геопозиционирования)
- Rdio (музыкальный сервис)
- Google (поисковая система)
- Quora (социальный сервис «Вопросы и ответы»)
- Подведем итог
Эта статья впервые опубликована в издании Хабрахабр от 10 Апреля 2014. Тут публикуется полная её версия.
Наша компания довольно давно занимается разработкой больших веб-приложений на Python / Django. В рунете крайне мало информации об этом замечательном языке программирования и фремворке на его основе. Мы решили исправить эту ошибку и рассказать о популярных высоконагруженных сайтах на этой технологии, а также дать много интересных технических подробностей. Для удобства сравнения сайтов между собой мы приводим еще и немного статистики к каждому из проектов. В целом сайтов на Python / Django, конечно, очень много в мире, мы охватим только наиболее интересные по нашему мнению.
Небольшая таблица известных проектов (на основе данных http://builtwith.com/):
Pinterest (cоциальная сеть)
Использованные технологии:
Python как язык программирования и в качестве фреймворка был выбран Django. Хостинг – Amazon. За основную систему управления базами данных взята MySQL, кэширование объектов выполняет memcached, а коллекций объектов – Redis. Solr используется как поисковая платформа, а Hadoop – для реализации поисковых и контекстных механизмов, анализа данных.
Немного о статистике:
В штате работают более чем 140 сотрудников по последним данным. Около 11-ти миллионов уникальных посетителей в неделю на декабрь 2011. 500 виртуальных машин в EC2, 410 Терабайт пользовательских данных или 80 миллионов различных объектов хранится в Amazon S3. На июль 2013 года Pinterest имеет около 70 миллионов пользователей, согласно французскому агентству Semiocast. Итого, Pinterest становится 4-ой по популярности социальной сетью в США после Facebook, Twitter и LinkedIn.
(http://en.wikipedia.org/wiki/Pinterest)
(оригинал http://www.businessinsider.com/how-we-scaled-pinterest-2013-4?op=1, http://highscalability.com/blog/2012/5/21/pinterest-architecture-update-18-million-visitors-10x-growth.html)
Disqus (сервис)
Использованные технологии:
Python как язык программирования и в качестве фреймворка был выбран Django. Операционная система – Linux. За основную систему управления базами данных взята PostgreSQL, кэширование объектов выполняет memcached, как и в случае с Pinterest. За балансировку нагрузки отвечает HAProxy, за репликацию данных – Slony.
Немного о статистике:
В штате работают 33 человека. Число зарегистрированных пользователей растет и на данный момент составляет 50 миллионов человек. Сайт получает примерно 17 тысяч запросов в секунду. Более 144 миллионов уникальных посещений в месяц только с территории США. Около 750 000 сайтов и блогов.
(источник http://www.insight-it.ru/masshtabiruemost/arkhitektura-disqus/, оригинал http://highscalability.com/blog/2010/10/26/scaling-disqus-to-75-million-comments-and-17000-rps.html, http://en.wikipedia.org/wiki/Disqus)
Instagram (фото- и видео-приложение)
Использованные технологии:
За основную операционную систему взят Ubuntu Linux 11.04. Python как язык программирования в качестве фреймворка был выбран Django. За основную систему управления базами данных взята PostgreSQL, кэширование объектов выполняет опять же memcached, а Redis выступает в качестве дополнительного хранилища данных. За балансировку нагрузки отвечает HAProxy. Проект использует инфраструктуру Amazon, в частности EC2, ELB, Route, S3 и CloudFront. За поисковую платформу взят Solr. Для работы с задачами используется Gearman.
Немного о статистике:
Все начиналось с одного небольшого и слабого сервера и двоих разработчиков. В первый же день было зарегистрировано около 25 000 пользователей. Сегодня же Instagram пользуются более 200 миллионов человек — более 7 миллионов пользователей ежедневно. Около 20 миллиардов фотографий было опубликовано, и 60 миллионов публикуется ежедневно. Facebook приобрел сервис за 1 миллиард долларов в апреле 2012 года.
(источник http://expandedramblings.com/index.php/important-instagram-stats/, http://en.wikipedia.org/wiki/Instagram)
Reddit (новостной сайт)
Использованные технологии:
Python как язык программирования в качестве фреймворка был выбран Pylons. За основную систему управления базами данных взята также PostgreSQL, кэширование объектов выполняет memcached. RabbitMQ используется для автономной обработки данных. За балансировку нагрузки отвечает HAProxy. За поисковую платформу взят Amazon CloudSearch.
(источник http://en.wikipedia.org/wiki/Reddit)
Немного о статистике:
Около 112 миллионов уникальных посещений в месяц. 5,46 миллиардов просмотров страниц в месяц. Reddit пользуются 2,89 миллиона человек. И все это обслуживает команда, состоящая из 28 человек.
(источник http://expandedramblings.com/index.php/reddit-stats/)
Dropbox (облачное хранилище данных)
Использованные технологии:
И Dropbox сервер и клиентское приложение написаны на Python. Клиент использует средства разработки GUI, такие как wxWidgets и Cocoa и другие важные библиотеки Python такие как Twisted, ctypes и pywin32. Dropbox зависит от librsync библиотеки, которая написана на C. Информация о файлах содержится в хранилище, реализованном на базе MySQL. Для хранения самих файлов используется Amazon S3.
(источник http://en.wikipedia.org/wiki/Dropbox_(service))
Немного о статистике:
Штат состоит из 110 сотрудников. Более 50 миллионов зарегистрированных пользователей. Каждые 3 минуты более чем миллион файлов сохраняются с использованием сервиса. 500 миллионов файлов сохраняются ежедневно.
(источник https://www.dropbox.com/static/docs/DropboxFactSheet.pdf)
Pitchfork (музыкальный электронный журнал)
Использованные технологии:
Python как язык программирования в качестве фреймворка был выбран Django. Хостинг – Amazon. Основной системой управления базами данных была выбрана MySQL. В дополнение используется PostgreSQL. За кэширование объектов отвечает Redis. В качестве поисковой платформы используется ElasticSearch и Solr. Также используются сервисы Amazon (EC2, RDS, SES).
(источник http://www.siteclass.com/www/pitchfork.com)
Немного о статистике:
Проект имеет более 14,5 миллионов посещений в месяц (580 тысяч в день), из них 5,5 уникальных (410 тысяч в день). Просмотр страниц составляет 38,5 миллионов в месяц (1,6 миллиона в день). На март-апрель 2014 года количество зарегистрированных пользователей составляет 4,3 миллиона.
(источник https://www.quantcast.com/pitchfork.com)
Lanyrd (портал)
Использованные технологии:
Python как язык программирования и в качестве фреймворка был выбран Django. За основную систему управления базами данных взята PostgreSQL, кэширование объектов выполняет memcached . Redis используется в связке с Celery для хранения промежуточных результатов задач, которые выполняет Celery в асинхроном режиме. За балансировку нагрузки отвечает HAProxy. Проект использует инфраструктуру Amazon, в частности S3. За поисковую платформу взят Solr.
(источник http://www.slideshare.net/InfoQ/inside-lanyrds-architecture)
Немного о статистике:
Команда разработчиков состоит из всего 6 человек, как заявляет Andrew Godwin в своей презентации. Около 900 000 уникальных посетителей в месяц на март 2014 года, максимальное значение было в октябре 2013го и составляло немногим более миллиона посетителей (http://www.trafficestimate.com/lanyrd.com). Ежедневный просмотр страниц составляет около 55 000.
(источник http://www.slideshare.net/InfoQ/inside-lanyrds-architecture)
Mozilla (программное обеспечение)
Использованные технологии:
Компания Mozilla использует различные языки программирования, в том числе и Python, который используется широко: от написания сборочных скриптов до сайта компании, Webmaker и других компонентов, а также сервера синхронизации – минималистичное WSGI приложение использующее Paste для разворачивания на хостинге и Sqlite3 в качестве базы данных.
Немного о статистике:
На сегодняшний день проектами Mozilla пользуются более 500 миллионов человек. Это весьма большой показатель, если учесть конкуренцию. Проектами Mozilla занимаются более тысячи разработчиков.
(источник http://expandedramblings.com/index.php/internet-browser-stats/)
Использованные технологии:
За основную операционную систему взят Ubuntu Linux. Python как язык программирования и в качестве фреймворка был выбран Django. За основную систему управления базами данных взята MySQL. Также Yelp использует сервисы Amazon, в частности S3 для хранения логов и фотографий, и EMR. В качестве поисковой платформы используется Solr/Lucene. За балансировку нагрузки отвечает HAProxy и LVS.
(источник http://engineeringblog.yelp.com/, http://aws.amazon.com/solutions/case-studies/yelp/)
Немного о статистике:
Посещаемость сайта составляет около 200 миллионов человек в месяц, из них порядка 120 миллионов уникальных посещений. (https://www.quantcast.com/yelp.com). За все время работы проекта написано более 53 миллионов отзывов пользователями по всему миру.
(источник http://expandedramblings.com/index.php/yelp-statistics/)
Использованные технологии:
Проект написан на нескольких языках, в том числе и Python, который используется для автоматизации операционных задач и других процессов. CentOS Linux является основной операционной системой. HAProxy отвечает за распределение нагрузки и API-запросов. За основную систему управления базами данных взята MongoDB, кэширование вычислительных процессов выполняет Memcache. Часть информации, а именно пользовательские фотографии, хранится в Amazon S3. Анализом занимается Hadoop. За поисковую платформу взяты Solr и Elasticsearch. Для поиска по гео-индексам используется библиотека s2 от Google в связке с PostGIS. Kestrel отвечает за обработку асинхронных задач.
(источник https://foursquare.com/about)
Немного о статистике:
Штат состоит примерно из 140 сотрудников. По данным за 2013 год проектом занимались около 40 тысяч разработчиков. Пользователей около 45 миллионов. Общее количество чек-инов по всему миру 5 миллиардов, и примерно 3 миллиона добавляется каждый день.
Rdio (музыкальный сервис)
Использованные технологии:
Rdio использует несколько языков программирования. В частности, часть Бэкенда написана на Python и в качестве фреймворка выбран Django. Для хранения информации используется несколько баз данных – MongoDB и MySQL. Redis был выбран в качестве альтернативы memcached.
Немного о статистике:
Каталог из более чем 20 миллионов песен. Ежедневно около 200 тысяч просмотров страниц. На территории Соединенных Штатов около 300 тысяч людей пользуются сервисами проекта в течение месяца.
Google (поисковая система)
Использованные технологии:
Google использует множество языков программирования. Так как создатель Python работал одно время в Google, легко предположить, что и этот язык программирования используется. Так и есть. На Python написана часть YouTube и поискового движка, а также много других компонентов. Вкратце, используется LevelDB как основная система управления базами данных. Также используется Closure для работы с JavaScript, это своего рода набор инструментов, созданный разработчиками Google.
Использованные технологии:
Статистика Google известна всем и везде, но приведем несколько цифр. Ежемесячно через поиск проходит 12,477 миллиардов запросов. Google занимает около 67% поискового рынка Соединенных Штатов. Уникальных посещений за месяц – 191 миллион человек. Штат компании составляет 53,891 человек.
(источник http://expandedramblings.com/index.php/by-the-numbers-a-gigantic-list-of-google-stats-and-facts/)
Использованные технологии:
Python как язык программирования. Хостинг – Amazon. За основную систему управления базами данных взята MySQL, кэширование объектов выполняет memcached. За балансировку нагрузки отвечает HAProxy.
Немного о статистике:
Штат состоит из 72 сотрудников. Число уникальных посещений за февраль 2014 года составляет более одного миллиона. Ежемесячно сервисом Quora пользуются 1,126,00 людей (данные за 2013).
(источник http://www.quora.com/How-much-traffic-does-Quora-get, http://techcrunch.com/2013/11/12/quora-confirms-its-favoring-search-ads-for-eventual-monetization-launches-author-stats-tool/)
Подведем итог
Как видите, довольно много известных проектов использует Python / Django и это вполне оправданно. Python – очень интересный современный язык программирование, который сейчас очень быстро набирает популярность, как на западе, так и в рунете. Про преимущества Python / Django мы уже писали ранее небольшую заметку. На данный момент мы наблюдаем большой спрос на программирование на Python / Django, ведь это качество! Спрос на проекты рождает и спрос на специалистов.
Если Вы хотите разработать высоконагруженный проект, то мы рекомендуем рассмотреть Python / Django в качестве технической платформы. Ну а для коллег, если Вы хотите стать программистом или освоить новый язык программирования – Python будет одним из наилучших вариантов.
P.S. Чтобы получать наши новые статьи раньше других или просто не пропустить новые публикации — подписывайтесь на нас в Facebook, VK, Twitter.