12 factors to cloud success - developermarch · apache deltaspike p.m.c [email protected]...

39
Rafael Benevides 12 Factors to Cloud Success

Upload: others

Post on 20-May-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

Rafael Benevides

12 Factors to Cloud Success

Page 2: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

2

12 Factors to Cloud Success

Rafael Benevides

http://bit.ly/12factors-app

Page 3: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

Rafael Benevides

Director of Developer Experience at Red Hat

Apache DeltaSpike P.M.C

[email protected]

@rafabene

Java Certifications:

SCJA / SCJP / SCWCD / SCBCD / SCEA

JBoss Certifications:

JBCD / JBCAA

Red Hat Certifications:

OpenShift / Containers / Ansible

Other Certifications:

SAP Netweaver / ITIL / IBM Software Quality

Page 4: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene @burrsutter developers.redhat.com

http://developers.redhat.com

Page 5: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

One day...

Page 6: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

What are the humans

"super powers"?

Page 7: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

Thinking has taken us where no one has gone before.

Page 8: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

until they've decided to become PROGRAMMERS

Humans had been problem solvers...

Page 9: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

Problem solving loop

Identify a

Analyze cause and effect

Identify the

Page 10: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

What should we do with a solution?

Page 11: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

Share engage people. Together we are stronger!

Page 12: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

● A methodology

● Manifesto

● Best practices

● Principles

Created by

Page 13: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

1. Codebase

2. Dependencies

3. Config

4. Backing services

5. Build, release, run

6. Processes

7. Port binding

8. Concurrency

9. Disposability

10.Dev/prod parity

11.Logs

12.Admin processes

Page 14: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

1 - Codebase

One codebase tracked in revision control, many deploys

Page 15: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

1 - Codebase (What does it mean?)

Use Version Control - But use it the right way!

App 2 repository

App 3 repository App 3

package

App 3 deploy

environments

App 2

package

App 2 deploy

environments

App 1 repository App 1

package

App 1 deploy

environments

Page 16: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

Same App but different repos

1 - Codebase (DO NOTs)

Production

App package

QA

App package Development

App repository 1

App repository 2

DO NOT have different codebases for different deployments

Page 17: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

1 - Codebase (DO NOTs)

App 2

package The one

repository

App 1

package

App 3

package

DO NOT have multiple apps and docs in the same repo

Page 18: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

2 - Dependencies

Explicitly declare and isolate dependencies

Page 19: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

2 - Dependencies (What does it mean?)

● Use a package manager to avoid dependency hell.

● Don't commit dependencies in the codebase repository.

Page 20: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

Let's take a detour to factor 5

We will return to factors 3 and 4 later

Page 21: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

5 - Build, release, run

Strictly separate build and run stages

Page 22: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

5 - Build, release, run (What does it mean?)

Stage Who? What? Why?

Build CI WAR / JAR / etc Avoid "It works in my machine"

Release CD Container image Deployments / Updates and Rollbacks

Run Platform Container instance Speed, Management, Orchestration

The twelve-factor app uses strict separation between the build, release, and run stages.

● Every release should always have a unique release ID

● Releases should allow rollbacks

Page 23: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

Let's go back to the factor

3

Page 24: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

3 - Config

Store config in the environment

Page 25: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

3 - Config (What does it mean?)

If you have to repackage your application, you're doing it wrong!

Prefer to store the config in Environment Variables

Page 26: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

4 - Backing Services (What does it mean?)

Treat backing services as attached resources

Page 27: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

6 - Processes (What does it mean?)

Execute the app as one or more stateless processes

Twelve-factor processes are stateless and share-nothing

Page 28: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

7 - Port Binding (What does it mean?)

Export services via port binding

Port: 5000 mysql: 3306

Port: 80

$MYSQL_SERVICE_PORT

App - Port: 8080

The twelve-factor app is completely self-contained

Page 29: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

8 - Concurrency

Scale out via the process model

Page 30: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

8 - Concurrency (What does it mean?)

● You can scale up and out ● Scale processes types ● Workload diversity ● It "advocates" for Microservices

Page 31: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

9 - Disposability (What does it mean?)

Maximize robustness with fast startup and graceful shutdown

● Processes can be started or stopped at a moment’s notice ● Processes should minimize startup time ● Processes shut down gracefully when they receive a SIGTERM ● Processes should also be robust against sudden death

Pets

Vs

Cattle

Page 32: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

10 - Dev/prod parity Keep development, staging, and production as similar as possible

Page 33: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

10 - Dev/prod parity (What does it mean?)

The twelve-factor app is designed for continuous deployment by keeping the gap between development and production small

Page 34: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

11 - Logs (What does it mean?)

A twelve-factor app never concerns itself with routing or storage of its output stream

Treat logs as event streams

Process

Log stream

Page 35: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

12 - Admin processes (What does it mean?)

Run admin/management tasks as one-off processes

Main Process

Admin process

Page 37: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene developers.redhat.com

http://developers.redhat.com http://developers.redhat.com

Page 38: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

@RAFABENE

Page 39: 12 Factors to Cloud Success - DeveloperMarch · Apache DeltaSpike P.M.C benevides@redhat.com @rafabene Java Certifications: SCJA / SCJP / SCWCD / SCBCD / SCEA JBoss Certifications:

@rafabene

www.modsummit.com

www.developersummit.com