CodeGym /Cursos /JAVA 25 SELF /Despliegue de código en el servidor

Despliegue de código en el servidor

JAVA 25 SELF
Nivel 10 , Lección 6
Disponible

1. Realizamos cambios en el código

Como ya dije antes, el desarrollo de software se reduce a realizar pequeños cambios en el código. Millones de programadores llevan décadas haciéndolo, lo que ha llevado a depurarlo a fondo, estandarizarlo y formalizarlo de todas las maneras posibles.

Para almacenar el código existe una herramienta específica – Git. Git es un sistema de control de versiones distribuido. No solo guarda el código, sino que rastrea todos sus cambios y ayuda a los programadores a trabajar juntos en los proyectos sin estorbarse 🤝.

Con Git, los desarrolladores pueden crear diferentes versiones del proyecto (ramas), conservar el historial completo de cambios e incluso volver a cualquier momento del 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. 👩‍💻

2. Construimos el proyecto

Antes de probar el proyecto o subirlo al servidor, hay que construirlo.

🏗️ 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 con la inclusión de pruebas y despliegue. Es un aspecto clave del desarrollo de software que garantiza que el programa esté listo para su uso.

La construcción no es solo compilación, aunque la compilación suele formar parte del proceso de construcción. Tras finalizar la construcción, puedes acabar con decenas o incluso cientos de archivos que hay que subir a distintos servidores.

Los sistemas de build pueden ser de bajo nivel, como:

  • Maven y Gradle – ampliamente utilizados en proyectos Java para gestionar dependencias y la construcción de proyectos.
  • 🐜 Apache Ant – otra herramienta para la construcción de proyectos Java, proporciona gran flexibilidad al escribir scripts de build.
  • 🖥️ MSBuild – se utiliza para compilar proyectos creados con Microsoft Visual Studio.
  • ⚙️ Make – herramienta clásica de construcción que utiliza Makefile para definir reglas de build, especialmente popular en proyectos en C y C++.
  • 🌐 Webpack – se utiliza a menudo para construir aplicaciones JavaScript, gestionando dependencias y módulos.
  • 📜 Gulp y Grunt – herramientas que ayudan a automatizar tareas frecuentes en el desarrollo de aplicaciones web, como la minificación de archivos y la compilación de SCSS a CSS.

También hay sistemas de build de alto nivel. Hablaremos de ellos más abajo.

3. CI/CD

🔄 CI/CD (Continuous Integration/Continuous Delivery) es una metodología que implica la fusión continua de los cambios de todas las ramas de desarrollo en la rama principal, así como las pruebas y el despliegue automáticos de esos cambios. Esto permite detectar y corregir errores rápidamente, aumentando la eficacia y la velocidad del desarrollo.

Una de las soluciones de CI/CD más extendidas, aunque algo veterana, es Jenkins. Si trabajas en una empresa pequeña, hay un 80 % de probabilidades de que utilicen precisamente esta.

🤖 Jenkins – un sistema de automatización popular, utilizado para integración y entrega continuas (CI/CD). Jenkins permite automatizar distintas etapas del desarrollo de software, incluida la construcción, las pruebas y el despliegue, lo que mejora la calidad del código y acelera el proceso de desarrollo.

Si entras en una empresa grande, puede haber otras 5 opciones para elegir:

  • 🚦 TeamCity – un potente sistema comercial de JetBrains. Ofrece una integración profunda con diversos entornos de desarrollo y de pruebas.
  • 📝 GitLab CI – parte integrada de GitLab, proporciona integración y entrega continuas con posibilidad de configuración mediante archivos YAML.
  • ☁️ CircleCI – servicio de CI/CD en la nube, admite la automatización de pruebas y despliegues para multitud de proyectos.
  • 🦑 Travis CI – uno de los primeros servicios de CI en la nube, utilizado en numerosos proyectos de código abierto. Se integra bien con GitHub.
  • 🎍 Bamboo – producto de Atlassian, se integra estrechamente con otras herramientas de la compañía, como Jira y Bitbucket.

No necesitas conocerlos a fondo ni saber trabajar con ellos – normalmente en la empresa hay especialistas DevOps que configuran todos estos procesos. Solo necesitas saber que existen y entender de qué se habla si en una conversación se menciona Jenkins, CI/CD o «continuous integration».

4. Entregamos el proyecto al servidor

No basta con escribir el proyecto – también tiene que acabar en tu servidor. En general, el despliegue (deploy) de un proyecto en el servidor es el proceso de poner e iniciar una aplicación web en un servidor de forma que esté disponible para los usuarios a través de Internet 🚚.

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

¿Y cómo crees que llegará tu código al servidor? ¿Alguien lo subirá allí manualmente? ¿O quizá te conectarás por SSH a un servidor remoto, subirás un par de archivos y lo configurarás todo? Tranquilo: ya nadie trabaja así. Ahora está Docker.

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

Docker permite empaquetar tu proyecto o proyectos en un contenedor de Docker. Es algo parecido a una máquina virtual.

Y aunque en cualquier foro de Docker te van a criticar si lo llamas «máquina virtual», puedes pensar en un contenedor de Docker precisamente como en una máquina virtual. Solo que mucho más ligera.

En esencia, un contenedor de Docker es una «máquina virtual». Las máquinas virtuales incluyen una copia completa del sistema operativo, el kernel del sistema operativo y hardware virtual, mientras que los contenedores de Docker comparten el kernel del host y pueden ser más ligeros y rápidos .

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

Esto evita los problemas derivados de las diferencias entre entornos de servidor y permite escalar la aplicación fácilmente, añadiendo o eliminando contenedores según la carga. Todo el mundo se ha pasado a Docker – es muy cómodo y muy sencillo.

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