Мой продукт — программа для ретуши и плагин для Photoshop с локальной нейросетью. Чтобы выпуская программу и обеспечить её безопасность, я выстроила десять слоев безопасности: защищённый канал между плагином и системной службой, регистрация устройства, подпись артефактов с меткой времени, аттестация сборки, канал обновлений, шифрование модели, водяной знак. Части написаны на C++ и Go, живут в разных процессах и ставятся разными установщиками.
Каждая такая граница — это не модуль, а договорённость двух сторон: одно имя службы, одна версия протокола, один набор маршрутов, одна строка подтверждения. Сейчас 54 связи на этих границах держат 188 сравнений значений (468 мест в коде) и 105 сравнений множеств. Компилятор не видит ни одного из них: стороны написаны на разных языках.
Я назвала такие места швами — точками, где разные компоненты должны точно совпадать:
- маршрут, который вызывает клиент и регистрирует сервер;