Cloud strategy: Be Cloud agnostic
More than a decade ago we were introduced to smartphones. Along with them came the plethora of mobile apps. Today, to help build and support these mobile apps & platforms, we have many cloud computing platforms.
When using applications like Facebook, Instagram or while shopping on Amazon we never really know where and how these applications are deployed, how they scale & perform. But with enterprise platforms, the customer is very keen to know all these details
Cuddle.ai is an enterprise product, we want our users to access their enterprise data with the same ease with which they perform a search on Google.
Questions we asked ourselves before defining our Cloud strategy?
- Where are our target customers?
- Do customers have a preferred public cloud provider?
- What is the scaling strategy?
- Can we build all our services from scratch?
- Cost?
We found out we wanted to target organizations across the globe. Some customers preferred a particular cloud provider because of their prior experience working with them or because of their business interests.
For scaling & services, Cloud platforms provide a robust environment. Services like S3, Azure blob storage, load balancers to name a few are very easy to set up and use. Cloud providers are fiercely competing, new services are launched almost every month and they have reduced the prices for most of the services.
Strategies considered
- Multi-cloud
- Single cloud
- Cloud agnostic
Multi-cloud or Single Cloud
Multi-cloud is the use of multiple cloud computing and storage services in a single heterogeneous architecture. In this strategy, based on the requirement we can pick and use the best service from any of the public cloud providers.
Sticking to one cloud locks us on to that one specific vendor. Maintaining the code base and DevOps pipeline for a single cloud is easier than for a multi-cloud strategy.
But we wanted to deploy the Cuddle platform on the customer’s cloud as well, so we ruled out these strategies.
Cloud agnostic
Being cloud-agnostic is about being able to build & deploy applications, which can run on any cloud platforms. You can take two approaches to be cloud agnostics, do not depend on any SaaS service of a particular provider or cautiously select the services while architecting the platform. We decided to pursue the second option
Implementing Cloud agnostic strategy
- Microservices architecture
- Containerizing your application
- Compare cloud platforms & choose the right services
- Automate-first mentality
Microservices architecture
Applications are easier to build and maintain when they are broken into smaller units, each serving a specific business function and interacting with each other. We followed the below principles for building our services.
- Follow the twelve-factor app methodology
- All services to follow The Bezos Mandate or The API manifesto
- All teams will henceforth expose their data and functionality through service interfaces
Containerizing your application
Containers offer a logical packaging mechanism in which applications can be abstracted from the environment in which they actually run. This decoupling allows container-based applications to be deployed easily and consistently, regardless of the target environment.
Docker has changed the way we build, package and deploy our application. Now, no more statements like
But, it works on my machine
If it runs on Docker, it will run everywhere.
Container technology existed before Docker, but Docker just made it easier to use and distribute.
Use Kubernetes for container orchestration
“Kubernetes got its fame from container orchestration. But that is just a teeny, tiny part of Kubernetes. I actually believe that the most powerful thing about Kubernetes is that it is a system that presents a new programming model.” — Cornelia Davis
Compare cloud platforms & choose the right services
Select services & frameworks which are common among multiple cloud platforms. Write the applications to use the service based on the cloud provider.
Automate-first mentality
The work of DevOps considerably increases with a cloud-agnostic strategy. So we started with an automate first mentality. Infrastructure should be created easily with almost no manual intervention, CI pipeline for easy integration & testing. Deployment pipelines to accommodate scheduled deployments with approvals.
Conclusion
Cloud agnostic architecture is a reality. It is difficult but not impossible. We need to make some choices early on and stick to the system design principles to be able to support multiple clouds.
Cuddle.ai is an AI-powered Analytics platform designed for business users. To understand how Cuddle.ai can power up the performance of your digital channel teams, schedule a demo today!