labs/12factor
Zachary Wilson f99b42e346 Update 00_application.md
Add instruction to launch the application before creating new messages.
2017-09-07 08:48:35 -05:00
..
00_application.md Update 00_application.md 2017-09-07 08:48:35 -05:00
01_codebase.md
02_dependencies.md
03_configuration.md fix issues preventing Sails app from starting 2017-06-15 20:12:37 +03:00
04_external_services.md
05_build_release_run.md
06_processes.md
07_port_binding.md
08_concurrency.md
09_disposability.md First push to convert all Docker Hub references to Docker Cloud and Docker Store 2017-06-09 15:03:37 -07:00
10_dev_prod_parity.md First push to convert all Docker Hub references to Docker Cloud and Docker Store 2017-06-09 15:03:37 -07:00
11_logs.md
12_admin_processes.md
README.md

README.md

12 Factor Application

Today, a lot of applications are services deployed in the cloud, on infrastructure of cloud providers such as Amazon AWS, Google Compute Engine, DigitalOcean, Rackspace, OVH, ...

Heroku is PaaS (Platform as a Service) that relies on Amazon AWS and which makes the deployment of applications as easy as git push heroku master (ran from the root of your application).

With the huge number of applications deployed on Heroku, engineers of the company acquired a great knowledge of what should be done to get cloud native application.

12 factor methodology is the result of their observations. As the name states, it presents 12 principles that will help application to be cloud ready, horizontally scalable, and portable.

Organisation of this lab

In this lab, we will start by building a simple Node.js application as an HTTP Rest API exposing CRUD (Create / Read / Update / Delete) verbs on a message model.

HTTP verb URI Action
GET /message list all messages
GET /message/ID get message with ID
POST /message create a message user
PUT /message/ID modify message with ID
DELETE /message/ID delete message with ID

We will then follow each one of the 12 factor and see how this can leverage our application. At the same time, we will see that Docker is a really great fit for several of those factors.

Let's get started !

Build the application

1 - Codebase

2 - Dependencies

3 - Configuration

4 - External services

5 - Build / Release / Run

6 - Processes

7 - Port binding

8 - Concurrency

9 - Disposability

10 - Dev / Prod parity

11 - Logs

12 - Admin processes

Do not hesitate to provide comments / feedback you may have in order to improve this lab.