I want to be able to declare cloud agnostic infra in some universal language, specify my functional and non functional requirements and push a button to deploy to any cloud.
There would be some intermediate representation of infrastructure and it would then up to us to implement for each cloud. We'd need to maintain a mapping from our language and the clouds in such a way that we can reproduce the infra we need in any cloud from the standard.
We'd need to stay on top of changing cloud APIs and we'd version our language, say a monthly release or something. The focus would be less on how does the user configure X DB, Y message queue, and Z compute - and more the user tells us that X, Y, Z should satisfy some NFRs and be connected in some way. Then we'd just create the infra for them.
I know this sounds a lot like Terraform, but I use that on the daily and have seen first hand how hard it is to go from one cloud to another. I'm aware cloud providers don't have an incentive to be interoperable and did some brief research on the topic. Seems like this has been tried before and hasn't really taken off - why is that? Just too hard? Cloud providers won't let you?
Is it a tarpit idea? Please let me know!
bigyabai•2h ago
Basically what NixOS is in my experience, where "cloud" is "NixOS machine" in this instance.