Россия:
+7 (499) 346-87-75
Украина:
+380 (32) 253-96-65
09.04.2014

Высоконагруженные сайты и приложения на Python / Django.

Наша компания довольно давно занимается разработкой больших веб-приложений на Python / Django. В рунете крайне мало информации об этом замечательном языке программирования и фремворке на его основе. Мы решили исправить эту ошибку и рассказать о популярных высоконагруженных сайтах на этой технологии, а также дать много интересных технических подробностей. Для удобства сравнения сайтов между собой мы приводим еще и немного статистики к каждому из проектов. В целом сайтов на Python / Django, конечно, очень много в мире, мы охватим только наиболее интересные по нашему мнению.

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

Website name Link Language CMS/Framework TYC/PR Server Hosting Providers Analytics and Tracking JavaScript Libraries Widgets Other Media Mapping
Pinterest https://www.pinterest.com/ Python Django 5600/9 nginx Amazon Google Analytics, Facebook Domain Insights, Optimizely Facebook, jQuery, Backbone.js, Modernizr Pinterest, Facebok Like, Facebook Facepile, Imgur Javascript, CSS, Iframe Vimeo
Disqus http://disqus.com/ Python Django 4000/9 nginx Softlayer New Relic, Google Analytics, comScore, Mixpanel Sentry, Underscore.js, jQuery, Modernizr, selectivizr, RequireJS Wufoo, Typography, Disqus Javascript, CSS, Iframe, HTML5
Instagram http://instagram.com/ Python Django 12000/9 nginx Amazon Compuware Analytics, Google Analytics, Facebook Domain Insights ECMAScript 5 Shim, HTML 5 Shiv, jQuery Facebook Like Javascript, CSS, HTML5
Mahalo http://www.mahalo.com/ Python Django 120/6 nginx Facebook Domain Insights, Google Analytics, Quantcast Measurement Facebook SDK, Backbone.js, jQuery Google Plus One Platform Javascript, CSS, HTML5
Bitbucket https://bitbucket.org/ Python Django 850/7 nginx NTT America New Relic, Google Analytics Underscore.js, jQuery, Mustache, Backbone.js, RequireJS reCAPTCHA, Typekit Javascript, CSS, Iframe, HTML5
Lanyrd http://lanyrd.com/ Python Django 50/6 nginx Softlayer Facebook Domain Insights, Google Analytics, KISSmetrics LinkedIn Platform API, Twitter Platform, Facebook SDK, WebFont Loader, Mustache, jQuery Facebook Like, Google Plus One Platform, Twitter Tweet Button, LinkedIn Share Plugin, Fontdeck Iframe, Javascript, CSS, Meta Keywords, Facebook Page Administration, HTML5 jPlayer MapBox, Google Maps
Mozilla http://www.mozilla.org/, https://support.mozilla.org Python Django 9000/9 Apache Optimizely, Google Analytics Modernizr, PNG Fix, jQuery, matchMedia Facebook Like/Sharer, Google Custom Search Twitter Cards, Meta Description, CSS, Javascript
The Onion http://www.theonion.com/ Python Django 375/7 Microsoft, Personal, Web Server Linode Facebook Domain Insights, Google Analytics, Quantcast Measurement, Safe Count, Dynamic Logic, comScore, Optimizely Twitter Platform, jQuery, Facebook SDK, Backbone.js Twitter Timeline, BuzzFeed, Typekit, Facebook Like Box, Press Plus Mobile Optimized, Meta Description, iFrame, HTML5, CSS, Javascript
Everyblock http://www.everyblock.com/ Python Django 35/7 nginx Amazon Facebook Domain Insights, Google Analytics jQuery Cookie, jQuery Google Font API, Webtype, Facebook Like, Tweeter Tweet Button Javascript, CSS, Iframe
Giant Bomb http://www.giantbomb.com/ Python Django 120/6 nginx Amazon New Relic, Nielsen//NetRatings, comScore, Google Analytics, Omniture SiteCatalyst jQuery/UI, SWFObject, Twitter Platform, Modernizr, Backbone.js Typekit, Facebook Like, Tweeter Tweet Button, ZeroClipboard Javascript, CSS, Iframe, HTML5
ComicVine http://www.comicvine.com/ Python Django 70/6 nginx Amazon New Relic, Nielsen//NetRatings, comScore, Google Analytics, Omniture SiteCatalyst jQuery/UI, SWFObject, Twitter Platform, Modernizr, Backbone.js TRUSTe, Facebook Like, Outbrain Content Rating Javascript, CSS, Iframe, HTML5
Michael Moore http://michaelmoore.com/ Python Django 110/6 nginx Amazon Quantcast Measurement, Google Analytics Twitter Platform, jQuery/UI, BBC Glow, SWFObject Twitter Timeline, Thickbox, AddThis XHTML, CSS, Iframe, Javascript YouTube, JW Player
National Geographic http://www.nationalgeographic.com/ Python - 2100/8 nginx, Apache Internap, Akami Hosted Core Audience, CrazyEgg, Google Analytics, New Relic, Nielsen//NetRatings, Facebook Domain Insights, SkyGlue SWFObject, RequireJS, jQuery/Cookie, Twitter Platform, Facebook SDK, Backbone.js Facebook Like/Sharer, AddThis, Twitter Tweet Button, LiveFyre Google Chrome IE Frame, CSS, HTML5, Javascript, XHTML, Pinterest No Pin, Twitter Cards Vimeo, jPlayer
Discovery http://www.discovery.com/ Python Django 0/8 Apache - Facebook Domain Insights, Nielsen//NetRatings, Dynamic Logic, Google eCommerce Conversion Tracking jQuery Smart App Banner, Facebook Like, Google Tag Manager Facebook Page Administration, Twitter Cards, HTML5, Iframe, CSS, Javascript - -
Dropbox https://www.dropbox.com/ Python - 4900/8 nginx - Facebook Domain Insights, Google Analytics jQuery, Lightbox, Facebook, Modernizr, SWFObject, Prototype Facebook Like Javascript, CSS, Iframe, HTML5, XHTML - -
Google https://www.google.com Python - - - - - - - Javascript, X-Frame-Options, HTML5 - Google Maps
The Guardian http://www.theguardian.com/ Python - 5800/8 nginx, Apache - MediaMath, Facebook Domain Insights, Google Analytics, Omniture SiteCatalyst, Buysight, Quantcast Measurement Twitter Platform, jQuery, Google API, SWFObject, Underscore.js, RequireJS Pinterest, Google Plus One Button, Twitter Tweet Button, LinkedIn Share Plugin, Facebook Like HTML5, XHTML Iframe, Twitter Cards, Javascript, CSS, Google Chrome IE Frame JW Playertd> -
The Washington Post http://www.washingtonpost.com/ Python, PHP - 3500/8 nginx, Apache nLayer Communications, Akami Hosted Google Analytics, Moat, Krux Digital, New Relic, Omniture SiteCatalyst Underscore.js, jQuery, Prototype, Twitter Platform, Yahoo User Interface, Facebook SDK, JSON Pinterest, Twitter Timeline, Google Font API, AddThis, Facebook Sharer, Facebook Like,Google Plus One Platform Facebook Page Administration, HTML5, Iframe, CSS, Javascript JW Player, Tube Mogul, Ooyala -
The New York Times http://www.nytimes.com/ Python - 6300/9 Apache, Sun ONE Web Server - Google Analytics, Moat, Krux Digital, OpinionLab Facebook SDK, Twitter Platform, jQuery, Facebook, Underscore.js, Backbone.js, Mustache Twitter Timeline, Facebook Like Box, Typekit, NextGEN Gallery Javascript, CSS, Iframe, HTML5, XHTML Livestream, Brightcove -
Yelp http://www.yelp.com/ Python Django 500/7 Apache - Facebook Domain Insights, Google Analytics - Facebook SDK, jQuery, Yahoo User Interface, LABjs Javascript, CSS, Iframe, HTML5 Ooyala Google Maps
Reddit http://www.reddit.com/ Python - 3500/8 - Amazon, Akamai Hosted Google Analytics Backbone.js, jQuery Imgur Javascript, CSS, Iframe, HTML5, XHTML - -
Facebook https://www.facebook.com/ Python, PHP - 170000/9 - - - - Facebook Like CSS, Javascript, HTML5 - -
Rdio http://www.rdio.com/ Python Django 80/8 nginx Level 3 Communications Optimizely, Google Analytics, Microsoft Adcenter, Omniture SiteCatalyst, New Relic LESS, Twitter Platform, Facebook SDK, jQuery, Modernizr, Backbone.js Twitter Follow Button, Facebook Like Button, Google Font API, Typekit Javascript, CSS, Iframe, HTML5 - -
Globo http://www.globo.com/ Python Django 700/7 Varnish - Google Analytics, comScore jQuery Facebook Like HTML5, Javascript, Iframe, CSS - -
Pitchfork http://pitchfork.com/ Python Django 325/7 Varnish, nginx Amazon New Relic, Google Analytics, comScore, Quantcast Measurement, Chartbeat Head JS, Facebook SDK, Google JS Api, Twitter Platform, jQuery Typekit CSS, Javascript, HTML5 - -
Politifact http://www.politifact.com/ Python Django 80/8 Varnish, nginx Amazon Google Analytics, Krux Digital, comScore, Facebook Domain Insights, Moat RequireJS, Facebook, jQuery, SWFObject, Backbone.js Lijit Widget, TRUSTe, Facebook Like Iframe, Facebook Page Administration, CSS, Javascript, XHTML - -
Foursquare https://foursquare.com/ Scala, Python - 2700/9 nginx Amazon Google Analytics Facebook, jQuery, IE Pinning - HTML5, CSS, Javascript - -
Quora http://www.quora.com/ Python - 325/7 - Amazon Google Analytics, Facebook Domain Insights Facebook SDK, jQuery Facebook Facepile/Like Javascript, CSS - -

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/)

Yelp (портал с элементами социальной сети)

Использованные технологии:

За основную операционную систему взят 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/)

Foursquare (социальная сеть с функцией геопозиционирования)

Использованные технологии:

Проект написан на нескольких языках, в том числе и 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/)

Quora (социальный сервис «Вопросы и ответы»)

Использованные технологии:

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 будет одним из наилучших вариантов.

Курсы Python. В нашей школе стартует пятимесячный курс обучения «Разработка веб-приложений на Python / Django» - еще есть несколько мест. Чтобы записаться пишите на info@digitov.com.

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

P.P.S. Совсем скоро в нашей бизнес-школе Digitov стартуют курсы: Хочу стать Junior PHP Developer!, Symfony 2. Гибкая разработка и Ruby on Rails. По рельсам к профессиональной разработке. Подписывайтесь на курсы сейчас и сможете купить их со скидкой.

Автор

Андрей Астафьев
Андрей Астафьев
Middle Project Manager, компания SECL Group / Internet Sales Technologies
+7 (499) 346-87-75 info@secl.com.ua
ВВЕРХ
Форма заказа