November 9, 2022

Libelle IT Glossary Part 19: What is "The Twelve-Factor App" Method?

AuthorMattia de Filippo

Software as a Service (SaaS) has been an important part of the IT landscape for years, especially in the area of software development.

There are very specific requirements to be met:

  • automated configuration
  • optimal compatibility with the operating system
  • demand-oriented cloud usage
  • Flexible scalability

When developing a software solution or a web app, these criteria are particularly important and are also evaluated by users. The Twelve-Factor App is a method for implementing development objectively as well as efficiently.

But what exactly is "The Twelve-Factor App" method?

The method is primarily intended to helping developers in order to build apps that run as services. But also the administrators who manage or deploy these apps.

It offers the opportunity to raise awareness of system-related problems within current application development, provide a common vocabulary to discuss these problems, and a solution portfolio to these problems with associated terminology.

The developers behind the 12-Factor framework are experts who have worked on many app developments for the "Heroku" cloud application platform. A major advantage of the Heroku cloud is that, as an open source project, it allows developers  as well as users to have efficient development work done by experts working internationally. (Source)

General requirements

A declarative format is used in order to automate configuration. Therefore ,  time and cost for new developers in the project can be minimized.

A clean foundation is being established with the underlying operating system in order  to provide maximum portability between execution environments.

The agreement on a modern cloud platform is important for the deployment to reduce the effort for servers and their administration.

To enable maximum agile continuous deployment, it is important to minimize the divergence between development and production.

Scalability in architecture or development procedures without significant changes in the tool is also a common requirement.

In addition, the twelve-factor method can be applied to apps written in any programming language, using any combination of supporting services (database, queue, cache, ...). (Source)

The twelve factors at a glance

These twelve points are a synthesis of numerous experiences and the observations of a wide range of software-as-a-service apps:

  • Codebase
    One codebase managed in the version management system, many deployments.
  • Dependencies
    Explicitly declare and isolate dependencies
  • Configuration
    Store configuration in environment variables
  • Supporting services
    Treat supporting services as attached resources
  • Build, release, run
    Strictly separate build and run phases
  • Processes
    Run the app as one or more processes
  • Binding to ports
    Export services by binding to ports
  • Concurrency
    Scale with the process model
  • Single-use
    More robust with fast start and smooth stop
  • Dev-Prod Comparability
    Keep development, staging and production as similar as possible
  • Logs
    Treat logs as a stream of events
  • Admin processes
    Treat admin/management tasks as one-off operations (Source)

In subsequent blog posts on "The Tweleve-Factor App," we'll go into more detail about the twelve factors.

Want more IT terms and exciting topics? Then feel free to visit the other parts of our Libelle IT Glossary, our IT blog or follow us on LinkedIn.

Recommended articles
December 22, 2022 Libelle IT Glossary Part 22: What is DevOps?
November 30, 2022 The 12 Factor App Part 3: (Disposability, Dev/prod parity, Logs, Admin processes)

All blog articles