Every organization using public cloud infrastructure should have a documented exit strategy. Fewer than 12% do. The 2025 Flexera State of the Cloud report found that while 94% of enterprises use public cloud, only 11% have a formalized plan for migrating away from their primary provider. The remaining 89% are operating without an escape route — dependent on a provider whose pricing, policies, privacy practices, and legal obligations can change unilaterally.
A cloud exit strategy is not an expression of dissatisfaction with your current provider. It is a business continuity document — a plan for a scenario that you hope never occurs but must be prepared for. Providers change terms. Prices increase. Privacy regulations shift. Geopolitical events alter jurisdictional risk. Acquisitions change corporate ownership. Each of these triggers may necessitate a rapid exit from a provider relationship that was functioning well yesterday.
This article is the plan. Not the theory of why exit strategies matter, but the operational playbook for executing one — with particular attention to the privacy risks that emerge during the transition itself.
Pre-Exit: What to Build Before You Need to Leave
The time to prepare for a cloud exit is before you need one. Exit preparation has near-zero cost when integrated into normal architecture decisions and substantial cost when retrofitted under pressure.
1. Maintain a Current Inventory
A cloud exit begins with knowing exactly what you have. Maintain an automated inventory that includes:
- Compute resources: Every VM, container, serverless function, and their configurations
- Data stores: Every database, object store, cache, queue, and their volumes
- Networking: VPCs, subnets, load balancers, DNS records, and certificate configurations
- Identity and access: IAM roles, policies, service accounts, and federation configurations
- Encryption: Every KMS key, its usage, rotation schedule, and dependent resources
- Provider-specific services: Every managed service, its API surface, and equivalent alternatives
Tools like CloudQuery, Steampipe, or provider-native asset inventory services (AWS Config, Azure Resource Graph, GCP Asset Inventory) can generate and maintain this inventory automatically.
2. Quantify Data Gravity
Calculate your data gravity score quarterly. Know the total data volume, the egress cost to extract it, the number of provider-specific service dependencies, and the engineering effort to migrate. If any of these metrics are trending upward without a corresponding strategic justification, intervene.
3. Maintain Provider-Neutral Abstractions
Where practical, use provider-neutral interfaces:
- S3-compatible APIs for object storage (most providers support the S3 API)
- Kubernetes for container orchestration (portable across all major providers)
- Terraform with multi-provider modules for infrastructure definition
- OpenTelemetry for observability (vendor-neutral telemetry collection)
- Standard SQL for database access (avoid provider-specific SQL extensions)
Each abstraction reduces migration effort. Not every abstraction is worth the trade-off (provider-specific services often provide better performance or lower operational overhead), but the decision should be explicit and documented.
4. Implement External Key Management
The most critical pre-exit preparation. If your encryption keys are managed externally — in your own HSMs or a third-party KMS — data migration is an encrypted data transfer operation. If your encryption keys are managed by the provider’s KMS, data migration requires decryption in the old environment and re-encryption in the new environment, creating a plaintext exposure window.
External key management converts a cryptographic migration into a logistics operation. This single architectural decision can reduce exit risk more than any other preparation.
The Exit Decision Framework
Not all exits are equal. The trigger, timeline, and destination determine the execution plan.
Trigger Types
Strategic exit: The organization has decided to change providers based on long-term considerations (cost optimization, privacy improvement, regulatory alignment). Timeline: 6-18 months. This allows careful planning, parallel operation, and phased migration.
Reactive exit: A triggering event forces the migration — a significant price increase, a privacy policy change, a regulatory ruling, or a security incident. Timeline: 3-6 months. Planning must be accelerated but can still be methodical.
Emergency exit: An immediate threat requires rapid data extraction — a discovered vulnerability, a provider breach affecting your data, or a legal order requiring immediate data relocation. Timeline: days to weeks. Completeness is sacrificed for speed.
Destination Types
Another public cloud provider: The most common destination. Equivalent services exist on the target provider, but configurations, APIs, and operational procedures differ.
Private cloud / on-premises: Maximum control but highest operational overhead. Requires physical infrastructure procurement (4-16 week lead time).
Sovereign cloud: Jurisdictionally constrained provider. Fewer services, potentially different pricing, but architectural guarantees about data residency and legal jurisdiction.
Multi-cloud distribution: Splitting workloads across multiple providers to reduce concentration risk. Increases operational complexity but eliminates single-provider dependency.
Phase 1: Data Extraction (Weeks 1-8)
Data extraction is the most time-consuming and expensive phase. The variables:
Egress Costs
As of Q1 2026:
| Provider | Standard Egress | Discounted Egress | Free Egress Allowance |
|---|---|---|---|
| AWS | $0.09/GB (first 10TB) | $0.05/GB (150TB+) | 100GB/month |
| Azure | $0.087/GB (first 5TB) | $0.05/GB (50TB+) | 100GB/month |
| GCP | $0.12/GB (first 1TB) | $0.08/GB (10TB+) | 200GB/month |
| Cloudflare | $0.00/GB | $0.00/GB | Unlimited |
For a 10 petabyte extraction from AWS at standard rates: approximately $500,000 in egress fees. This is the exit tax — the financial penalty for leaving.
The EU Data Act (effective September 2025) mandates that cloud providers phase out egress fees for data portability by 2027. AWS, Azure, and GCP have begun reducing egress fees in the EU. But for now, egress remains a significant migration cost outside the EU.
Transfer Bandwidth
Network bandwidth limits the extraction speed:
- AWS Direct Connect: 10 or 100 Gbps dedicated link ($0.03/GB data transfer)
- Internet transfer: Variable, typically 1-10 Gbps effective throughput
- Physical data transfer (AWS Snowball, Azure Data Box): Up to 80TB per device, 5-7 day turnaround
For 10 petabytes over a 10 Gbps link: approximately 93 days of continuous transfer. Over 100 Gbps: approximately 9.3 days. Physical data transfer devices are typically faster for petabyte-scale extractions.
Data Integrity Verification
Every byte extracted must be verified against the source:
- Checksum validation: SHA-256 or MD5 checksums for every transferred object
- Record count validation: For databases, verify row counts per table
- Sampling validation: For large datasets, validate random samples against the source
Data corruption during extraction is a real risk. A 2024 study by Backblaze found a 0.0007% bit error rate during large-scale data transfers — negligible per file but significant across petabytes (approximately 70GB of corrupted data per 10PB transferred).
Phase 2: Encryption Migration (Weeks 4-12)
The encryption migration is the privacy-critical phase. If data is currently encrypted with provider-managed keys, the migration creates a mandatory plaintext window.
Scenario A: External Key Management
If you followed the pre-exit preparation and use external key management:
- Copy encrypted data to the new environment (no decryption needed)
- Configure the new environment to access the external KMS
- Verify that the new environment can decrypt and process the data
- Decommission the old environment
No plaintext exposure. No re-encryption. The migration is a file copy operation.
Scenario B: Provider-Managed Keys
If encryption keys are managed by the current provider:
- Decrypt data in the current environment
- Transfer plaintext data to the new environment (over an encrypted transport link)
- Re-encrypt data in the new environment with the new provider’s KMS or external KMS
- Verify decryption capability in the new environment
- Destroy plaintext copies in both environments
Privacy risk: During step 2, plaintext data exists on migration servers and traverses a network link. This window may last hours to weeks depending on data volume. Mitigations:
- Use a dedicated, encrypted transfer link (Direct Connect + TLS, or VPN)
- Perform re-encryption on dedicated migration servers in a secured environment
- Destroy migration servers and all local storage immediately after completion
- Document the plaintext window for compliance records (GDPR, SOC 2)
Scenario C: Client-Side Encryption
If data was encrypted client-side before reaching the cloud:
- Copy ciphertext to the new environment
- No decryption needed at any point
- Verify that client applications can access data in the new location
This is the ideal scenario. Client-side encryption makes cloud exit a logistics operation with zero privacy exposure.
Phase 3: Application Migration (Weeks 6-16)
Applications must be modified to work with the new infrastructure. The scope depends on the degree of provider lock-in:
Low Lock-In (Containerized, Provider-Neutral)
Applications running in Kubernetes containers with standard interfaces (SQL databases, S3-compatible storage, HTTP APIs) require minimal changes:
- Update Kubernetes configurations (ingress, service definitions)
- Update connection strings for data stores
- Update CI/CD pipeline to target the new environment
- Update DNS records
Estimated effort: 2-4 weeks for a moderately complex application.
Medium Lock-In (Some Provider-Specific Services)
Applications using some provider-specific services (DynamoDB, Lambda, SQS) need those services replaced:
- Replace DynamoDB with ScyllaDB, CockroachDB, or the new provider’s equivalent
- Replace Lambda with Kubernetes Jobs, Cloud Run, or equivalent serverless
- Replace SQS with RabbitMQ, Apache Kafka, or the new provider’s message service
Each service replacement requires code changes, testing, and performance validation. Estimated effort: 2-6 months depending on the number of services.
High Lock-In (Deeply Provider-Specific)
Applications deeply integrated with provider-specific services (SageMaker, Athena, Macie, GuardDuty) require substantial re-architecture. This is not migration — it is rebuilding on a different platform.
Estimated effort: 6-18 months. Organizations in this category should consider whether a full exit is necessary or whether a hybrid approach — migrating sensitive workloads while maintaining some provider-specific services for non-sensitive workloads — is more practical.
Phase 4: Identity and Access Migration (Weeks 8-14)
IAM policies, service accounts, and access control configurations define your privacy boundaries. Migrating these correctly is essential.
The Translation Problem
AWS IAM policies, Azure RBAC, and GCP IAM use different permission models:
- AWS: JSON policies with Allow/Deny actions on resources, with conditions
- Azure: Role assignments with scope (management group, subscription, resource group, resource)
- GCP: IAM bindings with roles granted to members on resources
A 3,000-policy AWS IAM configuration does not translate mechanically to Azure RBAC or GCP IAM. The semantic mapping requires understanding what each policy intends to accomplish (the “why”) rather than just what it specifies (the “what”).
Privacy risk: Incorrect policy translation can create permission gaps (too broad, exposing data to unauthorized services) or permission blocks (too restrictive, breaking application functionality). Both are problems, but the former is a privacy violation.
Mitigation: Use a policy-as-code approach with a provider-neutral canonical policy definition (OPA Rego, Cedar) that is translated to provider-specific formats. If this was not implemented pre-exit, build it during migration and use it going forward.
Phase 5: Compliance Continuity (Throughout)
The exit process must maintain compliance throughout the transition:
Audit trail continuity: Export all audit logs from the old provider before decommissioning. Import them into a provider-neutral audit store. Ensure that the combined audit trail (old provider + transition period + new provider) is continuous and queryable.
Dual compliance: During the parallel operation period, both environments must satisfy compliance requirements. If the organization is SOC 2 Type II certified, both environments must meet SOC 2 controls simultaneously.
Data destruction certification: When decommissioning old provider resources, obtain written confirmation that all data — including backups, snapshots, audit logs, and provider-internal copies — has been destroyed. Cloud providers typically have data destruction policies, but explicit confirmation creates a compliance record.
DPA updates: Data Processing Agreements with the old provider must remain in effect until all data is confirmed destroyed. New DPAs with the new provider must be in effect before data arrives.
Phase 6: Decommission (Weeks 14-20)
Decommissioning the old environment is the final phase and is frequently botched.
Common Decommission Failures
Forgotten resources: Cloud environments accumulate resources that are not tracked in IaC: manually created test instances, temporary storage buckets, one-off Lambda functions. A thorough resource audit (using cloud asset inventory tools) is necessary before decommissioning.
Orphaned data: Backups, snapshots, and archived data that exist outside the primary data stores. AWS alone may retain data in S3, EBS snapshots, RDS snapshots, ElastiCache snapshots, DynamoDB backups, and CloudWatch Logs — each requiring separate cleanup.
Active billing: Unused but not-deleted resources continue to incur charges. The average enterprise wastes 30% of its cloud spend on unused resources (Flexera 2025). During decommission, this waste must be eliminated methodically.
Credential cleanup: Service accounts, API keys, and access tokens for the old provider must be revoked. IAM policies must be deleted. Federation trusts must be removed. Each active credential is a potential access vector to an environment that should no longer be accessible.
The Privacy Requirement: Verified Destruction
From a privacy perspective, decommission is not complete until you can verify that no data remains in the old environment. This requires:
- Resource deletion: Delete all compute, storage, networking, and service resources
- Snapshot and backup deletion: Delete all provider-managed backups and snapshots
- Log deletion: Request deletion of provider-retained logs (CloudTrail, access logs)
- Account closure: Close the cloud account entirely if no resources remain
- Written confirmation: Request written confirmation of data destruction from the provider’s compliance team
The Exit Cost Formula
The total cost of a cloud exit:
Exit Cost = Egress Fees
+ Destination Infrastructure (first year)
+ Engineering Labor (migration team x months)
+ Parallel Operation Costs (dual environment duration)
+ Compliance Costs (dual audits, legal review)
+ Opportunity Cost (engineering bandwidth diverted from product)
For a mid-sized organization with 500TB of data, 50 services, and medium lock-in:
| Component | Estimated Cost |
|---|---|
| Egress fees | $25,000 - $45,000 |
| Destination infrastructure (first year) | $200,000 - $500,000 |
| Engineering labor (6 engineers x 6 months) | $540,000 - $900,000 |
| Parallel operation (3 months) | $75,000 - $150,000 |
| Compliance costs | $50,000 - $100,000 |
| Total | $890,000 - $1,695,000 |
This cost is the price of freedom from a provider relationship that no longer serves the organization’s interests. The cost of not exiting — continued exposure to privacy risks, regulatory non-compliance, or unsustainable pricing — must be weighed against it.
The Stealth Cloud Perspective
Cloud exit is painful because cloud architectures are built to make exit painful. The data gravity, the proprietary services, the provider-managed encryption, the provider-specific IAM — each is a tether that makes departure more costly and more risky.
Stealth Cloud’s architecture is designed for exit by default. Zero persistence means there is no data to extract. Client-side encryption means there are no keys to migrate. The absence of provider-specific managed services means there is no application logic to re-write. The infrastructure is a transport layer for ciphertext, and transport layers are commodity services.
Switching from one edge compute provider to another, in the Stealth Cloud model, is a DNS change and a Worker redeployment. The data — all of it — lives in the clients. The cloud holds encrypted ephemeral state that expires on its own. There is nothing to extract, nothing to re-encrypt, nothing to decommission.
This is cloud exit reduced to its theoretical minimum: change where the ciphertext flows, and you are done. No exit fees. No migration project. No privacy exposure window. No parallel operation. The freedom to leave is not a feature of the exit plan. It is a feature of the architecture.