Skip to content

Jaggies Weekly

The Twelve-Factor App: Introduction

Dev, Architecture pattern, The Twelve-Factor App, English1 min read

The Twelve-Factor app aims to provide the following benefits to your modern application:

  • A well-organized or declarative setup automation that aims to simplify the onboarding process for new developers joining the project and reduce the time and costs associated with that task;
  • Provides a clean contract with the operating system, maximizing portability between execution environments;
  • Aims to facilitate easy deployment on modern cloud platforms, eliminating the need for servers and system administration;
  • Minimizes discrepancies between environments, ensuring all environments have the latest features up and running, enabling continuous deployment for maximum agility;
  • Enables scaling up without requiring major changes, such as altering architecture, tooling, or development practices.

This can be implemented in apps written in any programming language and utilizing any combination of backing services (database, queue, memory, cache, etc).

The document leverages developers' experiences and observations regarding the wide variety of software-as-a-service available in the industry. The document was created by developers who have been involved in the development, deployment, operation, and scaling of hundreds of apps through their work on the Heroku platform. It focuses on ideal practices for app development, particularly emphasizing the organic growth of an app over time, fostering collaboration dynamics among developers working on the codebase, and avoiding the costs associated with software erosion.

The motivation behind this document was to raise awareness of systemic problems encountered in modern application development, establish a shared vocabulary for discussing these issues, and offer solutions to address these challenges.

This Twelve-Factor App post series is a means for me to consolidate the knowledge I've gained while studying these rules. Please feel free to visit the site for more detailed explanations. That's all folks!