# 400 миллионов просмотров и 50 сотрудников: как рос Facebook в 2005 году

Источник: https://www.youtube.com/watch?v=xFFs9UgOAlE
Канал: CS50
Опубликовано: 04.04.2014

---

В декабре 2005 года Марк Цукерберг, основатель Facebook, выступил перед студентами курса CS50 в Гарвардском университете [0:11]. На тот момент проект объединял более 2000 учебных заведений, а штат компании едва превысил 50 человек [16:05].

## 🛠️ Технический старт и выбор инструментов
[[JUMP:02:10]]

Марк Цукерберг запустил Facebook в Гарвардском университете в феврале 2004 года [2:49]. Первую версию сайта он написал на языке PHP. Выбор языка был продиктован простотой: для тех, кто знает C, синтаксис PHP становится понятным за пару дней [2:36].

Когда через две недели после запуска тысячи людей начали регистрироваться, к проекту присоединился Дастин Московиц [3:02]. Хотя Московиц по ошибке сначала купил учебник «Perl для чайников», он освоил нужный PHP за выходные и помог с экспансией в другие школы [3:29].

На старте создатели арендовали один сервер за 100 долларов в месяц вне кампуса [7:04]. Марк Цукерберг решил не повторять прошлых ошибок, когда из-за запуска предыдущего проекта в стенах общежития администрация Гарварда пыталась исключить его из университета [7:11].

## 📐 Архитектура распределенных данных
[[JUMP:03:57]]

Главной технической сложностью Facebook стал расчет социальных связей. Цукерберг объяснил, что вычисление «друзей друзей» требует огромных ресурсов [4:57]. Если искать связи на глубине третьего или четвертого круга, сложность вычислений растет экспоненциально (Big O notation) [5:10].

Чтобы избежать краха системы, который погубил соцсеть Friendster, разработчики Facebook приняли следующие решения:

*   Разделение базы данных по школам: для каждого учебного заведения создавался отдельный экземпляр MySQL [6:20].
*   Локализация вычислений: поскольку 90% взаимодействий пользователя происходят внутри его школы, расчеты ограничивались базой в 10 000 человек вместо общих 6 миллионов пользователей [6:35].
*   Линейное масштабирование: такая структура позволяла добавлять новые серверы по мере роста количества школ без экспоненциальных затрат [7:31].

## 📈 Проблемы роста и производительности
[[JUMP:07:45]]

После подключения 30–50 школ стандартные настройки Apache и MySQL перестали справляться [7:45]. Если база данных и веб-сервер работали на одной машине, сбой приводил к полной недоступности страниц [8:10].

Для решения проблем масштабирования команда внедрила новые подходы:

*   Балансировка нагрузки: веб-серверы Apache выделили в отдельный пул, распределяя запросы между ними [9:09].
*   Кэширование данных: при достижении 100 миллионов просмотров страниц в день возникли задержки в MySQL (2–4 миллисекунды на запрос) [10:48].
*   Собственные решения: команда использовала Memcached для ускорения доступа до 0,3–0,5 миллисекунд, но позже доработала его для обеспечения избыточности данных [11:35].

В 2005 году Facebook генерировал 400 миллионов просмотров страниц в день [16:05]. Для сравнения, Google в тот же период обслуживал около 250 миллионов просмотров, имея тысячи сотрудников и огромные серверные мощности [15:52].

## 👥 Философия найма и управления
[[JUMP:18:56]]

Основным ресурсом компании Марк Цукерберг назвал интеллект, а не узкоспециализированные навыки [19:09]. Он предпочитает нанимать людей сразу после колледжа, считая, что умный человек способен быстро освоить любую технологию через интернет [35:13].

Его подход к управлению включает несколько принципов:

1.  Меритократия: инженеры, предлагающие лучшие решения с минимумом багов, получают право работать над самыми интересными задачами [32:16].
2.  Итеративность: продукт не обязан быть идеальным с первого раза. Цукерберг привел в пример Microsoft, чьи продукты становятся по-настоящему хорошими только к четвертой версии [33:24].
3.  Отсутствие бюрократии: в компании на тот момент было всего 50 сотрудников, что позволяло сохранять гибкость и скорость разработки [16:05].

На вопрос о юристах Марк Цукерберг ответил, что в начале пути они только мешают [21:26]. По его мнению, лучше сначала сделать что-то крутое и извиняться позже, чем тратить время на юридическое оформление и не запустить ничего [22:40].

## 🛡️ Приватность и социальные алгоритмы
[[JUMP:39:13]]

Facebook строился на принципе ограниченного доступа: профиль пользователя могли видеть только люди из того же университета [39:54]. Это создало доверительную среду, где люди не боятся оставлять свои номера телефонов [40:48].

Для защиты данных от автоматического сбора (скрейпинга) команда внедрила:

*   Байесовские фильтры для выявления подозрительной активности пользователей [45:54].
*   Преобразование адресов электронной почты в изображения, чтобы их нельзя было скопировать текстом [51:13].
*   Социальное давление: использование реальных имен и почтовых адресов снижает количество порнографии и спама без жесткой модерации [1:04:44].

## 📸 Эволюция функций и будущее
[[JUMP:27:32]]

Запуск функции фотографий показал важность понимания контекста. Facebook обошел сервис Flickr по количеству загрузок за три недели благодаря функции тегов [25:39]. Теги работают только при условии, что в системе зарегистрированы почти все знакомые пользователя (97% студентов Гарварда на тот момент) [54:23].

При разработке фото-сервиса возникли сетевые ограничения. Чтобы не перегружать роутеры файлами по 3 Мб, команда создала Java-апплет для сжатия снимков на стороне клиента [30:04]. Позже пришлось внедрить кэширование на границе сети (Akamai), так как собственные серверы не справлялись с нагрузкой в 100 загрузок в секунду [30:16].

В планах компании на конец 2005 года стояло уточнение типов отношений [48:57]. Вместо рейтинга дружбы от 1 до 10 Цукерберг предложил использовать факты: совместное проживание в общежитии или посещение одного учебного курса [50:32].