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?
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.
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.
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.
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.
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.
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.
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.