CodeGym /Cursos /C# SELF /Deploy del código en el servidor

Deploy del código en el servidor

C# SELF
Nivel 10 , Lección 6
Disponible

1. Hacemos cambios en el código

Como ya mencioné antes, el desarrollo de software se reduce a hacer pequeños cambios en el código. Millones de programadores llevan décadas haciendo esto, lo que ha llevado a que el proceso esté muy depurado, estandarizado y formalizado de muchas maneras.

Para guardar el código existe un programa especial – Git. Git es un sistema de control de versiones distribuido. No solo guarda el código, sino que también rastrea todos los cambios en él y ayuda a los programadores a trabajar en equipo sin pisarse 🤝.

Con Git, los desarrolladores pueden crear diferentes versiones del proyecto (branches), guardar toda la historia de cambios e incluso volver a cualquier punto del pasado. ¡Es como una máquina del tiempo para el código! Git ayuda a fusionar cambios y resolver conflictos, por eso se ha convertido en la herramienta principal para trabajo en equipo en el desarrollo moderno. 👩‍💻

2. Compilamos el proyecto

Antes de probar o subir el proyecto al servidor, hay que compilarlo.

🏗️ Compilar proyectos es el proceso de convertir el código fuente en programas ejecutables u otros formatos que puedan correr, a menudo incluyendo pruebas y despliegue. Es un paso clave en el desarrollo de software, que asegura que el programa está listo para usarse.

Compilar no es solo traducir, aunque a menudo la compilación forma parte del proceso. Después de compilar, puedes tener docenas o incluso cientos de archivos que necesitas subir a diferentes servidores.

Los compiladores pueden ser de bajo nivel, como:

  • Maven y Gradle – muy usados en proyectos Java para gestionar dependencias y compilar.
  • 🐜 Apache Ant – otra herramienta para compilar proyectos Java, que ofrece mucha flexibilidad en los scripts de compilación.
  • 🖥️ MSBuild – para compilar proyectos creados con Microsoft Visual Studio.
  • ⚙️ Make – herramienta clásica que usa Makefile para definir reglas de compilación, muy popular en proyectos en C y C++.
  • 🌐 Webpack – muy usado para compilar aplicaciones JavaScript, gestionando dependencias y módulos.
  • 📜 Gulp y Grunt – herramientas que ayudan a automatizar tareas comunes en desarrollo web, como minificar archivos y compilar SCSS a CSS.

También existen compiladores de alto nivel. De ellos, hablaremos más abajo.

3. CI/CD

🔄 CI/CD (Integración Continua / Entrega Continua) es una metodología que implica fusionar continuamente los cambios de todas las ramas de desarrollo en la rama principal, además de hacer pruebas y desplegar automáticamente esos cambios. Esto ayuda a detectar y arreglar errores rápido, mejorando la eficiencia y velocidad del desarrollo.

Uno de los sistemas CI/CD más usados, aunque algo anticuado, es Jenkins. Si trabajas en una empresa pequeña, hay un 80% de probabilidad de que usen justo esa.

🤖 Jenkins es un sistema automatizado muy popular para integración y entrega continua (CI/CD). Jenkins permite automatizar varias etapas del desarrollo, como compilar, probar y desplegar, mejorando la calidad del código y acelerando el proceso.

Si entras en una empresa grande, puede que tengan otras 5 opciones:

  • 🚦 TeamCity – sistema comercial potente de JetBrains. Tiene buena integración con muchas herramientas de desarrollo y testing.
  • 📝 GitLab CI – integrado en GitLab, permite configurar CI/CD con archivos YAML.
  • ☁️ CircleCI – servicio en la nube para CI/CD, que automatiza testing y despliegues en muchos proyectos.
  • 🦑 Travis CI – uno de los primeros servicios en la nube para CI, muy usado en proyectos open source. Se integra bien con GitHub.
  • 🎍 Bamboo – de Atlassian, se integra con otras herramientas como Jira y Bitbucket.

No necesitas aprenderlos todos ni saber usarlos a fondo; normalmente en la empresa hay especialistas en DevOps que configuran todo esto. Solo debes saber que existen y entender de qué hablan si escuchas Jenkins, CI/CD o “integración continua”.

4. Subimos el proyecto al servidor

No basta con escribir el proyecto: también hay que ponerlo en tu servidor. En realidad, desplegar (deploy) un proyecto en el servidor es el proceso de colocar y activar la aplicación web en el servidor para que los usuarios puedan acceder a ella a través de internet 🚚.

Este proceso incluye transferir los archivos del proyecto, configurar el entorno del servidor, bases de datos, dependencias, y también ajustar la red y la seguridad 😅.

¿Crees que tu código llegará al servidor? ¿Alguien lo subirá? ¿O tal vez te conectarás por SSH a un servidor remoto, subirás unos archivos y empezarás a configurarlo? Relájate: ya nadie hace eso así. Ahora existe Docker.

🐳 Docker es una plataforma para desarrollar, enviar y correr aplicaciones usando containers. Docker hace más fácil crear, desplegar y ejecutar apps, empaquetándolas con todas sus dependencias y entorno en un solo objeto compacto. Esto asegura que el entorno sea igual en todas las etapas: desde desarrollo hasta testing y producción.

Docker permite empaquetar tu proyecto o proyectos en Docker containers. Es como una máquina virtual.

Y aunque en muchos foros te llamarán “máquina virtual” si dices Docker, en realidad puedes pensar en un Docker container como una máquina virtual, solo mucho más ligera.

En esencia, el Docker container es como una “máquina virtual” virtual. Las máquinas virtuales copian toda la OS, el núcleo y hardware virtual, mientras que los Docker containers comparten el núcleo del host y pueden ser más ligeros y rápidos .

Desplegar con Docker simplifica mucho el proceso, haciéndolo rápido y fiable. El proyecto se empaqueta en Docker containers, que se pueden mover y correr en cualquier sistema que soporte Docker 🚢.

Esto elimina problemas por diferencias en los entornos del servidor y facilita escalar la app, añadiendo o quitando containers según la carga. Todo el mundo usa Docker ahora: es muy cómodo y sencillo.

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