Locked In and Loaded: The Cloud Got Me by the Bill
aka How Vendor Lock-In Became the Real Platform-as-a-Service
"Oche,quick one, can we reduce the cloud bill a bit?"
That was the sentence that started it.
Next thing I knew, The group chats was full of Cost Explorer screenshots, infra estimates, and one poor dev whispering "do we really need Kubernetes?"
That was when I truly understood the curse of vendor lock-in.
This isn’t Just Cloud,It’s the Whole Industry
Tech companies have been moving like cults since forever.
Apple locks your messages in blue bubble prison.
Microsoft gave you Internet Explorer and said "good luck uninstalling".
Sony acts like moving your save file is illegal in 42 countries.
Google? The last time they had a global outage, half the internet went silent. But guess what didn't stop? Billing.
Cloud vendors looked at all that and said, "Hold my uptime."
The Convenience Trap
Managed services feel like magic at first.
RDS handles backups.
BigQuery scales automatically.
Azure Key Vault keeps secrets encrypted.
Cloud Functions run your code while you sleep.
But every time you choose one of these, you're giving up a little control.
Try to leave, and your infrastructure becomes a house of cards built on undocumented defaults and console magic.
You Might Be Locked In If...
Your backups only go to regions you can't access
Your CI/CD breaks outside of a specific cloud
You haven't used
scp
orrsync
in monthsYou call it multi-cloud but nothing actually works outside AWS
You're not cloud-native.
You're cloud-cuffed.
Escape Plan Version 1.0
Inspired by every finance team slowly bleeding behind a billing dashboard, here’s what I’m doing and recommending going forward:
Use Infrastructure-as-Code Religiously
Terraform or Pulumi: Define every cloud resource. No clicky-clicky surprises in the console.
Ansible: Automate setup and provisioning, especially for self-hosted tools or on-prem servers. Works across cloud and metal.
Favor Open Standards and Tools
Choose Redis, not ElastiCache.
Choose PostgreSQL, not Aurora.
Choose RabbitMQ, not AmazonMQ.
Choose MinIO if S3 looks at you funny.
Build for Portability
Use Docker and OCI-compliant containers
Run your workloads on Kubernetes or even Nomad if you're allergic to YAML
Minimize SDK lock-in. Write logic that works on any platform
Go Back to On-Prem (When It Makes Sense)
A small cluster of VMs with Proxmox and Syncthing can save your margins
Self-host your critical infrastructure. If a service is billing you and failing you, host it yourself
Self-Host the Essentials
Grafana + Prometheus for monitoring
Uptime Kuma for uptime tracking
Mailrise or Postal for sending notifications
Vault or SOPS for secrets management
GitLab, Gitea, or Forgejo for your code
Monitor Everything
Don’t just monitor uptime, monitor cost drift
Tag your resources. Track ownership.
Setup alerts for cost spikes the same way you do for CPU
Stay Paranoid, Stay Portable
Backup your configs, not just your data
Periodically test redeploying infra in another cloud or bare metal
Ask yourself, "What happens if I have to rebuild this without the dashboard?"
Final Thoughts From a Lock-In Survivor
This post was inspired by every finance team trying to make sense of five-figure monthly cloud spend with zero visibility.
It was written after fighting with an RDS instance that refused to migrate, a MongoDB Atlas account that ghosted AWS billing, and a Google outage that shut down half our tooling, while the invoice still came in full.
Vendor lock-in is not an accident. It's the business model.
And if you're not planning for an exit, you're paying for your own prison.
So next time you reach for that new managed service, ask yourself:
Can I leave if I want to?
Will this system still run outside this ecosystem?
What happens if the provider goes down, or worse, up in price?
The answers might save your infra. Or at least your budget.