Архитектура YouTube 2012

Выбирайте самое простое решение с наиболее общими гарантиями, которые практически полезны.
— Дао YouTube

 

YouTube практически на протяжении всех 7 лет своего существования является мировым лидером в сфере интернет-видео. С точки зрения технической реализации проект оказался достаточно консервативным — команда придерживается того же курса и стека технологий, с которых все начиналось еще до приобретения проекта Google. Но с 2008 года, когда я написал первый обзор архитектуры YouTube, все же произошли интересные изменения, о которых я и хотел бы сегодня вкратце рассказать.

Tornado

Tornado - масштабируемый неблокирующий HTTP-сервер на основе epoll, написанный полностью на Python. Изначально он был разработан в рамках проекта FriendFeed, на сегодняшний же день его поддержкой занимается Facebook. Сегодня я хотел бы рассказать о том, как с его помощью можно быстро и легко создавать веб-проекты на Python, которые в дальнейшем будет относительно легко горизонтально масштабировать.

Erlang в интернет-проектах

С моей точки зрения, Erlang — один из наиболее продуманных языков программирования. Его создатели выбирали каждую деталь и особенность реализации так, чтобы сделать его идеальным для решения вполне конкретных телекоммуникационных задач, с которыми они сталкивались в 80-90-х годах. Во многом из-за этого он так и не стал универсальным языком программирования как C++, Python и другие, а так и остался спустя многие годы специализированным инструментом. Сегодня спрос и предложение на специалистов по Erlang на рынке труда относительно малы, что для большинства проектов является основным аргументом против Erlang, хотя порой они и сталкиваются с задачами, где он запросто бы стал тем самым «идеальным инструментом». В этой статье я хотел бы обсудить, в каких именно ситуациях применительно к интернет-проектам использование Erlang оправдано и почему. Но начать придется издалека — с того, чем же он так уникален.

Основы Erlang: синтаксис и пунктуация

Мои теоретичесие рассуждения о месте Erlang в Интернете Вы можете почитать в отдельной статье. Если сомневаетесь интересно Вам это все или нет — то прочтите сначала её. Сегодня я постараюсь вернуться с небес на землю и пройтись по азам этого пугающего многих языка программирования. Коротко и по делу.

Piccolo — это система для распределенных вычислений, использующая новую ориентированную на данные модель программирования для разработки приложений по параллельным вычислениям в памяти в масштабах дата-центров. В отличии от существующих моделей, основывающихся на потоках данных, Piccolo позволяет вычислениям выполняться на различных машинах, при этом имея общее изменяющееся состояния через интерфейс таблиц пар «ключ-значение». Традиционные ориентированные на данные модели (такие как используются в Apache Hadoop) предоставляют пользователю для работы лишь единственный объект в определенный момент времени, когда в Piccolo используется глобальная таблица состояний, одновременно доступная для всех частей вычисления. Это позволяет пользователям указывать алгоритм вычисления в интуитивно-понятной манере, очень похожей на разработку программ для одного компьютера.

Горячая замена кода

Для начала давайте разберемся в том, что же вообще такое «горячая замена кода»  (hot code replacement или hot code swapping)? По сути это возможность обновить (или откатить) код работающей программы без её перезапуска и, как следствие, периода недоступности, потери состояния и повторной инициализации.

RabbitMQ

Когда веб-приложение перестает быть просто коллекцией скриптов, генерирующих HTML, встает вопрос о взаимодействии различных компонентов системы. Есть два основных подхода:

Redis: подробный обзор

На сегодняшний день ассортимент решений для хранения данных очень широк: от встраиваемых СУБД до кластерных распределенных систем. SQL перестал быть стандартом де-факто для доступа к данным, а альтернативные решения давно переросли примитивные хранилища пар ключ-значение. Сегодня я хочу вкратце рассказать об одном из таких решений, продукте, который нашел свое место во многих моих проектах за последние годы, Redis.

Является ли использование продукции Microsoft причиной провала MySpace?

