Over the last few years, both the computing and IT industries have seen remarkable changes due to emerging cloud platforms. Almost 91% of companies have started using public cloud for their business requirements. Top public cloud providers include Amazon Web Services, Microsoft Azure and Google Cloud Platform who hold the majority in market. Various cloud computing services provided by them are storage, software, processing power and virtual machines.
50% of large companies spend more than $1.2 million per annum on their public cloud deployments and 30% of IT budgets are allocated to cloud computing resources. As more IT systems are externalised, picking the right strategy for developing and managing applications in the cloud has become critical to long term success. This blog illustrates one such approach to deliver critical applications for your business in the cloud market.
What does Cloud Agnostic mean?
A company’s business approach is said to be cloud agnostic when all its IT systems do not rely on a single cloud provider. Instead, services are spread across multiple cloud providers to maintain and ensure uptime of critical applications.
The cloud agnostic approach is usually compared with the cloud native approach, an architectural style where the application is typically designed to run on a specific platform. In most cases, these cloud native applications can also be migrated to different cloud platforms so they are also cloud agnostic.
The cloud agnostic approach encourages an enterprise to use services from different cloud providers. For example, an organisation might host its web front-end application on AWS and host its backend servers on Microsoft Azure. Since cloud providers and its services aren’t created equal, organisations can adapt to deliver best of IT services for their application.
According to the Kafka website, 80% of all Fortune 100 companies use Kafka. One of the biggest reasons for this is that it fits in well with mission-critical applications that require the use of APIs in cloud agnostic environments. Find out how in this free download.
What are the advantages of going Agnostic?
Cloud computing is well known for its flexibility. Here are some ways cloud agnostic solutions enhance flexibility for businesses.
- Easily run workloads within any public cloud and manage core applications with assured uptime and features.
- Easier to switch to enhanced service released by different cloud providers with less time consumed.
- Allows businesses to pick and choose specific services and levels based on offering price at that time.
- Making solutions more flexible and adaptable helps against the risk of vendor lock-in.
Cloud Agnostic Strategies
There are increasing choices when it comes to a cloud agnostic development and its technology stack. Some of the most popular strategies engineers use to develop cloud independent applications can be seen below.
Following a cloud agnostic strategy will increase the workload of DevOps due to the involvement of multiple cloud services. So an automated, approach is the key to minimise this. Infrastructure should be created with little manual effort, tested and integration managed through a scheduled CI pipeline requiring approvals.
Ansible, Terraform are open-source management tools that enables infrastructure as code. These tools are designed to support multiple cloud vendors and ease the process of deployment and monitoring.
Microservices architecture structures an application into a collection of small modules, each serving a specific purpose. Applications are much easier to build and maintain when broken down into more smaller units, especially if intended to be developed cloud agnostic.
- Loosely coupled
- Easy to test
- Easy to maintain
- Quick to deliver
- Owned by a small team
- Independently deployable
Managed Database Services
When a cloud agnostic business application requires a database, a common solution is to use managed database services. These are external IT support services who charge a cost for handling & securing company data.
Most public cloud offerings will include managed database installation, maintenance, management and access. Cloud providers such as AWS, Google, and Azure offer services for migrating databases between providers.
Compare cloud platforms to choose right services
It is important to keep an open mind when choosing services for your application, similar services available at most cloud providers should be well researched. It is also recommended to select services and frameworks which are common among multiple cloud platforms. Adapting to this strategy will increase the upfront cost but also increase cross cloud knowledge and flexibility.
Develop good interfaces, Encapsulate what varies
Abstractions allows for the implementation of code without interaction with the interface. They help create well designed and loosely coupled code which maintains the flexibility to add different types of code while minimising required code changes.
Consider a file upload in your application using AWS S3 (Simple Storage Service). Best practice is to develop a Storage interface class and then an implementation class for S3 file operations. Application should be written to interact with S3 through the storage interface only. Developing this way allows rapid switch between storage mediums (like Minio, Azure Blob Storage) in an application by developing new implementation classes.
A container is a standard unit of software that carries code and all its dependencies so the application as a whole can run from one computing environment to another quickly and reliably. Docker, is one such type of container which was designed to run in an isolated environment.
Container orchestration is the automation of operations required to run containerised workloads and services. This helps software teams to manage a container’s life-cycle, including provisioning, deployment, scaling, networking, load balancing and more. Kubernetes is one popular open-source platform for container orchestration.
Running an application in a Docker & Kubernetes environment ensures that we need not depend on any specific cloud provider as they are exclusively designed to be run and managed independently.
Pros & Cons of Cloud Agnostic environments
To sum up, the main benefits of a cloud agnostic strategy are:
- No vendor lock-in. Helps to diversify portfolio and become more flexible in the IT industry.
- Easier risk management. Being independent of a single provider, will make it easier to manage risks or change tactics.
- More customisation and flexibility. Adapting to the cloud-agnostic approach allows to adjust cloud adoption techniques to requirements.
- Access to open-source technologies. Having access to various technologies will help businesses expand their technology stack and adapt strategy to fit business needs.
- Better consistency. The cloud agnostic approach increases the chances of achieving cross-cloud consistency across different platforms.
Cloud agnostic is not an easy approach, here are the drawbacks:
- Lowest common denominator. Features and tools that are developed for cloud-native environments are often not suited to cloud-agnostic environments.
- Price. In some cases, the cost of development may be higher for multi-cloud than developing for a specific cloud provider.
- More complicated deployment. In multi-cloud, deployment and monitoring has to be done on multiple platforms at once. Cloud agnostic deployment should be designed to work on different cloud platforms and between on-premises hardware simultaneously.
On a final note, Cloud agnostic solutions are ideal for businesses that want to avoid having cloud vendor lock-in and need to reduce their risk of downtime. This is a growing concern for organizations using single cloud, so having the flexibility to adapt is necessary.
Related Case Studies
A Digital Engineering Solution for High Volume Automotive Data Extraction
Automotive products required help to track millions of price points and specification details for a large range of vehicles.
Bespoke Data Engineering Solution for High Volume Salesforce Data Migration
A global market leader in credit risk and ratings needed a data engineering solution for Salesforce data migration.