CodeGym /Curso de Java /Python SELF ES /Despliegue de código en el servidor

Despliegue de código en el servidor

Python SELF ES
Nivel 64 , Lección 2
Disponible

3.1 Hacemos cambios en el código

Como mencioné antes, el desarrollo de software se reduce a hacer pequeños cambios en el código. Millones de programadores han estado en este proceso durante décadas, lo que ha llevado a su cuidadosa depuración, estandarización y formalización de todas las maneras posibles.

Para almacenar código, existe un programa especial: Git. Git es un sistema de control de versiones distribuido. No solo almacena el código, sino que rastrea todos los cambios en él y ayuda a los programadores a trabajar en proyectos juntos, sin estorbarse entre ellos.

Con Git, los desarrolladores pueden crear diferentes versiones del proyecto (ramas), guardar el historial completo de cambios e incluso volver a cualquier momento en el pasado. ¡Es como una máquina del tiempo para el código! Git ayuda a combinar cambios y resolver conflictos, por lo que se ha convertido en la herramienta principal para el trabajo en equipo en el desarrollo moderno.

3.2 Compilamos el proyecto

Antes de probar o subir el proyecto al servidor, es necesario compilarlo.

La compilación de proyectos es el proceso de convertir el código fuente del proyecto en programas ejecutables u otros formatos ejecutables, a menudo con inclusión de pruebas y despliegue. Es un aspecto clave del desarrollo de software, asegurando que el programa esté listo para usar.

La compilación no es solo compilación, aunque la compilación suele ser parte del proceso. Una vez finalizada la compilación, puedes tener docenas o incluso cientos de archivos que necesitas subir a varios servidores.

Los compiladores pueden ser de bajo nivel, como:

Maven y Gradle – ampliamente utilizados en proyectos de Java para gestionar dependencias y compilar proyectos.

Apache Ant – otra herramienta para compilar proyectos en Java que ofrece gran flexibilidad en la escritura de scripts de compilación.

MSBuild – se utiliza para compilar proyectos creados con Microsoft Visual Studio.

Make – herramienta de compilación clásica que utiliza Makefile para definir reglas de compilación, especialmente popular en proyectos en C y C++.

Webpack – se utiliza a menudo para compilar aplicaciones JavaScript, gestionando dependencias y módulos.

Gulp y Grunt – herramientas que ayudan a automatizar tareas repetitivas en el desarrollo de aplicaciones web, como la minificación de archivos y la compilación de SCSS en CSS.

También hay compiladores de alto nivel. Más sobre ellos a continuación.

3.3 CI/CD

CI/CD (Continuous Integration/Continuous Delivery) – metodología que implica la fusión continua de cambios de todas las ramas de desarrollo en la rama principal, así como la prueba automática y el despliegue de estos cambios. Esto permite identificar y corregir errores rápidamente, aumentando la eficiencia y la velocidad de desarrollo.

Una de las más comunes, aunque un poco anticuada, sistema CI/CD es Jenkins. Si trabajas en una empresa pequeña, hay un 80% de probabilidad de que la usen.

Jenkins – sistema automatizado popular utilizado para integración y entrega continua (CI/CD). Jenkins permite automatizar diversas etapas del desarrollo de software, incluyendo la compilación, prueba y despliegue, lo que mejora la calidad del código y acelera el proceso de desarrollo.

Si entras a una empresa grande, puede haber otras 5 opciones:

TeamCity – poderoso sistema comercial producido por JetBrains. Ofrece una profunda integración con diversos entornos de desarrollo y pruebas.

GitLab CI – parte integrada de GitLab, proporciona integración y entrega continua con la capacidad de configuración a través de archivos YAML.

CircleCI – servicio en la nube de CI/CD que admite la automatización de pruebas y despliegue para numerosos proyectos.

Travis CI – uno de los primeros servicios CI en la nube, utilizado en muchos proyectos de código abierto. Se integra bien con GitHub.

Bamboo – producto de Atlassian, se integra estrechamente con otras herramientas de esta compañía, como Jira y Bitbucket.

No necesitas conocerlos o saber trabajar con ellos: por lo general, en la empresa hay especialistas DevOps que configuran todos estos procesos. Solo necesitas saber que existen y entender de qué se habla, si en la conversación se menciona Jenkins, CI/CD o "integración continua".

3.4 Entregamos el proyecto al servidor

No es suficiente con escribir el proyecto: también debe llegar a tu servidor. Bueno, el despliegue (deploy) del proyecto en el servidor es el proceso de colocación y activación de una aplicación web en el servidor de modo que esté accesible para los usuarios a través de Internet.

Este proceso incluye la transferencia de los archivos del proyecto al servidor, la configuración del entorno del servidor, bases de datos, dependencias, así como la configuración de las configuraciones de red y seguridad.

¿Y tú qué crees, cómo llegará tu código al servidor? ¿Alguien lo subirá allí? ¿O tal vez te conectarás por SSH al servidor remoto, subirás un par de archivos y configurarás todo? Relájate: ya nadie hace eso. Ahora está Docker.

Docker – es una plataforma para el desarrollo, entrega y ejecución de aplicaciones mediante contenedores. Docker simplifica la creación, despliegue y ejecución de aplicaciones, empaquetándolas junto con todas sus dependencias y entorno en un único objeto compacto. Esto garantiza la consistencia del entorno en todas las etapas: desde el desarrollo hasta las pruebas y producción.

Docker te permite empaquetar tu proyecto o proyectos en un contenedor Docker. Es algo así como una máquina virtual.

Y aunque en cualquier foro de Docker te lanzarán tomates si llamas a Docker una "máquina virtual", puedes pensar en un contenedor Docker exactamente como una máquina virtual. Solo que mucho más ligera.

Básicamente, un contenedor Docker es una «máquina virtual» virtual. Las máquinas virtuales incluyen una copia completa del sistema operativo, núcleo del SO, y hardware virtual, mientras que los contenedores Docker comparten el núcleo del host y pueden ser más ligeros y rápidos.

El despliegue del proyecto con Docker simplifica enormemente el proceso, proporcionando rapidez y fiabilidad. El proyecto se empaqueta en contenedores Docker, que se pueden mover y ejecutar fácilmente en cualquier sistema que soporte Docker.

Esto elimina los problemas asociados con las diferencias en los entornos del servidor y permite escalar fácilmente la aplicación, añadiendo o eliminando contenedores según lo requiera la carga. Todos han pasado a Docker: es muy conveniente y muy sencillo.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION