Представители компании Facebook приняли участие в работе симпозиума Free Software and Open Source Symposium, проведенного канадским колледжем Seneca College, и воспользовались очередной возможностью продемонстрировать среду «межъязыковой» разработки Thrift, анонсированную в апреле. Данная среда создавалась с учетом требования, чтобы, используя один язык программирования, можно было генерировать код, способный легко и эффективно взаимодействовать с программами, написанными на других языках программирования, в том числе на C++, Java и Python. Компания Facebook уже использует Thrift для внутренних разработок, с помощью этой среды были созданы многие возможности поддерживаемого ею популярного сайта социальной сети, в том числе функция News Feed, выполняющая обновления статуса пользователя, и механизм поиска.
Марк Сли, директор по технологиям Facebook, заявил, что первоначально компания работала с PHP, популярным среди разработчиков Web-серверов языком скриптов, но в конце концов пришла к выводу, что он не подходит для реализации некоторых функций сайта, требующих высокой производительности. С самого начала Facebook использовала стек LAMP (Linux/Apache/MySQL/PHP), поэтому для компании имело смысл и далее применять свободно распространяемые решения.
«Мощности нашего центра обработки данных постоянно растут, — отметил Сли, напомнив, что здесь используется почти 2 тыс. компьютеров, которые обрабатывают примерно 2 млрд. операций просмотра страниц ежедневно и управляют 100 Тбайт информации. — Нужен такой язык программирования, чтобы не задумываться о том, как заставить его работать с чем-то еще».
Сли признал, что существуют определенные стандарты на Web-сервисы, в том числе SOAP, а также такие модели, как CORBA и COM, но, по его словам, каждый из этих подходов имеет свои недостатки. К примеру, SOAP слишком тесно связан с XML, а основанная на CORBA среда становится чрезмерно раздутой.
У Google есть своя собственная архитектурой Protocol Buffers, которая позволяет делать примерно то же самое, что необходимо Facebook, но она является внутренней технологией.
«Не имеет смысла еще одной компании создавать среду разработки, которую они хранят у себя, после чего невозможно ее обновить, поскольку ни у кого нет времени над ней работать», — заметил Сли.
Thrift создана на принципах простоты и ясности на каждом уровне кода. Так, по словам Сли, Thrift позволяет разработчикам очень быстро создавать как клиентский, так и серверный код, при этом во многом избавившись от проблем с поддержкой.
Аналитик Forrester Research Джеффри Хаммод отметил, что Facebook предлагает Thrift, несмотря на то что существуют и другие подходы к созданию Web-сервисов, в том числе REST. Это не означает, однако, что невозможно появление новых решений.
Дэвид Рейс, инженер Facebook по программному обеспечению, сказал, что Thrift уже выбрали несколько внешних разработчиков, поскольку эта среда предоставляется сообществу Open Source на условиях лицензии BSD. По его словам, эти разработчики одновременно создают новые «языковые компоновки» (с их помощью проще повторно использовать программные компоненты) для Perl, Ruby и JavaBeans.