There is a medieval French phrase, the modern form of this is “Rome ne s’est pas faite en un jour”. Translated that means “Rome wasn’t built in a day”. It’s an adage attesting to the need for time to create great things. One of the things I commonly hear from IT Pros is the sheer amount of technology in play. How distributed it all is and how hard it is to learn if you don’t have a software engineering background. Just like the medieval phrase, it takes time to understand how this technology works, and how it impacts your role and your career. In this series of posts I will look at how IT Pros can start to make sense of cloud native.
What is cloud native?
Much like DevOps is a term which sparks debate and conversation among professionals. You will find many different versions of what cloud native means. In general, in terms of what the architecture pattern looks like and in many cases what the best practice looks like. The easiest way to describe this shift is when applications are a collection of generally small, independent and loosely connected services. What is key about them is the architecture is in such a way that you deliver the maximum amount of business value. For instance, you may have a legacy application which presents data from “System A”. As well as another application which presents data from the same system. Both consumed by different applications. An API presented in a secure manner consumed by two teams to achieve the same result, would be an example of a cloud native design pattern. This provides a more modular approach to your architecture. It reduces touch points with some of your backend systems, and simplifies your overall architecture footprint. You will find that cloud native is actually much more than the example above.
Cloud-native applications are built from the ground up - optimised for cloud scale and performance. They’re based on microservices architectures, use managed services and take advantage of continuous delivery to achieve reliability and faster time to market. - Microsoft
Overall, cloud native is three things; microservices, serverless and containers. Some would argu that containers are not a cloud native technology. I’m not one of those people, containers is a key enabler for microservices which firmly sits in the cloud native world. Even with containers, make sure that the use cases are appropriate and you don’t use the technology for the sake of it.
Cloud native modernisation
The path to modernisation of your applications from monolithic architecture on-premises running in virtual machines is a multi-step process. Your application can be cloud infrastructure ready or cloud optimised. The need to scale applications is often the key driver. Microservices provide the ability to create independent and autonomous services. The ability to release independently of other services is a key benefit to microservices. The main pillars of modernisation are based on architecture patterns. That said, cloud optimised and cloud native applications require investment in development. Approaches also evolve with maturity and agility. Scaling to the limits offered in the cloud would be difficult in a monolithic architecture, even when deployed in the cloud.
Throughout this series, we will look at some of the technologies in Azure which can help you deploy applications using native technologies. Look at the use cases for these technologies and help provide guidance on where they might fit in your modernisation strategy.