Desplegando de local a producción. No necesitas CI CD
Existen diferentes entornos de trabajo (desarrollo, staging, producción) con procesos de despliegue automático (CI/CD) en plataformas como Gitlab o Github. Pero, ¿realmente necesitas todo esto?
Como siempre suelo decir, depende. Si hay muchas personas trabajando en un proyecto es bueno que haya cierto control, y para ello deben existir procesos que garanticen la estabilidad y fiabilidad de la plataforma. Pero, ¿y si es un producto pequeño donde trabajan pocas personas? ¿Y si es tu side-project? Posiblemente no necesitas toda esta complejidad, lo que te permitirá trabajar mucho más rápido y fácil.
Hoy en día los ordenadores son muy potentes y te permiten ejecutar los tests y los despliegues desde tu ordenador local, lo que te evitar tener que pagar o mantener estos sistemas. Es como te comentaba en mi último post sobre desplegar en kubernetes o desplegar en un VPS. Ambas opciones son buenas y te funcionarán, pero dependiendo de las necesidades te será mejor elegir uno u otro.
En general últimamente busco ser eficaz cuando trabajo en cualquier proyecto o producto. Cada uno tendrá sus necesidades concretas: en algunos mantengo sistemas con pipelines que nos permiten estandarizar ciertos procesos y tener garantías del correcto funcionamiento, permitiendo desplegar continuamente, mientras que otros me permiten mantener opciones mucho más simples, rápidas, económicas y eficaces.
Aprovechando que conozco las arquitecturas más complejas, hace tiempo me propuse el ejercicio de simplificar mi propio trabajo cuando se trata de side-projects o pequeños productos donde hay un equipo pequeño detrás. En este caso simplemente tengo un script que me permite ejecutar un pipeline local para realizar las diferentes acciones y en muchos casos puedes incluso desplegar tu entorno en producción.
Un equipo pequeño puede ir más rápido
Cuando el equipo es más pequeño, nos podemos permitir ciertas licencias que facilitan una mayor velocidad en el desarrollo. Al ser menos personas involucradas, los procesos pueden ser más laxos, siempre y cuando haya una cultura y valores sólidos que validen unas buenas prácticas. Menos entornos, menos procesos, y menos piezas que mantener nos permiten enfocar nuestro tiempo en lo verdaderamente importante: nuestro producto.
Para asegurar la fiabilidad siempre puedes utilizar tests o tecnologías como Docker, que te permiten crear entornos idénticos. En muchas ocasiones no necesitarás complejos entornos de pruebas, ya que un ingeniero de producto debe ser capaz de desarrollar y validar su funcionalidad, y desplegarla directamente a producción. Además estos complejos entornos requieren tiempo de mantenimiento, pero al final el tiempo es a la vez lo más escaso y lo más valioso, aunque solemos olvidarnos de esto.
Y si realmente lo necesitas, recuerda que siempre podrás configurar un sistema de integración continua (CI/CD).
Si trabajas solo, hazlo lo más simple posible
En mi caso, mantengo varios proyectos yo solo. Algunos de ellos tienen CI/CD para garantizar ciertos procesos o aprovechar herramientas ya creadas por otros equipos. Sin embargo, otros proyectos únicamente tienen un script para construir y desplegar, y a día de hoy me funciona genial.
Por ejemplo, este blog es un proyecto con Next.js, alojado en un repositorio de GitHub, que despliego de local a producción. Utilizo un VPS donde copio los ficheros de Node e instalo las dependencias. No uso Docker ya que no hay dependencias complejas o problemáticas, y a pesar de trabajar con un Mac de procesador ARM y el servidor ser x86, no he tenido ningún problema. Tengo algunos tests para garantizar los "happy paths" y despliego a producción mediante un script bash. De esta forma, no pierdo tiempo en mantener y crear un pipeline, ni tengo que pagar por servidores adicionales, ni mantener un registro de imágenes Docker.
Conclusión
Cada vez me doy cuenta que todo cuanto más simple, mejor, aunque solemos tender a complicar las cosas nosotros mismos. Mantener la simplicidad en los procesos permite enfocarse en lo esencial, evitando la sobrecarga de herramientas y configuraciones innecesarias. Esta filosofía de simplicidad es especialmente valiosa cuando trabajas solo o con un equipo pequeño, permitiéndote avanzar más rápido y con menos obstáculos.
Si te ha resultado útil este artículo agradecería si te suscribes a mi newsletter. Recibirás contenido exclusivo de calidad y también me ayudarás enormemente. Cada suscripción apoya el trabajo que realizo y me permite conocer mejor los temas que te interesan, de forma que puedo mejorar los conocimientos que comparto contigo.