Problem
Deep use of proprietary services speeds delivery but makes migration costly if prices, terms, or reliability change. Total avoidance of lock-in sacrifices the benefits of managed services.
Also known as: exit-strategy, cloud-portability
Limit the cost and risk of leaving a vendor by deciding where to accept lock-in and where to keep options.
Deep use of proprietary services speeds delivery but makes migration costly if prices, terms, or reliability change. Total avoidance of lock-in sacrifices the benefits of managed services.
Lock-in is a cost, not a sin. The goal is to know what you are locked into, why, and what leaving would take. Mitigation focuses effort on dependencies where the exit risk is highest.
Lock-in has several forms: technical APIs, data formats, operational skills, contractual commitments, and ecosystem integrations. Contractual terms such as committed spend discounts count too, so review them alongside the architecture.
Hide the vendor behind your own interface and keep data portable.
interface BlobStore { put(key, bytes); get(key); delete(key) }
class S3Store implements BlobStore { ... } // adapter
class GcsStore implements BlobStore { ... } // alternate, tested in CI
// Exit plan: nightly export to open format, runbook, effort estimate: 8 weeks
Score each vendor on switching cost and criticality, and invest in mitigation only where both are high. For a database, that might mean standard SQL and regular exports. For identity, it might mean standard protocols such as OIDC and SAML, plus a documented user migration path.
Low to medium - possible duplicate tooling
Medium
Medium
Leaky abstraction that exposes vendor semantics anyway
Exit plan never exercised and found infeasible
Data export formats unusable by another system