2010 2011 2012 2013 2014 2015 2016 2017 2018 2019
Генеральный
партнёр


Все на CodeFest X →

Десятый. Юбилейный. 30–31 марта 2019

Бэкенд-винегрет: как подружить разные ЯП на ваших серверах?

В современном мире существует множество отличных инструментов и технологий, которые можно использовать при построении серверных систем. Однако идеальных технологий не существует — каждая обладает своими достоинствами и недостатками. Часто у разработчика бэкендов возникает желание использовать сразу несколько похожих инструментов в проекте, чтобы объединить их сильные стороны и нивелировать недостатки. Пожалуй, самым распространённым примером таких инструментов являются языки программирования. Ядра высоконагруженных проектов нередко реализуются при помощи «тяжёлой артиллерии»: C/C++/Java/etc. Вокруг этого ядра обычно строится обвязка с использованием более удобных Python/PHP/Ruby/etc. Нередко в проекте используются и другие ЯП для второстепенных и сервисных задач.

Как организовать взаимодействие решений, написанных на разных языках? Существует множество подходов:

  • экстеншены и модули для ЯП;
  • HTTP REST;
  • XML-RPC / SOAP / JSON-RPC;
  • очереди сообщений (RabbitMQ, ØMQ) и cредства сериализации (protobuf, MessagePack);
  • свои протоколы.

Каждый из них имеет свои сильные и слабые стороны, но ни один из них нельзя назвать более-менее универсальным и удобным.

В своём докладе я расскажу о технологии Apache Thrift, которая позволяет легко и удобно сочетать в одном проекте несколько разных ЯП. В компании 2ГИС эта технология была внедрена более двух лет назад и с тех пор успешно используется в проекте WebAPI для связки C++ и PHP бэкендов и других целей. Я поделюсь опытом применения технологии, расскажу про сильные и слабые стороны, возможности и перспективы.

Доклад будет интересен широкому кругу разработчиков, которые используют или планируют использовать в своих проектах хотя бы два из перечисленных ЯП: Python, PHP, JavaScript, C++, Java, Erlang, Ruby, Perl, Haskell, C# и других.

Презентация доклада:

Запись выступления:

Партнёры