Esta infografía de DZone resumen visualmente esta (ya no tan nueva) aproximación al desarrollo: The 12-Factor App (ver post)

1. Codebase One codebase, many deploys, strict version control

2. Dependencies Explicitly declare and isolate dependencies

3. Configuration Store config in each deploy environment, preferably using environmental variables

4. Backing Services Treat backing services as resources (neutral as to local vs. third-party) located via config

5. Build, Release, Run Strictly separate build, release, and run; never change code at runtime

6. Processes Keep all processes stateless and share-nothing; store state (with other persistent data) in a stateful backing service

7. Port Binding Bind every service to a port and listen on that port; don’t rely on runtime server injection

8. Concurrency Distinguish process types (e.g. web, background worker, utility) and scale each type independently

9. Disposability Make processes start up quickly (<4s from launch to ready) and shut down safely (for web process: stop listening, finish current requests, exit; for worker process: return current job to work queue)

10. Dev/Prod Parity Maximize dev/prod parity by minimizing gaps in time (between deploys: hours), personnel (authors=deployers), and environment (use adapters for backing services)

11. Logs Log by writing all output streams to stdout; rout streams using non-app services

12. Admin Processes Run one-off/admin processes (db migration, REPL , one-time scripts) in same environment as normal processes

Ver Infografía completa