Are You Cloud-Native?

December 11th, 2019 | Posted by Vidya Vrat in Architecture | Azure

Introduction

Cloud-native is an approach to build applications using microservices, containers, Kubernetes, DevOps, CI/CD, and cloud (public, private, hybrid). With this great combination of great architecture, platform, culture, dev practice, and cloud-computing model your applications will be built for scale, continuous change, fault-tolerant, and manageable. Let’s explore and understand each of the key players in the cloud-native approach.

No alt text provided for this image

Microservices

 Microservice is a small autonomoustightly scopedloosely coupledstrongly encapsulatedindependently deployable, and independently scalable application component. Microservice has a key role to play in distributed system architecture. 

No alt text provided for this image

Microservices architecture offers a lot of benefits, but there is a cost involved. You may want to learn more about its advantages and disadvantages by following the link https://www.linkedin.com/pulse/microservice-architecture-vidya-vrat-agarwal/

Containers

A container is a standard unit of software that packages up code and all its dependencies, so the application runs quickly and reliably from one computing environment to another. A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries, and settings. Containers provide an abstraction at the app layer that packages code and dependencies together. 

No alt text provided for this image

Kubernetes (K8s)

Kubernetes was born from Google’s over 15-year experience running production workloads. It is designed to grow from tens, thousands, or even millions of containers. Kubernetes is a container runtime agnostic. Kubernetes is an open-source container orchestration tool designed to automate deploying, scaling, and operating containerized applications. “Distributed Management and Orchestration “of containers is an integral part of making your application cloud-native, and Kubernetes does it all.

DevOps

DevOps is NOT a “Packaged Solution”. I.e. You cannot buy and install it.

No alt text provided for this image

DevOps is the union of people, process, and products to enable continuous delivery of value to our end users.” – Donovan Brown, MSFT. DevOps is a “culture” (Agile is a mindset), where development, test, and operations work together in a collaborative manner to automate the delivery of quality software. DevOps culture develops a “production-first mindset”. I.e. applying DevOps ensures that your code is always ready to be deployed to production 

No alt text provided for this image

DevOps breaks the wall of confusion between teams and fosters better communication and collaboration throughout the application development lifecycle and results in better visibility and small frequent deployments together.

You can learn more about DevOps here https://www.linkedin.com/pulse/devops-what-why-how-vidya-vrat-agarwal/

CI/CD

Continuous Integration (CI) and Continuous Delivery (CD) enables and empowers any software delivery team in an organization to continuously deliver value to their end-users.

With CI/CD practices in place, development teams are more likely to commit code changes more frequently, which leads to better collaboration and software quality.

Continuous Integration (CI)

CI is the process through which the building and validation of developer code are automated to ensure quality check-ins. You can build a CI/CD pipeline in the DevOps tool of your choice, and for cloud-native it will not be complete unless you have an important step “push the image to container registry”. Here, is a visual of how CI phases look like in Azure DevOps (previously known as VSTS).

No alt text provided for this image

If you are interested in building your own CI/CD pipeline using Azure DevOps then you can read more by following the link https://www.linkedin.com/pulse/building-cicd-pipeline-from-scratch-azure-deployment-using-agarwal/?trackingId=2ZXCXz7mpm8mnjAQB8BF7g%3D%3D

Continuous Delivery (CD)

CD picks up the package built by CI, deploys those into multiple environments like Dev, QA, staging, etc. then runs various tests such as integration tests, performance tests, load test, etc. and if all works fine then on a button click it can be finally deployed into production.

No alt text provided for this image

Summary

While each of the above serves tremendous value in its own entity, but if all the above combined together then it will contribute towards a true cloud-native approach. Imagine using benefits of cloud, microservices, containers, Kubernetes, DevOps, CI/CD combined together, which unlocks the formula to the success of any organization that want to reap the multifold benefits to the health of software, delivering value to the customers, support demand at scale, and lowering the development and operational cost of the application.

If you are not cloud-native yet, then you may be interested in knowing that by 2025, over 80% of enterprise apps will become cloud-based (source: forbes.com) or be in the process of transferring themselves over to cloud-native apps. Are you?

You can follow any responses to this entry through the RSS 2.0 You can leave a response, or trackback.

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.