?

Log in

web3_0_ru

Отчет о лекции Роберта Джонсона, директора по разработкам Facebook

« previous entry | next entry »
Oct. 29th, 2010 | 03:36 pm
posted by: student_of_hse in web3_0_ru



Сегодня мы публикуем аж целых два отчета о лекции Роберта Джонсона
"How we scaled to 500 000 000 users", прошедших в пятницу - от нашего
корреспондента Екатерины Левиной и от приглашенного автора, студента
магистратуры факультета бизнес-информатики Ивана Блинкова (автора
блога http://www.insight-it.ru).




1. Екатерина Левина

В пятницу я посетила лекцию директора по разработкам Facebook Роберта
Джонсона "How we scaled to 500 000 000 users" ("Как мы достигли
отметки в 500 миллионов пользователей").

Должна сказать, что перевод должности "директор по разработкам" (в
оригинале director for engineering), а также название лекции, меня
немного, как выяснилось, сбили с толку. Я-то думала, что речь будет
идти про развитие Facebook как социальной сети! А речь пошла про
глубоко технические аспекты - как поддерживать работу сайта, где
количество пользователей огромно и постоянно растет. Хотя и про
маркетинг тоже говорилось.

Он рассказывал, как влияет на стиль работы программистов Фэйсбука
специфика сети - передышек не бывает, ведь количество пользователей
постоянно растет. Каким образом добиться такой работы серверов, чтобы
не было сбоев в работе сайта, и каким образом данные распределяются по
серверам, как сервера взаимосвязаны. Каким образом организована работа
в компании (в небольших группах, не более 10 человек; каждая группа
отвечает за конкретный программный продукт в рамках Фейсбука - за
новостные ленты, за поиск, за фотохостинг). Как распределяется
ответственность (ответственным за любой аспект является человек,
который его создал и способен контролировать, исправить, работать с
ним - так, в случае ошибки в коде ответственность несет программист,
его написавший, а не его менеджер, который в коде не понимает и не
может ни увидеть, ни исправить ошибку).

Он говорил и про маркетинговые аспекты, впрочем, тоже! Например, что
постоянно необходимы какие-то нововведения и нельзя стоять на месте -
конкуренция очень высока. И про различные приемы маркетологического
свойства - например, что изменения вводятся по одному, чтобы
отследить, что, как и на что влияет; что постоянно надо измерять
всякие изменяющиеся данные и выводить статистику. Говорил, что они не
заглядывают далеко в будущее, а стараются делать все что могут на
данный момент. Он отметил, что многие люди используют сайт как
фотохостинг - но что им, создателям, это очень приятно, именно потому,
что их фирменная "фишка" - возможность отметить конкретных людей на
фотке - оказывается пользователям гораздо важнее разрешения и прочих
технических вещей.

На самом деле лекция была очень маленькая, всего полчаса. На ОЧЕНЬ
быстром английском :)

Итогом встречи для меня стали две фразы. Одна - самого Роберта,
который ответил на чей-то вопрос словами: "Фейсбук - это не трата
времени. Это общение".

А вторая - кого-то из зала, кто сказал: "Ребята, вы захватываете мир.
Это пугает".


2. Иван Блинков

(Полная версия поста в
его блоге)

Технических вопросов было довольно мало (что впрочем не удивительно,
т.к. мероприятие проходило в гуманитарном ВУЗе) -- превалировали
вопросы в духе "что вы делаете с профилями умерших людей" (есть
процедура когда друзья/родственники сообщают и если оказывается
правдой то специальным образом перенастраивают аккаунт, чуть ли не
несколько миллионов таких случаев было), "как работает фича Х" (из
интересных фич -- скрытие фоток твоих бывших boy/girlfriend'ов через
face recognition), "как выглядит типичный день разработчика в
Facebook" (2/3 пишут код, остальное -- всякие остальные виды
деятельности), "какие планы развития в России и мире" или "что думаете
о конкурентах" (их позиция -- делать лучший продукт на рынке, и
аудитория сама подтянется), еще спрашивали снимался ли он в фильме, о
котором последнее время в рунете слухи ходят, но Роберт дипломатично
уклонился от ответа. Недавно еще у них открылся небольшой венчурный
фонд для инвестиций в социальные проекты.

