Entrega continua principio #1: 3 repositorios por aplicación

Creo que en la actualidad está ya claro que debemos tener un repositorio para versionar el código de nuestra aplicación. Algunos también versionan  en ese mismo repositorio la configuración de la aplicación. Para algunos casos esto puede ser suficiente, pero en contextos de entrega continua no me parece apropiado.

En primer lugar la configuración y el código tienen un tasa de cambio distinta, el código cambia mucho más rápido que la configuración. Al mismo tiempo la configuración suele variar dependiendo del ambiente en que se despliegue la aplicación. Finalmente, dependendiendo de la organización puede que la configuración del ambiente productivo sea reservada y sólo algunos miembros de la organización puedan accederla. La propuesta entonces es tener un repositorio exclusivo para almacenar la configuración de la aplicación. En particular, yo suelo crear en ese repositorio un branch por cada ambiente. Adicionalmente para facilitar el trabajo del equipo de desarrollo suelo almacenar junto al código, la configuración del ambiente desarrollo.

Finalmente necesitamos un tercer repositorio para almacenar los scripts de despliegue. La idea de poner estos scripts en un repositorio exclusivo tiene que ver otra vez con su tasa de cambio esporádica y también con el hecho de que es posible que estos scripts sean creados/manipulados por personas distintas a las que escriben el código, típicamente sysadmins.

En algunos casos particulares puede que sea necesario un cuarto repositorio, por ejemplo si uno quisiera generar modulos Puppet para automatizar el provisioning de la aplicación.

Pensándolo bien, creo que el título del artículo no es preciso, el principio es versionar todo,  el hecho de usar 3 repositorios es más bien una forma de implementarlo, que puede no aplicar siempre.

3 thoughts on “Entrega continua principio #1: 3 repositorios por aplicación

  1. Pablo, muchas gracias por compartir. La calidad de los post que hacés (por lo menos los que leí) es muy alta, y de un nivel que cuesta encontrar facilmente en español (por lo menos me cuesta a mi).

    1. Gracias pero no soy Pablo, con lo cual me surge la duda si te referias a mi (y simplemente te equivocas de nombre) o si en realidad el comentario era para otro blog/autor. 😉

      1. Jajaja era a vos. Perdón! En mi defensa puedo alegar cansancio. Te re-bauticé 🙂

        Te conocí cuando viniste al Agile Open Space en la Universidad Católica de Montevideo (2014), diste una charla sobre CI si mal no recuerdo, mostrando Jenkins como la herramienta. Desde ahí busqué y encontré tu blog.

        Lo dicho, muy buen material. Especialmente lo referido a CI, CD y CR.

        Saludos!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.