Part 5: Cloud-native design and patterns

As defined by the Cloud Native Computing Foundation (CNCF), Cloud-native technologies empower organizations to build and run scalable applications in public, private, and hybrid clouds. Features such as containers, service meshes, microservices, immutable infrastructure, and declarative application programming interfaces (APIs) best illustrate this approach.

Cloud-native refers to the concept of building and running applications to take advantage of the distributed computing offered by the cloud delivery model. Cloud-native apps are designed and built to exploit the scale, elasticity, resiliency, and flexibility the cloud provides.

Cloud-native is divided into four sections

  • Microservices
  • Containers
  • DevOps
  • Continuous Delivery

Microservices A microservices architecture consists of a collection of small, autonomous services. Each service is self-contained and should implement a single business capability.

Source: https://azure.microsoft.com/en-us/campaigns/cloud-application-architecture-guide

Container Once you have a large number of microservices all running in Docker containers, you need a way to manage or orchestrate those containers to make sense as an application. This is where you need an orchestrator (cluster manager) like Kubernetes or Docker Swarm or others.

DevOps is the collaboration between software developers and IT operations to automate the process of software delivery & infrastructure changes.

Continuous Delivery enables applications to be released quickly, reliably & frequently, with less risk.

Cloud-Native Service Models: All service models give options in terms of cost and operations across cloud service providers (AWS, Azure, GCP, and others)

  • CAAS — Container as a service
  • FAAS — Function as a service
  • PAAS — Platform as a service
  • IAAS — Infrastructure as a service
  • DBaaS — Database as a service

Cloud-native development achieves its magic by linking and automating the work of systems development, systems support, and IT operations teams. The speed of pushing new software to production increases dramatically, while quality improves as opportunities for error are removed from previously manual processes.

In this blog post, I am putting together a setup of CaaS and FaaS with all the points discussed in this 5 part series. If I can represent the complex setup of IaC, Services, and application CICD workflow in a simplified diagram. It looks like below.

IaC, Hub-Spoke, CaaS, FaaS, CICD (drawn using draw.io)

Organizations are looking at cloud-native architectures yet they do not want to be locked into a single cloud service provider, This is pushing for cloud-agnostic ideas. Let discuss 2 tools
- Dapr
- Knative

  1. DAPR : What is Dapr?

Dapr helps developers build event-driven, resilient distributed applications. Whether on-premises, in the cloud, or on an edge device, Dapr helps you tackle the challenges that come with building microservices and keeps your code platform agnostic.

Source https://cloudblogs.microsoft.com/opensource/2019/10/16/announcing-dapr-open-source-project-build-microservice-applications/

2. Knative: is an open source community project which adds components for deploying, running, and managing serverless, cloud-native applications to Kubernetes. The serverless cloud computing model can lead to increased developer productivity and reduced operational costs.

Knative consists of 3 primary components:

  • Build — A flexible approach to building source code into containers.
  • Serving — Enables rapid deployment and automatic scaling of containers through a request-driven model for serving workloads based on demand.
  • Eventing — An infrastructure for consuming and producing events to stimulate applications. Applications can be triggered by a variety of sources, such as events from your own applications, cloud services
Source https://knative.dev/blog/2018/11/14/build-deploy-manage-modern-serverless-workloads-using-knative-on-kubernetes/

Sign up to discover human stories that deepen your understanding of the world.

--

--

Ram Bhagat Suthar
Ram Bhagat Suthar

Written by Ram Bhagat Suthar

This is a personal blog. Opinions represented in this blog are personal.

No responses yet

Write a response