Скажем, мы разрабатываем продукт на компилируемом языке. Рано или поздно наступает момент, когда нужно разделить продукт на несколько компонентов, развивающихся независимо. Или дать возможность расширять функциональность плагинами, разрабатываемыми отдельными коллективами или сообществом.
Здесь мы сталкиваемся с проблемой обеспечения прямой и обратной совместимости: что произойдет при обновлении одного из компонентов независимо от другого?
Если бы компоненты были микросервисами, в качестве интерфейса выступал бы JSON поверх HTTP или другой высокоуровневый протокол RPC. Но мы хотим сочетать независимость развития компонентов с нативным вызовом функций и нативным представлением структур.
Доклад дает обзор подходов к этой проблеме и набор практических приемов.