Deploy es un término famoso entre los desarrolladores web. Puede significar muchas cosas, dependiendo del ambiente y de la tecnología usada. Sin embargo, los significados que más se refieren a la práctica y pueden resumir su función son: implantar, colocar en posición, habilitar para uso o, simplemente, publicar. Esta actividad ha evolucionado mucho a lo […]
Deploy es un término famoso entre los desarrolladores web. Puede significar muchas cosas, dependiendo del ambiente y de la tecnología usada. Sin embargo, los significados que más se refieren a la práctica y pueden resumir su función son: implantar, colocar en posición, habilitar para uso o, simplemente, publicar.
Esta actividad ha evolucionado mucho a lo largo de las décadas. En su inicio, el deploy se realizaba en un ritmo menos acelerado, porque el progreso era básicamente manual. Con el avance tecnológico, es posible realizarlo de manera automática, mejorando la experiencia del usuario y agilizando la obtención de los resultados.
En este artículo, te mostraremos algunos ejemplos de deploy para facilitar el entendimiento con relación a este término; también conocerás las 3 posibles formas de realizarlo.
¡Excelente lectura!
¿Qué es deploy y para qué sirve?
En términos generales, la palabra deploy es utilizada para describir que algo fue colocado en su posición. También se utiliza cuando un sistema es habilitado para su uso, ya sea un ambiente de desarrollo, para realizar pruebas o producción.
Imagina que has creado un sitio web en tu computador, y lo has dejado estático sin publicar. En el momento en que incorporas tu página a un servidor de web hosting, este proceso será considerado un deploy.
Otro ejemplo es cuando se genera una nueva versión de un programa, y el desarrollador quiere implantarlo en un servidor de aplicación. Es decir, subir los archivos actualizados a un servidor web, que puede ser un ambiente de homologación o producción. Esto también significa hacer un deploy.
Atención: ¡No confundas el término implantar con implementar, pues son dos cosas muy distintas!
Cuando decimos “implantar”, hacemos referencia a iniciar algo, mientras que “implementar” es el acto de colocar algo en práctica. Si lo aplicamos al mundo de la programación, cuando se inicia el desarrollo de un sistema, este está siendo implantado. En el momento en que el proyecto comienza a ser usado por los usuarios, podemos decir que ha sido implementado.
¿Cuáles son las formas de realizar el deploy?
Como dijimos antes, el proceso de deploy de sistemas ha evolucionado mucho a lo largo de las últimas décadas. Hoy existen básicamente 3 formas de realizarlo:
1 – Manual
Un ejemplo de este proceso es el Protocolo de Transferencia de archivos, conocido como FTP. Se trata de un tipo de conexión que permite que dos computadores con acceso a Internet intercambien archivos. El proceso se realiza de forma manual, por lo cual necesita de una persona en el comando.
Otra forma de hacer un deploy manual es cuando necesitas cambiar un pequeño detalle en tu archivo JS y realizas el upload para la producción.
2 – Parcialmente automatizado
Un ejemplo de deploy parcialmente automatizado puede ser el push de branch master que se realiza en el repositorio Git, el cual opera un pequeño hook y actualiza el servidor de web hosting. Aunque necesita algunos comandos, el proceso ocurre de manera automática. Su ventaja es el control de la versión y el estado de cada deploy.
3 – Completamente automatizado
Es la tendencia más moderna en el desarrollo web. Este no solamente copia los cambios de forma automática en el servidor, sino también está íntimamente conectado con el concepto de integración continua.
Además de la copia, el deploy continuo ofrece muchas ventajas, pues con ello será posible trabajar los cambios, o integraciones, hechas por diferentes programadores.
La herramienta de deploy, en este caso, realiza todas las pruebas necesarias para que no existan problemas a la hora de juntar las integraciones de la producción. Las posibilidades son infinitas, desde:
- Actualizar bibliotecas;
- Probar la conectividad de los servidores;
- Simular visitas y entradas de datos.
Todo esto es hecho de forma automática y, en caso de que ocurra algún error, el deploy se puede revertir.
Una de las herramientas más famosas para el deploy automatizado es Jenkins. Incluyendo sus beneficios, se destaca:
- Alto nivel de productividad;
- Seguridad;
- Calidad en el desarrollo de softwares
Estrategias que pueden ser utilizadas para deploy
Existen 3 estrategias muy simples que pueden ser implementadas y que permiten realizar deploy en el día a día:
1 – Rolling
Consiste en subir los servicios con la nueva versión del código. Así, la versión antigua es totalmente reemplazada; sin embargo, esto sucederá cuando la nueva versión esté apta a ejecutarse. Después, el deploy es hecho gradualmente; y mientras la nueva versión aún no esté 100% completa, puede coexistir con la antigua.
2 – Blue-Green
Se caracteriza por tener dos ambientes idénticos, conocidos como mirror, que tienen un load balancer o balance de carga; permitiendo así redireccionar el tráfico para el ambiente deseado.
El beneficio de esta estrategia es que es posible subir una nueva versión de la aplicación que está en producción, mientras que la versión actual (blue) sólo recibe las solicitaciones. De esta forma, tan pronto como sean realizadas las pruebas en la nueva versión (green), es posible realizar otras solicitudes que apunten para la nueva versión.
La estrategia permite realizar pruebas en producción, antes de que los usuarios tengan acceso al servicio.
3 – Canary
Se trata de la estrategia más compleja que puede ser utilizada. Esta consiste en colocar la nueva versión en producción para una parte de los usuarios. Es posible, por ejemplo, liberar una función solamente para el público de sexo masculino menor de 30 años.
Lo interesante de este formato es que así puedes probar la nueva versión en la práctica, además de acompañar la reacción de los usuarios antes de liberar el acceso total.
¿Quieres saber más sobre este asunto? No olvides inscribirte en nuestra Newsletter, donde recibirás los mejores contenidos relacionados con el mundo de la programación y tecnología.