Вопрос проверяет понимание рисков привязки к одному поставщику технологий и способов проектирования систем, устойчивых к смене вендора.
Vendor lock (vendor lock-in) — это зависимость продукта или инфраструктуры от конкретного поставщика, из-за которой смена вендора требует больших затрат, времени или вообще невозможна. Такая привязка возникает, когда используются проприетарные API, форматы данных, лицензии или уникальные сервисы, не имеющие аналогов у конкурентов.
interface FileStorage {
upload(key: string, data: Buffer): Promise<void>;
download(key: string): Promise<Buffer>;
}
class S3Storage implements FileStorage { /* AWS SDK */ }
class GCSStorage implements FileStorage { /* Google SDK */ }
// Бизнес-логика зависит только от интерфейса
class DocumentService {
constructor(private storage: FileStorage) {}
async save(doc: Buffer) {
await this.storage.upload('doc', doc);
}
}
Такой подход позволяет заменить S3 на GCS или MinIO, изменив только реализацию интерфейса, а не весь код приложения.
Итог: vendor lock стоит учитывать при выборе облака, СУБД и платформ. Абстракции и открытые стандарты снижают риски и сохраняют свободу миграции, что особенно важно для долгоживущих и критичных систем.