the twelve-factor app methodology - yo briefca · 2020-02-14 · the twelve-factor app methodology...

26
THE TWELVE-FACTOR APP METHODOLOGY A METHODOLOGY FOR BUILDING SOFTWARE-AS- A-SERVICE APPS

Upload: others

Post on 22-May-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

THE TWELVE-FACTOR APP METHODOLOGY

A METHODOLOGY FOR BUILDING SOFTWARE-AS-

A-SERVICE APPS

Page 2: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

CODEBASE

ONE CODEBASE TRACKED IN REVISION CONTROL,

MANY DEPLOYS

Page 3: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

CODEBASE DEPLOYMENTS

Page 4: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

DEPENDENCIES

EXPLICITLY DECLARE AND ISOLATE DEPENDENCIES

Page 5: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

DECLARE ISOLATE

lorem 1.1.0 ipsum 3.2.1 dolor 4.6.0 sit 1.6.1

lorem 1.1.0 ipsum 3.2.1 dolor 4.6.0 sit 1.6.1

lorem 1.1.0 ipsum 3.2.1 dolor 4.6.0 sit 1.6.1

lorem 1.1.0 ipsum 3.2.1 dolor 4.6.0 sit 1.6.1

lorem 1.1.0 ipsum 3.2.1 dolor 4.6.0 sit 1.6.1

Page 6: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

CONFIG

STORE CONFIG IN THE ENVIRONMENT

Page 7: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

db_user=… db_pswd=…

api_url=…+ =

Page 8: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

BACKING SERVICES

TREAT BACKING SERVICES AS ATTACHED RESOURCES

Page 9: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

postgresql://localhost/test?user=fred&password=secret

smb://myserver.mydomain.com/Sharepoint/catpics

https://api.authenticator.com:9876/app/97yt6772

Page 10: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

BUILD, RELEASE, RUN

STRICTLY SEPARATE BUILD AND RUN STAGES

Page 11: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

BUILD

BUILD

CONFIG

RELEASE RUN

RELEASE+

BUILD

Page 12: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

PROCESSES

EXECUTE THE APP AS ONE OR MORE STATELESS

PROCESSES

Page 13: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

THIS PAGE INTENTIONALLY LEFT BLANK* ITS A STATE JOKE

Page 14: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

PORT BINDING

EXPORT SERVICES VIA PORT BINDING

Page 15: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

ssh::2222 ϟ ⇾

http::4889 ϟ ⇾

xmpp::5222 ϟ ⇾

http::8080 ϟ ⇾APP APP APP

———— :( ————

OPERATING SYSTEM

APP

APP

APP

OS

Page 16: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

CONCURRENCY

SCALE OUT VIA THE PROCESS MODEL

Page 17: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

OPERATING SYSTEM

WEB.1 WORKER.1 CRON.1

WORKER.2

WORKER.3

WEB.2

Page 18: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

DISPOSABILITY

MAXIMIZE ROBUSTNESS WITH FAST STARTUP AND

GRACEFUL SHUTDOWN

Page 19: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

APP

✖_✖ APP

APP ✖_✖

Page 20: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

DEV/PROD PARITY

KEEP DEVELOPMENT, STAGING, AND PRODUCTION AS SIMILAR AS POSSIBLE

Page 21: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

DEV STAGE

PROD

MYSQL MARIADB ORACLE

APACHE APACHE NGINX

OSX CENTOS REDHAT

BUILDING AN EVEN MORE PERFECT ASSHOLE PARADE

Page 22: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

LOGS

TREAT LOGS AS EVENT STREAM

Page 23: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

APP.1 APP.2

M1 M2 M1 M1 M2 M1 M2

ϟ ϟ

M1 M2M1 M1M2 M1 M1

M2M2 M2

M2M2

Page 24: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

ADMIN PROCESSES

RUN ADMIN/MANAGEMENT TASKS AS ONE-OFF

PROCESSES

Page 25: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

RELEASEdb:migrate ϟ ⇾

lein repl ϟ ⇾ >_

Page 26: THE TWELVE-FACTOR APP METHODOLOGY - Yo Briefca · 2020-02-14 · the twelve-factor app methodology a methodology for building software-as-a-service apps. codebase one codebase tracked

http://12factor.net