02. I. Código base

Por: Artiko
12factorcodebasegitcontrol-de-versiones

02. I. Código base

Un código base bajo control de versiones, con múltiples despliegues.

La regla: uno a uno

Una aplicación twelve-factor siempre se rastrea en un sistema de control de versiones (Git, Mercurial, Subversion). Existe una relación uno a uno entre el código base y la aplicación:

flowchart LR
    subgraph App["Una aplicación"]
        Repo["Repositorio único"]
        Dev["Despliegue: dev"]
        Staging["Despliegue: staging"]
        Prod["Despliegue: producción"]
        Repo --> Dev
        Repo --> Staging
        Repo --> Prod
    end

Código compartido = extraerlo a librería

Si dos aplicaciones necesitan el mismo código, la solución no es compartir un repositorio entre ellas ni copiar/pegar archivos. La solución correcta es extraer ese código a una librería independiente, declararla como dependencia (ver Factor II) y versionarla con su propio changelog.

Esto evita el anti-patrón de “monolito distribuido”: varias apps que en realidad comparten estado y ciclo de vida a través de código copiado, pero se despliegan como si fueran independientes.

Despliegues múltiples, mismo código base

Un único código base puede tener muchos despliegues corriendo simultáneamente:

Todos ellos identifican la misma aplicación, aunque no necesariamente ejecuten exactamente el mismo commit en un momento dado — es normal que staging tenga cambios que todavía no llegaron a producción. Lo que los une no es “correr el mismo código en este instante”, sino compartir el mismo origen histórico.

Checklist del factor I

El siguiente factor, Dependencias, define cómo cada despliegue instala exactamente lo que necesita sin asumir nada del sistema anfitrión.