what is a cloud-native application? of cloud-native applications. ... find the seams; use good sdlc...

10
1 What is a Cloud-Native Application?

Upload: dodieu

Post on 23-May-2018

225 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: What is a Cloud-Native Application? of Cloud-Native Applications. ... find the seams; use good SDLC practices = Dev Productivity; ... ZDD; design for cloud, use PCF features

1

What is a Cloud-Native Application?

Page 2: What is a Cloud-Native Application? of Cloud-Native Applications. ... find the seams; use good SDLC practices = Dev Productivity; ... ZDD; design for cloud, use PCF features

2

SafetySpeed Scale

Then

Now

Big design up front

Large, infrequent releases

Infrequent validation

Over-engineering

Emergent design

Continuous releases

Constant feedback

Build only what you need

Heavyweight process

Segregation of duties

Tight change control

Uptime SLAs

Lightweight process

Collaboration and self-service

User validation and application visibility

Assumed failure

Buy bigger servers

Plan for peak usage

In-memory state

Add more servers

Add capacity when it’s needed

Stateless applications

Page 3: What is a Cloud-Native Application? of Cloud-Native Applications. ... find the seams; use good SDLC practices = Dev Productivity; ... ZDD; design for cloud, use PCF features

3

CONTINUOUS Builds, test, and package your

software continuously. Always be shipping.

API FIRST Establish clear contracts between services before developing any

application code.

MICROSERVICES Loosely couple services.

Built by small teams. Fit to your domain.

ANTI-FRAGILE There will be failures.

Your system shouldn't be one of them.

12-FACTOR Principles and patterns for

applications running on a modern platform.

SELF-SERVICE Developers can request and

provision services automatically. An API for every dependency.

Characteristics of Cloud-Native Applications

Page 4: What is a Cloud-Native Application? of Cloud-Native Applications. ... find the seams; use good SDLC practices = Dev Productivity; ... ZDD; design for cloud, use PCF features

API-First Development

4

• Defines the contract for each service before its is built

• Sets clear expectations

• Enables test-first at the services level

• Allows you to work with stakeholders BEFORE you have working software

• Enables multiple channels from the beginning

• Prevents dependencies between teams

Page 5: What is a Cloud-Native Application? of Cloud-Native Applications. ... find the seams; use good SDLC practices = Dev Productivity; ... ZDD; design for cloud, use PCF features

Anti-Fragility and Design For Failure

5

• You can’t avoid failure…prepare for it

– Your system should get stronger when subjected to failures

• Cloud providers don’t guarantee anything

• Assume a fragile infrastructure

• Handle failures gracefully

• Simulate failures in production

Page 6: What is a Cloud-Native Application? of Cloud-Native Applications. ... find the seams; use good SDLC practices = Dev Productivity; ... ZDD; design for cloud, use PCF features

Twelve-Factor Applications

6

I. One Codebase, One App*

II. Dependency Management*

V. Build, Release, Run*

III. Configuration*

XI. Logs*

IX. Disposability

IV. Backing Services

X. Environmental Parity*

XII. Administrative Process

VII. Port Binding*

VI. Process

VIII. Concurrency

VALUE & APPROACH= Time to Market; find the seams; use good SDLC practices

= Dev Productivity; standardize & remove surprises

= Release Mgmt Hygiene; use CI/CD automation /w PCF

= Release Mgmt Hygiene; move to environment vars

= Real-Time Metrics; use PCF features; stdout / stderr

= Auto-Scale; move slow processes to backing services

= Resiliency / Agility; use circuit breaker; loose binding

= Reliability; use well architected PCF, get parity

= Reliability; move to backing service(s), expose as REST

= Ops Efficiency; use PCF features like routing, scaling, etc.

= Cloud Compatibility; move state to backing service(s)

= Auto-Scale, ZDD; design for cloud, use PCF features

Page 7: What is a Cloud-Native Application? of Cloud-Native Applications. ... find the seams; use good SDLC practices = Dev Productivity; ... ZDD; design for cloud, use PCF features

Continuous Delivery

7

• You’re doing continuous delivery when:

– Your software is deployable throughout its lifecycle

– Your team prioritizes keeping the software deployable over working on new features

– Anybody can get fast, automated feedback on the production readiness of their systems any time somebody makes a change to them

– You can perform push-button deployments of any version of the software to any environment on demand

Martin Fowler, May 2013

Page 8: What is a Cloud-Native Application? of Cloud-Native Applications. ... find the seams; use good SDLC practices = Dev Productivity; ... ZDD; design for cloud, use PCF features

Microservices

8

MicroserviceMicroservice

MicroserviceMicroservice

MicroserviceMicroservice

Microservice

A

MicroserviceMicroservice

Microservice

B

C

MicroserviceMicroservice

E

MicroserviceMicroservice

Microservice

D

MicroserviceMicroservice

Microservice

H

MicroserviceMicroservice

MicroserviceMicroservice

G

MicroserviceMicroservice

F

Independently scalable

First-in First-out (FIFO) Queue

Publish-Subscribe (Pub-Sub)

Queue

Multiple messaging paradigms

Independent state

Explicitly defined contracts

Built by small, independent, and cross-functional teams

No deployment dependencies

Designed and implemented for a single business domain

Page 9: What is a Cloud-Native Application? of Cloud-Native Applications. ... find the seams; use good SDLC practices = Dev Productivity; ... ZDD; design for cloud, use PCF features

Self-Service Infrastructure

9

• Code running on dedicated disposable infrastructure

• Services developers can request and provision automatically

• Automated and on-demand scaling of application instances

• Application health management

• Dynamic routing and load balancing of requests to and across application instances

• Aggregation of logs and metrics

Cloud Native Framework

Application Framework

Runtime Platform

Infrastructure Automation

Infrastructure

Page 10: What is a Cloud-Native Application? of Cloud-Native Applications. ... find the seams; use good SDLC practices = Dev Productivity; ... ZDD; design for cloud, use PCF features