The Twelve Factors:
|There should be exactly one codebase for a deployed service with the codebase being used for many deployments.
|All dependencies should be declared, with no implicit reliance on system tools or libraries.
|The configuration that varies between deployments should be stored in the environment.
|All backing services are treated as attached resources and attached and detached by the execution environment.
|Build, release, run
|The delivery pipeline should strictly consist of build, release, run.
|Applications should be deployed as one or more stateless processes with persisted data stored on a backing service.
|Self-contained services should make themselves available to other services by specified ports.
|Concurrency is advocated by scaling individual processes.
|Fast startup and shutdown are advocated for a more robust and resilient system.
|All environments should be as similar as possible.
|Applications should produce logs as event streams and leave the execution environment to aggregate.
|All admin tasks should be kept in source control and packaged with the application.