Reengineering your web solution with Cloud-Native technologies
Published on 24th March 2020 | Pankaj Bhalerao
Thinking about reengineering and moving your existing solution to cloud-native technologies can be very confusing with concepts like Microservices, Containers, Serverless, PaaS, etc. Which one is the right match, which will give the best benefits, and which one will be toughest or easiest to adopt and implement?
Part of going cloud-native means moving away from traditional virtual machine based hosting and monolithic architecture style. When one moves away from Virtual Machine based hosting a lot of inherent limitations of this approach go away mainly related to Scaling and Administration, but it brings up a set of complex questions related to Solution Architecture itself.
Let’s try to simplify the understanding of the few important cloud-native technologies, when and where one should use what technologies under this broad keyword for building the new generation of web solutions.
cloud-native technologies are built based on Microservices Architecture, deployed with DevOps practices and tools and hosted as a Container in a Container runtime engine. They can be broadly broken down into two major segments, Cloud-Platform Agnostic and Cloud-Platform Specific.
Cloud-Platform Agnostic technologies
The Cloud-Platform agnostic technologies are portable in nature and your solution (& code) can move from one cloud environment to another or to on-premise based servers without much dependencies and changes to the core code of the solution while still remaining cloud-native at heart. They are generally open-source and backed by strong developer communities and foundations like cloud-native Computing Foundation (CNCP).
Popular Public Cloud providers like Microsoft Azure, Amazon Web Services (AWS) & Google Cloud Platform (GCP) support these Cloud-Platform Agnostic technologies wholeheartedly and all of them are members of the CNCP too. Most popular Cloud-Platform agnostic technologies are Docker, used for running Containers & Kubernetes, used for orchestration of containerized applications.
To run Docker & Kubernetes you will need basic Infrastructure comprising of Compute (CPU + Memory), Storage & Network. So basically, you can run this on your Laptop or in a Data Centre or in the Cloud IaaS. Let’s say you develop a good Dotnet based Web Application using the Microservices architecture with multiple SQL Databases at the backend, you can use Docker Engine to run your different microservices and your databases and then use Kubernetes to deploy, scale and manage them.
Now this above-mentioned solution is Cloud-Native at heart and ready to go on almost any kind of Computing Infrastructure like Public Cloud, Data Centre, etc. Obviously, the scaling and performance aspect of this cloud-native application will still be completely dependent on available hardware infrastructure resources like memory, storage, CPU cores, etc.
Compared to a non-Cloud-native approach of development and hosting, the benefit of this Cloud-Native application will be that once it gets the vast resources made available by Cloud providers like Azure, AWS & GCP it can relatively very easily become a very high performing, highly scalable and a large size application and at the same time remain easy to manage using the DevOps tools and practices.
"In many cases a combination of Specific and Agnostic technologies will also be needed based on certain parameters like core team skillsets, core business functionality vs generic functionality, etc."
All the major Cloud providers today offer different services on their platforms to run Containers like Docker and Orchestration service like Kubernetes. As Docker & Kubernetes are open source and cloud agnostic technologies you can easily move between different cloud providers by deploying and running your solutions with Docker & Kubernetes related offerings from the other Cloud providers making them truly Cloud Agnostic.
Cloud-Platform Specific technologies
The Cloud-Platform Specific technologies as name suggests are specific to that Cloud-Platform provider and moving your solution and code from one cloud provider to another may require significant rework and rearchitecting of your solution. These technologies are basically built by the Cloud providers as different cloud components which are provided as a platform for developers and IT teams to build and run their cloud-based solutions without the hassle of managing and administering many aspects of the underlying infrastructure.
These cloud components are based on the Cloud-Native principles of using Microservices architecture and containerised applications and are popularly known as PaaS or Platform as a Service.
For eg., Azure SQL Database PaaS is a cloud-native technology offered as a ready to use component to developers and IT teams and is completely built on Microservices architecture and hosted as a containerised application in what is known as Azure Service Fabric offering.
"Azure Service Fabric is also one of the offerings from Microsoft Azure towards building Cloud-Platform agnostics solutions by directly using your own Containerised applications with Microservices architecture"
In case of Cloud-Platform specific technologies, developers don’t need to think about containerisation, deploying, running and managing those containers, that is completely taken care by the Cloud-Platform itself making it much easier to work with cloud components such as Azure SQL Database.
These cloud components also provide a lot of pre-built services and functionalities which in case of pure cloud agnostic technologies would need to be written and/or integrated separately into your solution.
There are many considerations to be made between choosing Cloud-Platform Specific or Agnostic technologies, both technical as well as commercial. In many cases a combination of Specific and Agnostic technologies will also be needed based on certain parameters like core team skillsets, core business functionality vs generic functionality, etc
A detailed technology and architecture consulting assignment with our Cloud experts like Microsoft Azure consultants or AWS consultants will give you a lot more clarity and help you finalise the roadmap for your solution modernisation and reengineering project.