В декабре 2005 года Марк Цукерберг, основатель Facebook, выступил перед студентами курса CS50 в Гарвардском университете . На тот момент проект объединял более 2000 учебных заведений, а штат компании едва превысил 50 человек .
🛠️ Технический старт и выбор инструментов 2:10
Марк Цукерберг запустил Facebook в Гарвардском университете в феврале 2004 года . Первую версию сайта он написал на языке PHP. Выбор языка был продиктован простотой: для тех, кто знает C, синтаксис PHP становится понятным за пару дней .
Когда через две недели после запуска тысячи людей начали регистрироваться, к проекту присоединился Дастин Московиц . Хотя Московиц по ошибке сначала купил учебник «Perl для чайников», он освоил нужный PHP за выходные и помог с экспансией в другие школы .
На старте создатели арендовали один сервер за 100 долларов в месяц вне кампуса . Марк Цукерберг решил не повторять прошлых ошибок, когда из-за запуска предыдущего проекта в стенах общежития администрация Гарварда пыталась исключить его из университета .
📐 Архитектура распределенных данных 3:57
Главной технической сложностью Facebook стал расчет социальных связей. Цукерберг объяснил, что вычисление «друзей друзей» требует огромных ресурсов . Если искать связи на глубине третьего или четвертого круга, сложность вычислений растет экспоненциально (Big O notation) .
Чтобы избежать краха системы, который погубил соцсеть Friendster, разработчики Facebook приняли следующие решения:
- Разделение базы данных по школам: для каждого учебного заведения создавался отдельный экземпляр MySQL .
- Локализация вычислений: поскольку 90% взаимодействий пользователя происходят внутри его школы, расчеты ограничивались базой в 10 000 человек вместо общих 6 миллионов пользователей .
- Линейное масштабирование: такая структура позволяла добавлять новые серверы по мере роста количества школ без экспоненциальных затрат .
📈 Проблемы роста и производительности 7:45
После подключения 30–50 школ стандартные настройки Apache и MySQL перестали справляться . Если база данных и веб-сервер работали на одной машине, сбой приводил к полной недоступности страниц .
Для решения проблем масштабирования команда внедрила новые подходы:
- Балансировка нагрузки: веб-серверы Apache выделили в отдельный пул, распределяя запросы между ними .
- Кэширование данных: при достижении 100 миллионов просмотров страниц в день возникли задержки в MySQL (2–4 миллисекунды на запрос) .
- Собственные решения: команда использовала Memcached для ускорения доступа до 0,3–0,5 миллисекунд, но позже доработала его для обеспечения избыточности данных .
В 2005 году Facebook генерировал 400 миллионов просмотров страниц в день . Для сравнения, Google в тот же период обслуживал около 250 миллионов просмотров, имея тысячи сотрудников и огромные серверные мощности .
👥 Философия найма и управления 18:56
Основным ресурсом компании Марк Цукерберг назвал интеллект, а не узкоспециализированные навыки . Он предпочитает нанимать людей сразу после колледжа, считая, что умный человек способен быстро освоить любую технологию через интернет .
Его подход к управлению включает несколько принципов:
- Меритократия: инженеры, предлагающие лучшие решения с минимумом багов, получают право работать над самыми интересными задачами .
- Итеративность: продукт не обязан быть идеальным с первого раза. Цукерберг привел в пример Microsoft, чьи продукты становятся по-настоящему хорошими только к четвертой версии .
- Отсутствие бюрократии: в компании на тот момент было всего 50 сотрудников, что позволяло сохранять гибкость и скорость разработки .
На вопрос о юристах Марк Цукерберг ответил, что в начале пути они только мешают . По его мнению, лучше сначала сделать что-то крутое и извиняться позже, чем тратить время на юридическое оформление и не запустить ничего .
🛡️ Приватность и социальные алгоритмы 39:13
Facebook строился на принципе ограниченного доступа: профиль пользователя могли видеть только люди из того же университета . Это создало доверительную среду, где люди не боятся оставлять свои номера телефонов .
Для защиты данных от автоматического сбора (скрейпинга) команда внедрила:
- Байесовские фильтры для выявления подозрительной активности пользователей .
- Преобразование адресов электронной почты в изображения, чтобы их нельзя было скопировать текстом .
- Социальное давление: использование реальных имен и почтовых адресов снижает количество порнографии и спама без жесткой модерации .
📸 Эволюция функций и будущее 27:32
Запуск функции фотографий показал важность понимания контекста. Facebook обошел сервис Flickr по количеству загрузок за три недели благодаря функции тегов . Теги работают только при условии, что в системе зарегистрированы почти все знакомые пользователя (97% студентов Гарварда на тот момент) .
При разработке фото-сервиса возникли сетевые ограничения. Чтобы не перегружать роутеры файлами по 3 Мб, команда создала Java-апплет для сжатия снимков на стороне клиента . Позже пришлось внедрить кэширование на границе сети (Akamai), так как собственные серверы не справлялись с нагрузкой в 100 загрузок в секунду .
В планах компании на конец 2005 года стояло уточнение типов отношений . Вместо рейтинга дружбы от 1 до 10 Цукерберг предложил использовать факты: совместное проживание в общежитии или посещение одного учебного курса .