Todos los packs
StableArquitecturatwelve-factor-app
Twelve-Factor App
Operationalizes the twelve-factor methodology for building deployable, scalable, portable services: config via environment, stateless processes, explicit dependency declaration, disposability, dev/prod parity, and more.
deploymentconfigstatelessnesscloud-nativedevopsportability
Principios
- · Aplica los principios documentados en el pack twelve-factor-app.
Patrones
- · Grep for hardcoded config. URLs, credentials, feature flags in source (even in a "config file" committed to git) — should be env vars supplied at runtime.
- · The "kill -9 test": can the process be killed at any random moment with no data loss and a clean restart? If not, state has leaked into the process.
- · The "clone and run" test: can a new team member clone the repo, set env vars, and run the app with zero manual steps beyond documented setup? Friction here signals dependency/config problems.
- · The "scale by cloning" test: can load be handled by running more identical processes rather than making one process bigger/more complex? If not, statelessness may be violated.
- · Backing-service swap test: could the local dev database be swapped for a different provider by changing one config value, with zero code changes? If not, the backing service isn't properly abstracted.
Riesgos
- · Ver anti-patrones específicos del dominio en el pack.
Checklist
- [ ] No secrets/credentials/environment-varying config committed to source control. (TF1)
- [ ] Processes hold no correctness-critical state beyond current request/job; state lives in a backing service. (TF3)
- [ ] Dependencies fully declared with a lockfile; no reliance on pre-installed system packages. (TF2)
- [ ] Graceful shutdown (SIGTERM handling) implemented; startup time bounded and short. (TF6)
- [ ] Admin/one-off tasks run with the same codebase/config as the live app. (TF9)
- [ ] Logs written to stdout/stderr, not self-managed files. (TF8)
Fuentes
En la bibliografía AKOS
Este pack cita las siguientes fuentes registradas en el índice bibliográfico:
Explorar todas las fuentes →