twelve-factor laravel
Empower your Laravel project as cloud native application
![](https://s3.amazonaws.com/media-p.slid.es/uploads/793759/images/4395534/docker_pack.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/793759/images/4395537/laravel.svg.png)
$: whoami
Dario TRANCHITELLA
(aka prometherion)
Former Software Engineer,
switched to the dark side of
DevOps
DevOps Engineer @ Kiratech
![](https://s3.amazonaws.com/media-p.slid.es/uploads/793759/images/4366943/DarioTranchitella.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/793759/images/4366980/kiratech_square.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/793759/images/4396594/HLp8z11.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/793759/images/4366953/screencap.gumproast01.jpg)
NOt many slides, just demos...
![](https://s3.amazonaws.com/media-p.slid.es/uploads/793759/images/4366970/xzrgdtxsctxpqfxk.png)
...hoping everything goes fine!
(meme courtesy of @liuggio)
I.
code
base
One codebase tracked in revision control, many deploys.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/793759/images/4367006/One-does-not-simply-understand-git-meme-60285.jpg)
II.
DEPENDENCIES
Explicitly declare and isolate dependencies
(A twelve-factor app never relies on implicit existence of system-wide packages)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/793759/images/4367033/logo-composer-transparent.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/793759/images/4367042/AppLogo_Docker.png)
+
III.
CONFIG
The twelve-factor app stores config in environment variables.
Env vars are easy to change between deploys without changing any code.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/793759/images/4367432/nER7ju.png)
IV.
BACKING SERVICES
Treat backing services as attached resources.
V.
Build,
release, run
A codebase is transformed into a (non-development) deploy through these three stages.
VI.
PROCESSES
Execute the app as one or more stateless processes.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/793759/images/4395515/513914.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/793759/images/4367042/AppLogo_Docker.png)
+
VII.
Port binding
Export services via port binding.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/793759/images/4367042/AppLogo_Docker.png)
VIII. Concurrency
Scale out via the process model.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/793759/images/4367042/AppLogo_Docker.png)
IX. DISPOSABILITY
Maximize robustness with fast startup and graceful shutdown.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/793759/images/4367042/AppLogo_Docker.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/793759/images/4396657/Self-promotion.jpg)
X.
DEV/PROD PARITY
Keep development, staging, and production as similar as possible.
XI.
LOGS
Treat logs as event streams.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/793759/images/4367042/AppLogo_Docker.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/793759/images/4395537/laravel.svg.png)
+
XII.
Admin processes
Run admin/management tasks as one-off processes.
REFERENCES
- https://12factor.net
https://www.docker.com
https://laravel.com
https://github.com/prometherion/laravelday-2017
- https://twitter.com/tranchitellad
- http://www.kiratech.it
Q&A TIME!
![](https://s3.amazonaws.com/media-p.slid.es/uploads/793759/images/4395732/1_dgdxXzg8AV3qvVap1cKTrg.jpeg)
LaravelDay 2017
By Dario Tranchitella
LaravelDay 2017
- 1,704