12 ms·
What are the requirements for your app? Which databases, email providers, caches, queue services etc does it use? I think you will be cloud agnostic if the solu
by dimitar 5y ago
What are the requirements for your app? Which databases, email providers, caches, queue services etc does it use? I think you will be cloud agnostic if the solutions are decoupled from any proprietary cloud APIs. If you are coupled to Dynamodb, Google Cloud Datastore or SNS you are not cloud agnostic.
This is probably the minimum. What else does your solution include? Does it include hosting, infrastructure as code is it a managed service, something that clients run themselves or a SaaS?
Generally if you keep deployment simple you don't have to use docker and kubernetes. For example if the app code is delivered as a monolithic .jar file or native executable and you don't have a large number of 3rd party services that need to be deployed.
Docker and Kubernetes do help be cloud agnostic for a particular type of solution architecture - many microservices and potentially many other requirements like queues, caches, 3rd party including open source applications. If you had to create this distributed system on different providers it would be a lot of duplication of effort. In k8s there is still some - you most likely have to configure docker repositories, storage, load balancers, ingresses for different providers but configuration is better than reimplementation. And you still have to manage the cluster. So depending on your architecture and application requirements you may find it much simpler to use Docker and Kubernetes or them to be a needless complication.
There are also certain best practices that help with portability - the 12 factor is a good guide.
- taylodl 5y agoI'm talking about a corporate portfolio of applications, but for my portfolio I can see DynamoDB and Lex as being services that I can't replicate in another cloud. We use DynamoDB for state management. I suppose we could use Redis since that's a service that would be available on more clouds? Or maybe we should abstract ourselves away from state management and create plug-ins for different cloud platforms? For things like Lex, yeah, that's never going to be cleanly cross-platform. Your application architecture can isolate that technology from the rest of your application so you can cleanly port it if you have to. Appreciate the nod to 12 factor. Thanks!
- metaltyphoon 5y agoTake a look at darp.io if you really want to be cloud agnostic.
- SahAssar 5y agoI'm guessing you mean dapr.io.
- metaltyphoon 5y agoyes :D