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

Despliegue de código en el servidor

Frontend SELF ES
Nivel 48 , Lección 2
Disponible

12.1 Hacemos cambios en el código

Como ya mencioné anteriormente, todo el desarrollo moderno se trata de hacer pequeños cambios en el código. Esto lo llevan haciendo millones de programadores durante décadas, por lo que este proceso ya está afinado, estandarizado y formalizado de todas las maneras posibles.

Primero, para guardar el código hay un programa especial: Git. Git es un sistema de control de versiones distribuido, utilizado para rastrear cambios en el código y coordinar el trabajo de los programadores en proyectos conjuntos.

Git permite a los desarrolladores crear ramas en el proyecto, manteniendo un historial completo de cambios y la capacidad de volver a cualquier estado del archivo. Esto asegura una fusión efectiva de cambios y resolución de conflictos, haciendo de Git la herramienta principal para el trabajo colectivo sobre el código en el desarrollo moderno de software.

En segundo lugar, el proceso de hacer cambios en el código también está estandarizado. Normalmente, para cada nueva característica creas una nueva rama en git, realizas tus cambios en ella en forma de una serie de commits, y luego envías un Pull Request a tu Team Lead o compañero de equipo para que realice un Code Review y apruebe tus cambios.

Si todo sale bien, entonces tus cambios se mezclan en la rama dev, se inicia una compilación automática del proyecto y pruebas. Muchas pruebas.

12.2 Compilamos el proyecto

Antes de probar el proyecto o cargarlo en el servidor, necesitas compilarlo.

La construcción de proyectos es el proceso de compilar el código fuente del proyecto en programas ejecutables u otros formatos ejecutables, a menudo incluyendo pruebas e implementación. Es un aspecto clave del desarrollo de software, garantizando que el programa esté listo para su uso.

La compilación no es la compilación per se, pero la compilación a menudo es parte del proceso de construcción. Después de completar la construcción, a menudo tienes docenas o incluso cientos de archivos que necesitas cargar en varios servidores.

Los constructores pueden ser de bajo nivel:

Maven y Gradle se utilizan ampliamente en proyectos de Java para gestionar dependencias y construir proyectos.

Apache Ant es otra herramienta para la construcción de proyectos en Java, que proporciona gran flexibilidad en la escritura de scripts de construcción.

MSBuild se utiliza para la construcción de proyectos creados con Microsoft Visual Studio.

Make es una herramienta clásica de construcción que utiliza Makefile para definir reglas de construcció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 son herramientas que ayudan a automatizar tareas comunes en el desarrollo de aplicaciones web, como la minificación de archivos y la compilación de SCSS a CSS.

Los constructores también pueden ser de alto nivel. Sobre ellos, más adelante.

12.3 CI/CD

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

Uno de los sistemas CI/CD más comunes, aunque un poco anticuado, es Jenkins. Si trabajas en una empresa pequeña, lo usarán con una probabilidad del 80%.

Jenkins es un sistema automatizado popular utilizado para la integración continua y la entrega (CI/CD). Jenkins permite automatizar varias etapas del desarrollo de software, incluyendo la construcción, prueba e implementación, lo que mejora la calidad del código y acelera el proceso de desarrollo.

Si te unes a una gran empresa, podrían haber otras 5 opciones:

TeamCity es un potente sistema comercial de JetBrains, que ofrece integración profunda con varios entornos de desarrollo y prueba.

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

CircleCI es un servicio en la nube de CI/CD que soporta la automatización de pruebas e implementación para muchos proyectos.

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

Bamboo es un producto de Atlassian, estrechamente integrado con otras herramientas de esta empresa, como Jira y Bitbucket.

No necesitas conocerlos y saber trabajar con ellos: normalmente en la empresa hay un especialista en DevOps que configura todos estos procesos de construcción. Solo necesitas saber que existen y entender de qué se trata si se menciona Jenkins, CI/CD o "integración continua" en una conversación.

12.4 Entregamos el proyecto al servidor

No es suficiente con escribir el proyecto, también debe estar en tu servidor. En general, el despliegue del proyecto en el servidor es el proceso de colocar y activar una aplicación web en un servidor de tal manera que sea accesible a los usuarios a través de Internet.

Esto incluye transferir los archivos del proyecto al servidor, configurar el entorno del servidor, bases de datos, dependencias, así como la configuración de ajustes de red y seguridad.

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

Docker es una plataforma para desarrollar, entregar y ejecutar aplicaciones mediante la contenedorización. Docker facilita la creación, el despliegue y la ejecución de aplicaciones utilizando contenedores, que permiten empaquetar una aplicación con todo su entorno y dependencias en un solo objeto compacto, asegurando la consistencia del entorno en todas las etapas de desarrollo, prueba y producción.

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

Y aunque en cualquier foro de Docker, si lo llamas máquina virtual, te lanzarán zapatos, pero si sabes lo que es una máquina virtual, puedes pensar en un contenedor Docker como una máquina virtual. Solo que muy liviana.

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

Y el despliegue del proyecto con Docker simplifica mucho el proceso de implementación de aplicaciones, asegurando rapidez y confiabilidad. El proyecto se empaqueta en contenedores Docker, que se pueden mover fácilmente y ejecutar en cualquier sistema que soporte Docker.

Esto elimina problemas relacionados con las diferencias en los entornos del servidor y permite escalar fácilmente la aplicación, agregando o eliminando contenedores según la carga. Todos se han pasado a Docker: es muy conveniente y muy fácil.

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