12 Factor Compliance – What are the 12 Factors?

No comments Managed IT Services

12 factor compliance

With the advent of modern cloud technology, the methodologies for app development have changed radically from older methods. With the development of mass system communication, the architecture of application development has gone from being primarily stored in a single device, to being cloud-based, with 12 factor compliance becoming standard. So what are the 12 factors?

1: Codebase

This is the cloud-based locale for your code, which will be tracked via a version control system, meaning that all versions of the code are tracked and stored on a single, decentralized system that can be accessed and changed by any number of developers.

 

2: Dependencies

This refers to any additional necessities for running your code, and should be declared and included within the codebase, to allow for usage by machines that may not have the needed components pre-installed.

 

3: Config

The configuration is anything that varies between deployments, and should always be stored separately from the code.

 

4: Backing Services

These are any services used by the application, and should be treated as external resources, meaning that there is no distinction between local and third party services.

 

5: Build, Release, Run

This refers to compiling the code into a package, which is then released onto the servers and paired with a separate configuration files, which can then be run.

 

6: Process

You want each instance of your application to be stateless, meaning that any intermediary information is referred to a database, rather than stored in the code of that particular instance of the application.

 

7: Port Binding

This simply means that your application is connected to users through a URL, as this is cleaner and generally more efficient.

 

8: Concurrency

This is the method of running individual processes within the code independently of one another, this makes the application more efficient, and allows for easier scaling, should you choose to do so.

 

9: Disposability

Besides loading in code, your application should have everything it needs pre-loaded into an accessible database in order to prevent slowdown upon the release of new code.

 

10: Dev/Prod Parity

This refers to keeping the development and production environments of any application as similar as possible, and will help to cut down the amount of time it takes to change/update the application.

 

11: Logs

Logs track a large amount of information, and are valuable as a diagnostic tool. Logs should, ideally, be captured as a stream of events and stored for future use.

 

12: Admin Processes

All administrative processes should be done from the most up to date version of the production environment, rather than a database, or terminal window.

The 12 factors are a relatively new way of developing applications, and it can be very confusing when first being implemented. Once it is in place, however, the 12 factors have proven to be the best of current systems architecture, and it’s no wonder that almost all major software development platforms have implemented it.