Monday, May 27, 2019

Word of the Day: 12 factor app

Word of the Day WhatIs.com
Daily updates on the latest technology terms | May 27, 2019
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.

Quote of the Day

 
"Any developer building cloud-based applications, most of which run as a service, should familiar with the 12 factors." - Michael Maximilien

Learning Center

 

CI/CD workflows, IT roles lead to organizational disharmony
Disparate CI/CD workflows within an organization can make it more difficult to build development stages into a DevOps pipeline, but the biggest barriers to progress are culture challenges, not technological ones.

Developing cloud applications must play by the rules -- all 12 of them
Scalability isn't enough when developing cloud applications. They need to be self-healing, self-restarting and able to recover their last state.

Manage app dependencies carefully for serverless platforms
Challenges with app dependencies on serverless platforms relate to native modules, deployment packages and more. Overcome them with these tips.

Cloud Foundry users grapple with stateful cloud-native apps
Stateful cloud-native apps remain a contradiction in terms, but Cloud Foundry PaaS users envision a future where persistent data services come into the 12-factor fold.

Container backup follows data persistence to these ephemeral apps
Following the addition of data persistence, container backup is the latest enhancement to these ephemeral applications. Container application data must be protected like all other enterprise data.

Quiz Yourself

 
Treating testing as a ________ rather than something that should be done continuously throughout software development is a recipe for defective software.
A. phase
B. faze

Answer

Stay in Touch

 
For feedback about any of our definitions or to suggest a new definition, please contact me at: mrouse@techtarget.com

Visit the Word of the Day Archives and catch up on what you've missed!

FOLLOW US

TwitterRSS
About This E-Newsletter
This e-newsletter is published by the TechTarget network. To unsubscribe from Whatis.com, click here. Please note, this will not affect any other subscriptions you have signed up for.
TechTarget

TechTarget, Whatis, 275 Grove Street, Newton, MA 02466. Contact: webmaster@techtarget.com

Copyright 2018 TechTarget. All rights reserved.

No comments: