12 Factor App methodology & Cloud Native apps

The Twelve-Factor App (a collection of patterns that are closely related to microservices approaches) is considered a requirement for cloud-native application architectures:
  1. Codebase - One codebase tracked in revision control, many deploys
  2. Dependencies - Explicitly declare and isolate dependencies
  3. Configuration - Store configuration in the environment
  4. Backing Services - Treat backing services as attached resources
  5. Build, release, run - Strictly separate build and run stages
  6. Processes - Execute the app as one or more stateless processes
  7. Port binding - Export services via port binding
  8. Concurrency - Scale out via the process model
  9. Disposability - Maximize robustness with fast startup and graceful shutdown
  10. Dev/prod parity - Keep development, staging, and production as similar as possible
  11. Logs - Treat logs as event streams
  12. Admin processes - Run admin/management tasks as one-off processes
A number of commentators have argued that the relevance of the Twelve-Factor app concept is limited to Heroku. The twelve factors are however cited as a baseline from which to adapt or extend

The book Beyond the 12 Factor App expands on the original guidelines to accommodate modern thinking (2016) on "building applications that don’t just function in the cloud, but thrive" with changes in priority order, definition, and additions:
1. One codebase, one application
2. API first
3. Dependency management
4. Design, build, release, and run
5. Configuration, credentials, and code
6. Logs
7. Disposability
8. Backing services
9. Environment parity
10. Administrative processes
11. Port binding
12. Stateless processes
13. Concurrency
14. Telemetry
15. Authentication and authorization

Cloud Native Anti-Patterns:
  1. ACID Transactions
  2. Chatty Interactions
  3. Complex Dependencies
  4. Direct Code-to-Runtime Relationship
  5. Hardware Affinity
  6. Latency Guarantees
  7. Manual Provisioning Workflow
  8. Monolithic Design and Deployment
  9. Resource Hogging
  10. Scalability by Application Server Clustering
  11. Scalability by Scaling Vertically
  12. Single Points of Bottleneck
  13. Single Points of Failure
  14. Single Tenancy
  15. Single-Threaded, Serial Execution
  16. Stateful Services
  17. Synchronous Interactions
Related articles on 12 Factor App methodology & Cloud Native apps
Cloud-Native Versus Traditional Enterprise Applications
Applying the Twelve-Factor App Methodology to Serverless Applications
Cloud Native Anti-Patterns
Performance antipatterns for cloud applications

Comments