mirror of
https://github.com/kennethreitz/twelve-factor.git
synced 2026-06-05 23:00:17 +00:00
41 lines
1.9 KiB
Markdown
41 lines
1.9 KiB
Markdown
# Twelve-Factor Vision
|
|
|
|
The twelve-factor manifesto defines **ideal practices for app development** to
|
|
minimize fragility, foster maintainable growth, reduce collaboration friction,
|
|
and prevent software erosion. It provides a shared vocabulary for discussing
|
|
these practices and offers clear, actionable recommendations.
|
|
|
|
The essence of Twelve-Factor is a **clear contract between an application and
|
|
its execution platform.**
|
|
|
|
Twelve-Factor focuses on reducing cognitive load for the application developer
|
|
and offers prescriptive practices to limit the responsibilities and therefore
|
|
concerns of the application. These practices are most powerful when they are
|
|
implemented into application frameworks and cloud platforms, enabling
|
|
developers to **operationalize for free**.
|
|
|
|
The manifesto includes three types of content:
|
|
|
|
* **Factors:** the twelve most important principles for applications and
|
|
platforms to follow.
|
|
* **Examples:** descriptions that show how the principles apply in different
|
|
scenarios.
|
|
* **Guidelines:** concrete requirements for complying with the factors.
|
|
|
|
The content adheres to four basic tenets:
|
|
|
|
1. **Selective**: deliberately constrained, trading flexibility for focus and
|
|
shared understanding.
|
|
2. **Specific:** detailed enough to be used by developers, platforms, and
|
|
frameworks.
|
|
3. **Clear:** easy to understand and apply for all audiences.
|
|
4. **Relevant:** timeless concepts and up-to-date examples.
|
|
|
|
Following Twelve-Factor implies a loss of control at the application layer, but
|
|
**it rewards this sacrifice with substantial value.** This value comes from the
|
|
factors' emphasis on development practices that improve operability,
|
|
**addressing day-two concerns on day one**. As a result, a twelve-factor
|
|
application is secure, configurable, observable, predictable, and updatable.
|
|
These attributes enable it to scale with changing demand, integrate easily into
|
|
larger systems, and remain portable across platforms.
|