1 Introduction to Cloud Native

This chapter covers:

  • What are the cloud and the cloud computing model
  • The definition of cloud native
  • Characteristics of cloud native applications
  • Culture and practices supporting cloud native
  • When and why you might consider the cloud native approach
  • Topologies and architectures for cloud native applications

Cloud native applications are highly distributed systems that live in the cloud and are resilient to change. Systems are made up of several services, which communicate through a network and are deployed in a dynamic environment where everything keeps changing.

Before diving into Spring, Docker, and Kubernetes, it’s fundamental to define what cloud native is first. Like other buzzwords in our field (such as Agile, DevOps, or Microservices), Cloud Native is sometimes misunderstood and is a source of confusion because it means different things to different people.

1.1 What is cloud native?

1.1.1 The Three P’s of Cloud Native

1.2 The cloud and the cloud computing model

1.2.1 Infrastructure as a Service

1.2.2 Container as a Service

1.2.3 Platform as a Service

1.2.4 Function as a Service

1.2.5 Software as a Service

1.3 Properties of cloud native applications

1.3.1 Scalability

1.3.2 Loose coupling

1.3.3 Resilience

1.3.4 Observability

1.3.5 Manageability

1.4 Culture and practices supporting cloud native

1.4.1 Automation

1.4.2 Continuous delivery

1.4.3 DevOps

1.5 Is the cloud your best option?

1.5.1 Speed

1.5.2 Resilience

1.5.3 Scale

1.5.4 Cost

1.6 Cloud native topologies