0% found this document useful (0 votes)
102 views110 pages

12 Factor App

Uploaded by

Deepak Navaria
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
102 views110 pages

12 Factor App

Uploaded by

Deepak Navaria
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

© Copyright KodeKloud

12 Factor App

© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
Fast forward to today!

© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
DEMO – Cloud Provisioning

© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
https://12factor.net/

© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
I VII
Codebase Port Binding
II VIII
Dependencies Concurrency
III IX
Config Disposability
IV X
Backing Services Dev/prod parity
V XI
Build, release, run Logs
VI XII
Processes Admin Processes
© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
I
Codebase

© Copyright KodeKloud
Git Github Gitlab Bitbucket

>_ >_

$ git pull $ git push

© Copyright KodeKloud
☝️ Multiple apps sharing the same code is a violation of twelve-factor.

© Copyright KodeKloud
© Copyright KodeKloud
dev

staging

prod

© Copyright KodeKloud
© Copyright KodeKloud
II
Explicitly declare and isolate
dependencies

© Copyright KodeKloud
>_

$ pip install flask

© Copyright KodeKloud
☝️ A twelve-factor app never relies on implicit existence of system-wide packages.

II
Explicitly declare and isolate
dependencies

© Copyright KodeKloud
>_

$ pip install flask

© Copyright KodeKloud
>_ >_

$ pip install flask $ pip install –r requirements.txt

© Copyright KodeKloud
II
and isolate
dependencies

© Copyright KodeKloud
flask==2.0.0 flask==1.9.0

>_

$ curl

© Copyright KodeKloud
flask==2.0.0 flask==1.9.0

© Copyright KodeKloud
>_

$ docker build ....

© Copyright KodeKloud
>_

$ docker run ....

© Copyright KodeKloud
Docker Course & Labs Demo

© Copyright KodeKloud
© Copyright KodeKloud
III
Config

© Copyright KodeKloud
VIII
Concurrency

© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
Load Balancer

© Copyright KodeKloud
VIII
Concurrency

© Copyright KodeKloud
© Copyright KodeKloud
☝️ Twelve-factor processes are stateless and share-nothing.

VI
Processes

© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
visitCount=0 visitCount=2 visitCount=1

© Copyright KodeKloud
Sticky Sessions

visitCount=0 visitCount=2 visitCount=1

sessionInfo

© Copyright KodeKloud
☝️ Twelve-factor processes are stateless and share-nothing.

☝️ Sticky sessions are a violation of twelve-factor and should never be used or relied
upon.

VI
Processes

© Copyright KodeKloud
visitCount=0 visitCount=2 visitCount=1

sessionInfo

© Copyright KodeKloud
visitCount=0 visitCount=2 visitCount=1

sessionInfo

© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
IV
Backing Services

© Copyright KodeKloud
☝️ Treat backing services as attached resources.

© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
III
Config

© Copyright KodeKloud
© Copyright KodeKloud
© Copyright KodeKloud
☝️ The twelve-factor app stores config in environment variables.

III
Config

© Copyright KodeKloud
dev

staging

prod

© Copyright KodeKloud
© Copyright KodeKloud
V
Build, release, run

© Copyright KodeKloud
🤦‍♀️

© Copyright KodeKloud
🤦‍♀️

© Copyright KodeKloud
☝️The twelve-factor app uses strict separation between the build, release, and run
stages.

V
Build, release, run

© Copyright KodeKloud
flask-app-test:v1

flask-app-test:v2

flask-app-test:v3

flask-app-test:2023-02-25-09-52

flask-app-test

flask-app-test

app.exe

./app

>_

$ docker build

1. Build 2. Release

© Copyright KodeKloud
flask-app-test:v1

flask-app-test:v2

flask-app-test:v3

flask-app-test:2023-02-25-09-52

flask-app-test

flask-app-test

app.exe

./app

>_

$ docker build

1. Build 2. Release 3. Run

© Copyright KodeKloud
☝️The twelve-factor app uses strict separation between the build, release, and run
stages.

V
Build, release, run

© Copyright KodeKloud
© Copyright KodeKloud
VII
Port Binding

© Copyright KodeKloud
© Copyright KodeKloud
5001 5000 5002 6379

© Copyright KodeKloud
☝️The twelve-factor app is completely self-contained

VII
Port Binding

© Copyright KodeKloud
© Copyright KodeKloud
☝️ The twelve-factor app's processes are disposable, meaning they can be started or
stopped at a moment's notice.

IX
Disposability

© Copyright KodeKloud
>_ >_
$ docker stop .... $ docker stop ....

© Copyright KodeKloud
☝️ The twelve-factor app's processes are disposable, meaning they can be started or
stopped at a moment's notice.

☝️ The twelve-factor app's processes should shutdown gracefully when they receive a
SIGTERM signal from the process manager.

IX
Disposability

© Copyright KodeKloud
>_

$ docker stop ....

SIGTERM

SIGKILL

© Copyright KodeKloud
© Copyright KodeKloud
X
Dev/prod parity

© Copyright KodeKloud
dev

staging

prod

© Copyright KodeKloud
Time Gap Personnel Tools Gap
Gap

dev
Developer

staging

prod
Days Operations
Weeks

© Copyright KodeKloud
☝️ The twelve-factor app is designed for continuous deployment by keeping the gap
between development and production small.

☝️ The twelve-factor developer resists the urge to use different backing services
between development and production.

X
Dev/prod parity

© Copyright KodeKloud
Time Gap Personnel Tools Gap
Gap

dev
Developer

staging

prod
Hours
Days Developer
Operations
Minutes
Weeks +
Operations

© Copyright KodeKloud
© Copyright KodeKloud
XI
Logs

© Copyright KodeKloud
© Copyright KodeKloud
LogFile.txt LogFile.txt LogFile.txt

© Copyright KodeKloud
☝️ A twelve-factor app never concerns itself with routing or storage of its output
stream.

☝️ Store logs in a centralized location in a structured format.

XI
Logs

© Copyright KodeKloud
STDOUT STDOUT STDOUT

Logs Agent Logs Agent Logs Agent

© Copyright KodeKloud
© Copyright KodeKloud
XII
Admin Processes

© Copyright KodeKloud
visitCount=8K

© Copyright KodeKloud
visitCount=8K
visitCount=0

© Copyright KodeKloud
© Copyright KodeKloud

You might also like