Cloud-Native Development

What is Cloud-Native Development?

Cloud-Native software development breaks away from the traditional model of building monolithic software applications and focuses instead on creating applications that leverage cloud environments. These applications are built independent from any underlying architecture and are engineered to benefit from a cloud-native architecture.

Within each cloud application are four underlying pillars: Microservices, Containers, Dynamic Orchestration, and Continuous Delivery.

Microservices

Microservices in cloud-native applications are services separated out to address a specific task. Since these services are loosely coupled with the underlying application, they can be updated or repaired without impacting other services.

This distinction allows microservices to be deployed and maintained more efficiently than traditional applications.

Containers

Just as virtual machines allow multiple operating systems to live on one machine, containers allow multiple apps to live on one virtual machine.

With containerization, applications are bundled with dependencies like libraries, configuration files, and binaries to expedite the process of deploying new applications and deploying updates to existing ones.

Dynamic Orchestration

Orchestration was introduced to the software development process to streamline the process of manually provisioning and configuring applications.

With DevOps time constrained by setting up new web servers, databases, and load balancers, orchestration creates efficiency by automating DevOps processes.

Continuous Delivery

Applications can easily be replicated to create a more efficient deployment workflow. While code can be updated through a code repository, the environment and configuration can just as easily be re-created by cloning existing applications and publishing them as needed.

From here, developers can use their individual workstations to write code, push to staging/development servers, and then ultimately have the code from development pushed to production.

00:10

What is a cloud-native application — is it really that much different from any other type of application?

01:07

What is Containerization, Orchestration and Microservices?

01:56

Why is it more valuable than just putting servers in someone else’s closet?

02:35

How much of this had to do with infrastructure and DevOps versus software engineering and software architecture?

03:23

Give me an example of a situation where application design decisions can be isolated from hardware and infrastructure concerns.

04:10

What are some concerns that software engineers and architects need to be aware of?

04:44

How do software architects need to change in order to fully leverage the cloud?

06:02

What considerations should I make when thinking about switching from a traditional cloud architecture to cloud-native?

07:01

What is a 12-factor app?

07:37

What is the best way to gets started building 12-factor apps?

08:45

How do you choose the right cloud architecture?

09:53

Are all cloud providers the same?

11:28

What are some reasons why you wouldn’t want to build applications using a cloud-native architecture?

12:34

What are some of the less obvious benefits of building cloud-native software?

14:08

What changes or predictions do you have for the future of software engineering and deployment?

16:00

What would you recommend as first steps for a company looking to create or rebuild an application for cloud-native?

16:38

What questions should my company ask that will help guide our next steps?