Как известно, MySpace появилась на рынке даже несколько раньше, чем Facebook, с практически аналогичным продуктом. Но при этом на сегодняшний день Facebook — общепризнанный лидер рынка социальных сетей, а MySpace даже далеко не все слышали название. С технической точки зрения у проектов совершенно разные подходы: Facebook построен на opensource технологиях, типичный LAMP, MySpace же полностью использует стек от Microsoft. Некоторое время назад в зарубежной блогосфере зародилась оживленная дискуссия на тему: а не выбор ли закрытых технологий стал основной причиной проигранной MySpace «гонки»  социальных сетей?

Аналитика в реальном времени от Facebook

HBase в Facebook завоевывает все более и более крепкие позиции, в прошлый раз я рассказывал о применении HBase в роли системы хранения данных для их новой системы обмена сообщений. Вторым продуктом, который теперь полноценно использует данную технологию, является система сбора и обработки статистики в реальном времени под названием Insights. Социальные кнопки (см. слева от поста) стали одним из основных источников трафика для многих сайтов, новая система аналитики позволит владельцам сайтов и страниц лучше понимать как пользователи взаимодействуют и оптимизировать свои интернет-ресурсы, основываясь на данных в реальном времени. Итак, 20 миллиардов событий в день (200 тысяч в секунду) с задержкой не более 30 секунд, как же можно этого достичь?

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

Как работает epoll?

Слово epoll сейчас определенно на слуху, в первую очередь благодаря росту популярности неблокирующих HTTP-серверов. При этом мало кто пытается разобраться в том, что, собственно, за ним стоит и почему использующие этот механизм продукты, среди которых достойное место занимают, например, nginx, node.js и Tornado, так значительно выигрывают в производительности у ближайших альтернатив. Хотите копнуть глубже?

Путеводители по сайту для  crawler -ов:

 

Постоянное соединение между браузером и сервером

 

Постоянное соединение между браузером и сервером

В статье про клиентскую часть интерактивного интернет-проекта мы подошли к вопросу возможности использования двухстороннего постоянного соединения между сайтом и JavaScript-клиентом для синхронизации их состояний. Такое соединение представляет собой канал для обмена сообщениями в реальном времени между браузером и серверным процессом, причем каждая сторона может быть инициатором отправки сообщения и имеет некую логику реакции на получаемые сообщения.

 

Повторное использование шаблонов

Лень — двигатель прогресса

 

Сегодня мы рассмотрим способ, позволяющий немного упростить себе жизнь при создании интерактивного сайта путем повторного использования шаблонов. Визуально результат будет примерно таким же, как при дублировании бизнес-логики в браузере, но ценой существенно меньших трудозатрат на разработку JavaScript-клиента, да и на серверной части тоже. Хотите узнать как это провернуть?

Серверная часть интерактивного сайта и потоки сообщений

Вернемся к теме интерактивных сайтов с обратной стороны, серверной. В ней есть огромный простор для творчества, так как в отличии от клиентской части отсутствуют ограничения, накладываемыми браузерами. С «простором» же приходит и неоднозначность/неопределенность, вариантов как реализовать одно и то же множество, так что возможно приводимые мной примеры Вам окажутся не по душе  - и это нормально, правильный путь не единственный, их много

В предыдущей статье мы, используя только верстку, сделали кнопку “включить/выключить”, и вот что у нас тогда получилось:

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

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

Статья не претендует на подробный анализ потенциальных проблем, это просто рассказ из жизни одно реального Android приложения.

 

Хак поиска кратчайшего пути в StarCraft

 



Один из ведущих разработчиков Warcraft и Starcraft Патрик Вайат периодически публикует воспоминания о своей работе в компании Blizzard в 90-е годы. Очень интересно посмотреть изнутри на процесс разработки игр, которые стали впоследствии культовыми. В последней заметке Патрик поведал замечательную историю, как пришлось впопыхах исправлять баги в StarCraft перед выпуском игры и что из этого получилось. 

Вверх