The 12-Factor App

A Methodology for Building SaaS Stacks

The 12-Factor App is a set of guidelines for building Apps. This lightweight methodology was developed by engineers from Heroku who had observed the patterns of development and their performance over hundreds of thousands of customer applications deployed on the Heroku platform.

We use this methodology at Starter to maintain Agility and allow for rapid development while lessening the cost of change.

One of the mandates of Starter StackGen is Unprecedented Maintainability -- a recognition that Apps and stacks are evolve over time and the ability of an organization to rapidly respond to business realities is directly related to process automation, CI/CD, processes and frameworks that are built from the ground-up for change.

Apps and stacks are not static things, they are usually works in progress that have a lifecycle which often involves maintaining and upgrading/updating the code over time.

Agile teams will recognize the advantages of quick iteration, automation and separation of concerns that the 12-Factor methodology promotes.

According to the (12-Factor App Website)[https://12factor.net], the 12-Factor app methodology was developed:

'Our motivation is to raise awareness of some systemic problems we’ve seen in modern application development, to provide a shared vocabulary for discussing those problems, and to offer a set of broad conceptual solutions to those problems with accompanying terminology.' -- the 12-Factor App

The Twelve Factors :

I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies III. Config Store config in the environment IV. Backing services Treat backing services as attached resources V. Build, release, run Strictly separate build and run stages VI. Processes Execute the app as one or more stateless processes VII. Port binding Export services via port binding VIII. Concurrency Scale out via the process model IX. Disposability Maximize robustness with fast startup and graceful shutdown X. Dev/prod parity Keep development, staging, and production as similar as possible XI. Logs Treat logs as event streams XII. Admin processes Run admin/management tasks as one-off processes