Ruta Inicial para Entrar a DevOps
Volver a clases
DevOps y Deploy●●Intermedio

Ruta Inicial para Entrar a DevOps

120 min
7 vistas

Entender CI/CD, contenedores, reverse proxy y prácticas clave para dar el salto de desarrollador web a perfil DevOps junior.

¿Qué es DevOps y por qué importa?

  • DevOps une desarrollo y operaciones para entregar software más rápido y con menos errores.
  • El objetivo principal es automatizar: build, testing, despliegue y monitoreo.
  • Un perfil DevOps junior debe dominar fundamentos de Linux, redes, Git y automatización.

CI/CD en proyectos reales

  • CI (Integración Continua): cada push ejecuta lint, tests y validaciones automáticas.
  • CD (Entrega/Despliegue Continuo): si CI pasa, se genera artefacto y se despliega.
  • Pipelines bien diseñados reducen bugs en producción y aceleran releases.

Docker para estandarizar entornos

  • Docker evita el típico problema de "en mi máquina sí funciona".
  • Contenerizar frontend y backend facilita despliegues reproducibles.
  • Conceptos base: imagen, contenedor, Dockerfile, volumen, red.

NGINX como puerta de entrada

  • NGINX funciona como reverse proxy para enrutar tráfico a frontend y backend.
  • Permite servir archivos estáticos, balancear carga y gestionar TLS/HTTPS.
  • Es común en producción junto a Docker para exponer servicios de forma segura.

Infraestructura, observabilidad y seguridad

  • Infraestructura como código (IaC) con Terraform en etapas más avanzadas.
  • Observabilidad básica: logs, métricas y health checks.
  • Seguridad mínima obligatoria: secretos fuera del repo, headers de seguridad, backups y principio de menor privilegio.

Plan de aprendizaje recomendado (8 semanas)

  1. Semana 1-2: Linux, procesos, permisos, bash y networking básico.
  2. Semana 3-4: Docker, Docker Compose y despliegue local multi-servicio.
  3. Semana 5-6: CI/CD con GitHub Actions y despliegues automáticos.
  4. Semana 7-8: NGINX, HTTPS, monitoreo básico y hardening inicial.

Ejemplos de Código

4 ejemplos

Workflow inicial de CI

yaml
1name: CI-CD
2
3on:
4  push:
5    branches: [main]
6  pull_request:
7    branches: [main]
8
9jobs:
10  test-and-build:
11    runs-on: ubuntu-latest
12    steps:
13      - name: Checkout
14        uses: actions/checkout@v4
15
16      - name: Setup Node
17        uses: actions/setup-node@v4
18        with:
19          node-version: 20
20
21      - name: Install
22        run: npm ci
23
24      - name: Test
25        run: npm test
26
27      - name: Build
28        run: npm run build

Contenerización backend

other
1FROM node:20-alpine
2
3WORKDIR /app
4
5COPY package*.json ./
6RUN npm ci --omit=dev
7
8COPY . .
9
10EXPOSE 3000
11CMD ["node", "server.js"]

Orquestación local

yaml
1version: "3.9"
2services:
3  app:
4    build: .
5    container_name: web-app
6    expose:
7      - "3000"
8
9  nginx:
10    image: nginx:stable-alpine
11    container_name: reverse-proxy
12    ports:
13      - "80:80"
14    volumes:
15      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
16    depends_on:
17      - app

Reverse proxy para contenedor app

yaml
1server {
2  listen 80;
3  server_name _;
4
5  location / {
6    proxy_pass http://app:3000;
7    proxy_http_version 1.1;
8    proxy_set_header Host $host;
9    proxy_set_header X-Real-IP $remote_addr;
10    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
11    proxy_set_header X-Forwarded-Proto $scheme;
12  }
13}

Recursos

3 recursos disponibles

Documentación Oficial

DocumentaciónPrincipiante

NGINX Admin Guide

Guía oficial para reverse proxy y configuración de servidores.

Documentación Oficial

DocumentaciónIntermedio0

GitHub Actions Docs

Referencia oficial para crear workflows de CI/CD.

Documentación Oficial

DocumentaciónIntermedio0

Docker Docs

Conceptos, Dockerfile y Compose para contenedores.

ALVESC ACADEMY - Plataforma Educativa