2012-05-01

Release engineering в Facebook

Добрейшего!

RSS лента в очередной раз принесла интересную подборку материалов от OpenQuality.ru, где взгляд немедленно зацепился на некоторые ссылки из раздела "Архитектура систем". Особенно за последнюю ссылку :)

Однако самое вкусное там для меня - это Exclusive: a behind-the-scenes look at Facebook release engineering - эксклюзивный материал про управление релизами в Facebook. Кому лень читать или кто думает, читать ли вообще, - несколько основных моментов.

Код пишется на PHP, затем транслируется в оптимизированный код на C++, который затем отстраивается в единый бинарник размером 1.5 Гб. Да, полтора гигабайта.

Далее код выкладывается во внутренний доступ и посредством BitTorrent скачивается на все сервера которые участвуют в работе. Итог по времени - 30 минут, из которых 15 минут делается сам бинарник, а ещё 15 - этот бинарник распространяется по серверам.

При этом то, что касается статического контента - яваскрипты, стили и т.п. - распросраняется через свои же CDNы, т.е. распределённые сети доставки контента.

Оставим за скобками странную цепочку PHP -> C++ -> Большой-Бинарник-На-Полтора-Гига, однако доставка релиза через торрент - это остроумно. Ну и распространение статики через CDN - вообще отлично.

P.S. Кстати, на всё том же OpenQuality лежит моё сочинение на тему "Управление изменениями, или Кессонная болезнь проектов". Ушёл в отрыв, сделал безумную, но на мой взгляд интересную аналогию.

3 комментария:

  1. Интересно, а почему бинарник такого титанического размера-то?

    ОтветитьУдалить
  2. Можно посмотреть размер образа виндовс как пример. Поскольку релиз накатывается на каждую из машин в их фермах, то там наверняка включено сразу всё до кучи, включая апдейты для ОСи и т.п.

    ОтветитьУдалить
  3. Размер windows мне понятен. У facebook-то почему такой размер, там функциональности-то относительно немного. Хотя, может у них там функционал распределенной БД и поисковой системы ... Но все равно - многовато.

    ОтветитьУдалить