Cloud 101: Exploring Cloud-Native Architecture
You want to modernize and move to the cloud. When investing in enterprise applications or solutions, understanding what’s under the hood of your potential technology purchase is important to prepare for what to expect once you deploy it across your organization. A key question to ask when evaluating a business software solution, is “Is it cloud-native?”
What does “cloud native” mean?
“Cloud native” means that the product or application is designed from the ground up to leverage all of the inherent advantages of the cloud, including agility, scale, and cost-efficiency. Several factors and facets make up a cloud-native application, but three characteristics are key drivers of those cloud benefits:
- A microservices architecture
- A containerized infrastructure
- A CI/CD development framework
Each of these is vast a topic. For this article, let’s discuss how microservices, containers, and CI/CD enable business agility and deliver a better user experience.
What is microservices architecture?
As the name suggests, microservices is about taking one big service (software application) and breaking it into smaller (micro) pieces. Each piece is responsible for doing one job really well. These pieces of software exist independently of each other and make developing a large or complex product more manageable and efficient. For a product to function cohesively, the various microservices need to communicate with each other and do so using an application programming interface (API).
What is a containerized infrastructure?
While a microservice has a specific function to carry out, containers encapsulate all the software code and dependencies of microservices into lightweight packages so that they can be tested and deployed on any infrastructure. One benefit of containers is the faster and more secure development of applications and features. It also means more reliability and flexibility at the same time. If there is an issue with a particular microservice, the issue can be isolated and fixed within the container without disruption to the entire application.
What is a CI/CD development framework?
Continuous integration & continuous delivery (CI/CD) refers to a set of operating principles that combine best practices and the latest technology to deliver product updates frequently and reliably. Continuous integration is a development practice where the software code must be integrated into a shared repository frequently — usually on a daily basis. The code goes through automated testing to be able to catch any issues or misfit with any of the other components or microservices as early as possible. Continuous integration happens before you release a feature (or piece of code), and continuous delivery kicks in when you release that feature into a staging or test environment. Continuous delivery means the code is ready at any given time to push to production and goes live on a scheduled date.
A famous example of microservices architecture
Netflix was an early adopter of a microservices architecture. There are several hundreds of microservices that comprise Netflix’s streaming service. One microservice may be responsible for showing you recommendations, while another will keep track of your watch history. A microservice will be responsible for viewer profiles, while another will be for parental controls. While distinct, each of these experiences is part of delivering a larger, comprehensive experience.
These microservices are all deployed in containers. If one service happens to go down or is being updated, it doesn’t interrupt the entire experience because the container with the corresponding microservice can be isolated and dealt with independently. In fact, you may not even realize something has happened, whether good or bad, in the middle of your binge-watching session. That’s one of the advantages of microservices — the ability to update one part without having to update everything, as well as the lower risk of a wider impact if an issue arises with one microservice.
The expectation of a Netflix subscriber is that over time, the product and experience get better and better. Microservices enable fast innovation, and CI/CD delivers on that promise. If Netflix wants to add new services or capabilities, those would be built as microservices, deployed in containers, and tested and pushed live when ready — all with little to no impact on the overall service.
Let’s suppose that Netflix was not built on microservices and not containerized, but that it was developed as one big application. This traditional or legacy software framework is referred to as a monolithic architecture: all of the different parts acting as a single unit. When one part of the product needs to be updated, the whole product needs to be updated. If one part of the product fails, the whole product fails. This is referred to as a single point of failure, whereas in a microservices architecture, there is no one point of failure, significantly reducing the risk of the entire application stopping to work.
In this hypothetical context, if there is a glitch in the Netflix watch history, this could cause the whole service to go down. Or, if an enhancement is being made, the entire code base needs to be rewritten so that everything will work together.
If Netflix hadn’t moved to a microservices architecture more than a decade ago, the great streaming experience that consumers now expect could have been at a much lower bar with a slower pace of innovation with the long cycles associated with monolithic architecture software updates.
Figure 1. A monolithic architecture acts as one unit, making updates and innovation cumbersome and slow because everything needs to be updated so that the unit can function. A microservices architecture, on the other hand, facilitates agility, scale, and fast innovation.
Why a cloud-native, microservices solution matters in business applications
Businesses procure and rely on all kinds of software solutions to help them move fast and stay competitive, from day-to-day productivity applications to development tools and digitally transformative technologies. Just like the Netflix viewer who expects the service will continually improve, business-to-business (B2B) software carries the same expectation, especially cloud solutions used in business-critical processes.
That’s why “Is it cloud native?” is vital to ask. You want that Netflix experience from your business applications.