Вопрос проверяет понимание архитектурных рисков при использовании внутренних (in-house) SDK и умение снижать связанность клиента.
Внутренние SDK часто нестабильны, активно меняются и не имеют такого уровня поддержки, как публичные библиотеки. Если использовать их напрямую, изменения в SDK начинают ломать клиентское приложение. Изоляция позволяет ограничить зону влияния изменений и снизить количество регрессий. Это делает код более устойчивым и поддерживаемым.
Внутренний SDK — это такой же внешний зависимый компонент, даже если он разрабатывается внутри компании.
Внутренние SDK:
быстро развиваются
часто меняют сигнатуры
могут не соблюдать обратную совместимость
Если SDK используется напрямую:
изменения затрагивают десятки мест
возрастает стоимость обновлений
увеличивается риск ошибок
Определение:Внутренний SDK — это библиотека, разрабатываемая параллельно с клиентом, часто без строгого SLA.
Проблемы:
слабая документация
недостаточное тестирование
баги в edge-кейсах
Без изоляции:
ViewController знает детали SDK
бизнес-логика «протекает» в UI
заменить SDK практически невозможно
Изоляция достигается через:
собственные интерфейсы
адаптеры
фасады
protocol PaymentService {
func startPayment()
}
SDK используется:
только внутри реализации
не виден остальному приложению
Никогда не импортировать SDK в UI-слой
Работать через собственные протоколы
Ограничивать поверхность API
Закладывать возможность замены SDK
Внутренний SDK — источник нестабильности. Изоляция снижает риски и защищает архитектуру клиента от чужих ошибок.