Boost Academy
FormaciónEvaluacionesPerfil
Volver
  • En directo

Node — Avanzado

8h de clase en directo·HACK A BOSS·Español

Skills que aprenderás

  • node

Convocatorias

Necesitas un plan activo

Para acceder a los cursos en directo necesitas un plan activo. Estamos trabajando para que los planes estén disponibles pronto — ¡mantente atento!

No hay convocatorias abiertas ahora mismo, pero no te pierdas la oportunidad: guarda este curso y te avisamos en cuanto se abra una convocatoria.

Descripción

Objetivos

Temario

Requisitos técnicos

Conocimientos previos

Detalles de la convocatoria

Recursos

No hay recursos disponibles todavía para esta convocatoria

Dirigido a desarrolladores con experiencia sólida en Node.js que necesitan dar el salto hacia la construcción y operación de sistemas en producción de alta exigencia. A lo largo de 8 horas, la persona participante explorará cómo definir la arquitectura de una aplicación Node.js evaluando sus trade-offs, cómo diagnosticar y resolver cuellos de botella en el Event Loop con herramientas de profiling, y cómo seleccionar estrategias de escalado —clustering o worker threads— en función del tipo de carga real. También abordará el diseño de mecanismos de resiliencia para producción, la anticipación de vulnerabilidades de seguridad a lo largo de toda la superficie de ataque, y la implementación de observabilidad completa mediante logging estructurado, métricas y trazabilidad distribuida. Al finalizar, la persona será capaz de tomar decisiones de diseño justificadas, respaldadas por benchmarks propios y criterios operacionales, sobre una aplicación Node.js lista para entornos productivos críticos.

  1. Identificar los patrones arquitectónicos disponibles para aplicaciones Node.js —modular monolith, microservicios, event-driven— y describir los trade-offs que determinan la elección entre ellos.
  2. Distinguir los tipos de carga (I/O-bound vs CPU-bound) y explicar cómo impactan en el Event Loop y en la selección de estrategias de escalado.
  3. Utilizar herramientas de profiling (--inspect, Clinic.js, 0x) para localizar cuellos de botella en una API Node.js y aplicar mejoras cuantificables sobre métricas de rendimiento.
  4. Implementar una estrategia de manejo de errores y resiliencia en producción que incluya clasificación de errores operacionales y de programación, circuit breakers y políticas de retry.
  5. Anticipar vulnerabilidades de seguridad en una aplicación Node.js existente cubriendo dependencias, headers HTTP, vectores de inyección y configuración de entorno.
  6. Integrar observabilidad completa —logging estructurado, métricas de aplicación y trazabilidad distribuida— en una aplicación Node.js operativa.
  7. Evaluar, mediante benchmarks propios y criterios de mantenibilidad, la elección de un framework HTTP para un caso de uso de alta concurrencia, justificando la decisión frente a las alternativas descartadas.

Arquitectura y decisiones de diseño en Node.js. El bloque de apertura aborda cómo arquitecturar una aplicación Node.js eligiendo entre patrones establecidos —monolito modular, microservicios o arquitectura orientada a eventos— y cómo articular con rigor los trade-offs frente a las alternativas descartadas. Asociado a este análisis estructural, se estudia la evaluación crítica de frameworks HTTP (Express, Fastify, Hapi) aplicando benchmarks propios y criterios de mantenibilidad para un caso de uso de alta concurrencia, de modo que la elección de infraestructura técnica quede respaldada por evidencia medible.

Rendimiento, escalado y resiliencia. Este bloque cubre el ciclo completo que va desde la detección de problemas hasta su corrección. Se parte del profiling del Event Loop con herramientas como --inspect, Clinic.js y 0x para localizar cuellos de botella en APIs reales y aplicar mejoras con impacto medible. A continuación se analiza cuándo escalar mediante clustering y cuándo recurrir a worker threads, utilizando benchmarks que distingan escenarios I/O-bound de CPU-bound. El bloque cierra con el diseño de una estrategia de manejo de errores orientada a producción: clasificación de errores operacionales y de programación, implementación de circuit breakers y definición de políticas de retry coherentes con los acuerdos de nivel de servicio.

Seguridad y hardening de aplicaciones Node.js. Se realiza un análisis sistemático de la superficie de ataque de una aplicación Node.js existente, cubriendo la auditoría de dependencias con npm audit y Snyk, la revisión de headers HTTP, la identificación de vectores de inyección y la validación de la configuración de entorno. Este trabajo preventivo conecta directamente con las buenas prácticas de desarrollo seguro que toda aplicación en producción debe garantizar.

Observabilidad completa. El bloque final integra las tres dimensiones de la observabilidad moderna en Node.js: logging estructurado con Pino o Winston, exposición de métricas de aplicación mediante Prometheus, y trazabilidad distribuida con OpenTelemetry. Se trabaja la coherencia entre las tres capas para que el sistema sea diagnosticable end-to-end en escenarios de incidencia real.

  • Node.js v20 LTS instalado localmente.
  • Editor de código con soporte para JavaScript/TypeScript (VS Code recomendado).
  • Docker Desktop instalado y operativo (necesario para levantar Prometheus, Jaeger y servicios auxiliares).
  • Acceso a una cuenta en GitHub o GitLab con permisos para crear repositorios y configurar pipelines de CI/CD.
  • Herramientas de línea de comandos: npm, curl y git disponibles en el PATH del sistema.
  • Conexión a internet estable para la descarga de imágenes Docker y paquetes npm durante las sesiones prácticas.
  • Manejo fluido de la API asíncrona de Node.js: Promises, async/await y streams.
  • Construcción y consumo de APIs REST con al menos un framework HTTP (Express o equivalente).
  • Gestión de dependencias con npm/yarn y comprensión del sistema de módulos (CommonJS y ESM).
  • Fundamentos de testing en Node.js: pruebas unitarias e integración con Jest, Mocha o similar.
  • Conocimiento básico de contenedores (Docker) y variables de entorno para configuración de aplicaciones.