Bienvenido a DevOps by Doing, una serie 100 por ciento práctica en la que construimos, mantenemos y evolucionamos paso a paso un entorno DevOps moderno completo. En esta primera entrega, Setting Up a Complete Modern DevOps Environment, vas a dejar de la teoría para pasar a la acción con una aplicación Node.js que recorre todo el ciclo DevOps: control de versiones, pruebas automatizadas, contenedores, despliegue y más.
Q2BSTUDIO te acompaña en este camino. Somos una empresa de desarrollo de software con foco en aplicaciones a medida y software a medida, especialistas en inteligencia artificial, ciberseguridad, servicios cloud AWS y Azure, servicios de inteligencia de negocio y power bi, automatización de procesos, agentes IA e ia para empresas. Si buscas un partner para impulsar tu plataforma y tus pipelines, descubre nuestro enfoque en aplicaciones a medida.
Que vamos a cubrir en la serie
• Control de versiones con Git y estructura del repositorio
• Aplicación Node.js, dependencias y pruebas
• Calidad de código con ESLint y estándares
• Gestión de entornos y variables con archivo de ejemplo
• Integración continua con GitHub Actions
• Contenerización con Docker y .dockerignore
• Desarrollo local con Docker Compose
• Despliegue continuo de contenedores
Requisitos
• Git instalado
• Node.js LTS y npm
• Docker y Docker Compose
• Cuenta de GitHub
• Editor de código como VS Code con extensiones ESLint y Docker
Verifica tu entorno ejecutando en la terminal: node --version, npm --version, git --version, docker --version
Paso 1. Prepara Git y el repositorio
• Configura tu identidad: git config --global user.name Tu Nombre; git config --global user.email tu.email
• Crea la carpeta del proyecto e inicializa Git: mkdir my-devops-project; cd my-devops-project; git init; git status
Paso 2. Inicializa la aplicación Node.js
• Crea el proyecto: npm init -y
• Añade scripts útiles en package.json: start para iniciar node app.js, dev para desarrollo, test con jest y lint con eslint . También define engines para node mayor o igual a 18 y devDependencies para jest, eslint y supertest
• Instala dependencias: npm install --save-dev jest eslint supertest; npm install
Paso 3. Crea el servidor web
• Crea el archivo app.js con un servidor HTTP que escuche en el puerto 3000
• Implementa endpoints clave: barra para la página de bienvenida, health para chequeo de salud en formato json, info con detalles del sistema y metrics con métricas estilo Prometheus
• Añade cabeceras de seguridad y CORS, manejo de errores, apagado elegante y exporta el servidor para pruebas
Paso 4. Pruebas automatizadas
• Crea la carpeta de pruebas y el archivo principal: mkdir tests; touch tests/app.test.js
• Usa Jest y Supertest para verificar que cada endpoint responde correctamente, que la página de bienvenida carga, que health e info devuelven json válido y que metrics expone contadores y gauges esperados
• Configura Jest con testEnvironment node, collectCoverage activado, carpeta coverage y patrón de pruebas dentro de tests
• Ejecuta tus pruebas con npm test y asegúrate de que el reporte de cobertura se genere correctamente
Paso 5. Ejecuta y valida la aplicación
• Inicia el servidor con npm start
• Comprueba los endpoints en el navegador o con curl:
curl https://localhost:3000/
curl https://localhost:3000/health
curl https://localhost:3000/info
curl https://localhost:3000/metrics
• Detén el servidor con la combinación de teclas CTRL + C
Archivos y configuraciones esenciales
• Crea .gitignore para excluir node_modules, coverage, logs, archivos temporales y credenciales
• Añade .env.example con las variables necesarias y usa variables de entorno para puertos y configuración del servicio
• Prepara .dockerignore para evitar que archivos innecesarios entren en la imagen
• Introduce ESLint con reglas que favorezcan consistencia, legibilidad y seguridad
• Define un flujo base de CI con GitHub Actions que ejecute instalación, lint y pruebas en cada push y pull request
• Escribe un Dockerfile eficiente listo para producción y deja sentadas las bases para Docker Compose
Preparando el siguiente paso
Lo que ya tienes al terminar esta primera parte: un proyecto limpio con control de versiones, calidad de código y pruebas automatizadas, listo para contenerización y CI. En la Parte 2 crearemos el Dockerfile y .dockerignore, montaremos el entorno local con Docker Compose, mejoraremos el pipeline de GitHub Actions y dejaremos preparado el despliegue continuo hacia la nube. Si planeas llevar este stack a producción en cloud, explora cómo escalamos, securizamos y automatizamos infra con nuestro enfoque en servicios cloud AWS y Azure.
Por qué Q2BSTUDIO
Combinamos estrategia y ejecución para acelerar tu práctica DevOps, desde pipelines de CI CD, observabilidad, seguridad y ciberseguridad, hasta despliegues orquestados e infraestructura inmutable. Integramos inteligencia artificial, agentes IA y ia para empresas en tus flujos de trabajo, y potenciamos el análisis de datos con servicios inteligencia de negocio y power bi. Si necesitas evolucionar tu plataforma con software a medida, reducir tiempo a producción y elevar la calidad, estamos listos para ayudarte desde la definición hasta la operación continua.