Cloud strategy: Be Cloud agnostic

Unni Krishnan
Crux Intelligence
Published in
4 min readOct 29, 2019
Photo from pngtree.com

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.

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.

--

--