labs/12factor/README.md

2.0 KiB

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.