Skip to main content

12 factor app (Twelve-factor app)


Twelve-factor app is a methodology for building distributed applications that run in the cloud and are delivered as a service. The approach was developed by Adam Wiggins, the co-founder of Horoku, a platform-as-a-service which is now part of Salesforce.com. Wiggin's goal was to synthesize best practices for deploying an app on Horoku and provide developers who are new to the cloud with a framework for discussing the challenges of native cloud applications.
Although some factors may seem self-evident to developers today, interest in developing apps that adhere to common best practices continues to grow with the rise of microservices and applications that are composed of loosely-coupled web services.
12 factors developers should think about when building native cloud apps:
1. Code base
Use one codebase, even when building cross-platform apps. Address the needs of specific devices with version controls.
 2. Dependencies
Explicitly declare and isolate all dependencies.
 3. Configuration
Don't store config as constants in code. Design the app to read its config from the environment.
 4. Backing Services
Treat back-end services as attached resources to be accessed with a URL or other locator stored in config.
 5. Build, Release, Run
Strictly separate build and run stages.
 6. Processes
Execute the app as one or more stateless processes. Data that must be persistent should be stored in a stateful backing service.
 7. Port binding
Use port binding to export services.
 8. Concurrency
Scale out apps horizontally, not vertically.
 9. Disposability
Use fast startups and graceful shutdowns to maximize robustness.
 10. Parity
Facilitate continuous deployment by making development, staging, and production environments as similar as possible.
 11. Logs
Treat logs as event streams. Logs should not be concerned with routing or storing the app's output.
 12. Admin processes
Run admin tasks as one-off processes from a machine in the production environment that's running the latest production code.
 The 12-factor basics
When a developer uses the twelve-factor app DevOps methodology, applications will have certain characteristics in common that address a variety of scenarios as an app scales. For example, the methodology recommends that apps use declarative formats for setup automation to assist new developers that enter the project at a later time.
Apps should also be written to have maximum portability between execution environments. and scale easily without significant reworking. Twelve-factor apps can be written in any programming language and in combination with any back-end service, such as a database.
The goal of the twelve-factor framework is to help developers build apps that use an architecture that ensures speed, reliability, agility, portability and ultimately results in a robust and reliable application.


Comments

Popular posts from this blog

A Graphics Processing Unit (GPU)

A graphics processing unit (GPU) is a computer chip that performs rapid mathematical calculations, primarily for the purpose of rendering images. A GPU may be found integrated with a central processing unit (CPU) on the same circuit, on a graphics card or in the motherboard of a personal computer or server. In the early days of computing, the CPU performed these calculations. As more graphics-intensive applications such as AutoCAD were developed; however, their demands put strain on the CPU and degraded performance. GPUs came about as a way to offload those tasks from CPUs, freeing up their processing power. NVIDIA, AMD, Intel and ARM are some of the major players in the GPU market. GPU vs. CPU A graphics processing unit is able to render images more quickly than a central processing unit because of its parallel processing architecture, which allows it to perform multiple calculations at the same time. A single CPU does not have this capability, although multi...

What's the difference between two-step verification and 2FA?

  The two terms, two-step verification, and two-factor authentication are synonymous, though the former is now being used more widely by the likes of Google, Microsoft, and Apple as it better conveys how the actual authentication process works. In the past, two-step verification was used to describe processes that used the same authentication factors, while two-factor authentication described processes that involved different factors, such as entering a password on a website and receiving a numerical code on a mobile device. Today, the two terms are both used to describe authentication that involves a secondary factor that is different from the first. Authentication is a vital element of access control and data security because users can be assigned access rights and be authorized to perform certain actions only after successful authentication is performed. The ways in which someone can be authenticated fall into three categories based on what is known ...

Black Swan Event

A black swan event is an incident that occurs randomly and unexpectedly and has wide-spread ramifications. The event is usually followed with reflection and a flawed rationalization that it was inevitable. The phrase illustrates the frailty of inductive reasoning and the danger of making sweeping generalizations from limited observations. The term came from the idea that if a man saw a thousand swans and they were all white, he might logically conclude that all swans are white. The flaw in his logic is that even when the premises are true, the conclusion can still be false. In other words, just because the man has never seen a black swan, it does not mean they do not exist. As Dutch explorers discovered in 1697, black swans are simply outliers -- rare birds, unknown to Europeans until Willem de Vlamingh and his crew visited Australia. Statistician Nassim Nicholas Taleb uses the phrase black swan as a metaphor for how humans deal with unpredictable events in his 2007...