The Twelve Factor App is a methodology used for building software-as-a-service applications. The methodology consists of twelve different factors, which when implemented correctly, result in an extendable, deployable, maintainable and scalable application.

The Twelve Factors

as per 12factor.net.

Codebase

One codebase tracked in revision control, many deploys

Dependencies

Explicitly declare and isolate dependencies

Config

Store config in the environment

Backing services

Treat backing services as attached resources

Build, release, run

Strictly separate build and run stages

Processes

Execute the app as one or more stateless processes

Port binding

Export services via port binding

Concurrency

Scale out via the process model

Disposability

Maximize robustness with fast startup and graceful shutdown

Dev/prod parity

Keep development, staging, and production as similar as possible

Logs

Treat logs as event streams

Admin processes

Run admin/management tasks as one-off processes