Прежде чем читать дальше, настоятельно рекомендую ознакомиться с
архитектурой Facebook
(http://www.insight-it.ru/masshtabiruemost/arkhitektura-facebook/),
здесь я постараюсь особо не повторяться и рассказать лишь об общих
впечатлениях и новых фактах, которые мне удалось услышать и выяснить.

Собственно, что же нового для себя я узнал на мероприятии:

С примерно первой половины года их официальная активная аудитория
повысилась с 400 до 500 миллионов человек. Штат инженеров (т.е.
по-нашему разработчиков и сис. администраторов) увеличился до ~500
человек, примерно стало понятно как они распределены.

- Основной принцип: много небольших узкоспециализированных команд,
которым даны полномочия принимать решения и проводить полностью
продукт от стадии идеи до стадии реализации.Около половины работают в
<<продуктовых>> командах, до 5-10 человек в каждой (фотографии, поиск,
личные сообщения, и.т.п.)

- Ряд команд, занимающихся общими вопросами (например 4 человека
работают над оптимизацией MySQL, еще есть команды по безопасности,
приватности, производительности).

- Нестрогий менеджмент, 2 уровня управления. Используются аппаратные
балансировщики нагрузки от F5 + некое опенсорсное решение, сказал что
возможно nginx, но он не уверен. Виртуализация совсем не используется
-- на таком масштабе она не актуальна. MySQL-сервера используют
подключенные напрямую массивы дисков (direct attached storage). По
вопросам мониторинга кое-где используются nagios и ganglia, но большая
часть данной подсистемы написано самостоятельно

- Десятки тысяч серверов и десятки гигабит трафика, более точных цифр, к
сожалению, не дали.

- Коммерческого программное обеспечение практически не используется, по
большей части собственные разработки и в ключевых местах opensource

- Сам спросил про датацентры: Santa Clara, California -- master (названия
мест плохо расслышал, поправьте если ошибаюсь)
Ashburn, Virginia -- read-only slave

- За пределами США присутствие очень небольшое, по паре стоек в
нескольких странах -- если я правильно понял, то для кэширования
статики, т.е. своя CDN.

- Помимо этого мне было интересно про репликацию между ними:
используется модифицированный механизм встроенной репликации MySQL

- Основные доработки: передача помимо собственно данных списка
идентификаторов объектов, которые следует инвалидировать из-за
текущего обновления + какая-то хитрая система расстоновки флагов о
текущем состоянии процесса репликации

- DDoS их особо не волнует -- сколько-либо серьезных попыток они не
встречали, защита аппаратная на уровне ДЦ, как я понял.

- Намного больше внимания уделяется модерации контента и борьбе со спамом

- Развертывание делается максимально плавно, как в плане обновления
софта, так и в плане выкатывания новых версий кода сайта (упоминал в
статье про архитектуру)

- Их позиция касательно opensource:  aктивно использовать и возвращать
взамен с улучшениями.
Facebook выгодно возвращать вносимые изменения в популярные opensource
проекты, так как они не считают их конкурентным преимуществом (ну и
лицензии никто не отменял)

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

- Свои проекты также активно публикуются, так как организации вроде
Apache Software Foundation берут на себя многие вопросы по поддержке и
развитию кода

- Apache Hadoop как уже многие писали используется как хранилище и
оффлайновый обработчик данных вроде логов, Hive родился как надстройка
для упрощения доступа

- Хоть сотрудники Facebook и реализовали проект Cassandra, про который
активно спрашивали в комментариях на хабре, но они его
практически не используют у себя. Как известно он опубликован в
opensource и поддерживается ASF. В Facebook он
используется (использовался?) только как хранилище для поиска по
внутренним сообщениям, мотивация: очень быстрая запись, недостаточная
производительность операций случайного чтения.

- На вопрос про основной дистрибутив линукс и вендоров оборудования он
был не особо уверен, но сказал что скорее всего использутся CentOS и
они работают с несколькими основными вендорами серверов (HP, IBM,
Dell) -- свое оборудование (как Google) они не изобретают, так как не
считают целесообразным

- Используется довольно сильно модифицированное ядро ОС, особенно по
части сетевого стека.

Link | Leave a comment | Share

Comments {0}