05. IV. Backing services

Por: Artiko
12factorbacking-servicesbases-de-datosacoplamiento

05. IV. Backing services

Trata los backing services como recursos conectables.

¿Qué es un backing service?

Un backing service es cualquier recurso que la aplicación consume por red como parte de su funcionamiento normal:

Local o de terceros: no hay diferencia

El principio central del factor IV: el código de la aplicación no distingue entre un servicio local y uno de terceros. Ambos son recursos que se acceden por URL/credenciales declaradas en configuración (Factor III), y ambos deben poder intercambiarse sin tocar código.

flowchart LR
    App["Aplicación"] -->|DATABASE_URL| DB[("PostgreSQL local<br/>o Amazon RDS")]
    App -->|SMTP_URL| Mail["Postfix local<br/>o Postmark"]
    App -->|REDIS_URL| Cache[("Redis local<br/>o servicio gestionado")]

Ejemplo práctico de intercambiabilidad

Si tu app usa DATABASE_URL para conectarse a PostgreSQL, deberías poder pasar de una instancia local a Amazon RDS cambiando sólo el valor de esa variable de entorno — cero cambios de código. Lo mismo aplica si necesitás reemplazar un servidor SMTP propio por Postmark, o un caché en memoria por un Redis gestionado.

Esta propiedad es la que permite operaciones como:

Checklist del factor IV

Con el código, las dependencias, la configuración y los recursos externos resueltos, el siguiente factor define cómo ese código se convierte en un proceso corriendo: build, release, run.