Профессиональная конференция для Go-разработчиков

Как делать бинарно-совместимые API на компилируемых языках?

Бэкенд, теория программирования

Распределенные архитектуры

API
C/C++

Доклад принят в программу конференции

Мнение Программного комитета о докладе

Была задача по разработке интерфейсов для плагинов к Tarantool. Требовалось обеспечить работу плагинов, собранных против старой версии Тарантула, на новых версиях без пересборки (и с использованием новой функциональности). И наоборот, собранные против новой версии должны быть совместимы с прошлой...

Целевая аудитория

Разработчики низкоуровневых компонентов библиотек, программных платформ.

Тезисы

Скажем, мы разрабатываем продукт на компилируемом языке. Рано или поздно наступает момент, когда нужно разделить продукт на несколько компонентов, развивающихся независимо. Или дать возможность расширять функциональность плагинами, разрабатываемыми отдельными коллективами или сообществом.

Здесь мы сталкиваемся с проблемой обеспечения прямой и обратной совместимости: что произойдет при обновлении одного из компонентов независимо от другого?

Если бы компоненты были микросервисами, в качестве интерфейса выступал бы JSON поверх HTTP или другой высокоуровневый протокол RPC. Но мы хотим сочетать независимость развития компонентов с нативным вызовом функций и нативным представлением структур.

Доклад дает обзор подходов к этой проблеме и набор практических приемов.

Разработчик в Tarantool.

VK, Tarantool

Tarantool — middleware для эффективного создания высоконагруженных сервисов. Сочетает в себе сервер приложений, гибридное хранилище данных, а также инструменты и средства масштабирования. Производительность систем на Tarantool может достигать 1 млн транзакций в секунду.

Видео