Skip to main content

infraestructura-nodejs

Patrones de infraestructura para aplicaciones Node.js en producción — cliente HTTP resiliente, cache multicapa, validación de config, health checks, seguridad Helmet/CORS y Docker multistage.

跳到安装

来源信息

仓库
Ntizar/NtizarBrainMasterMind
最近来源活动
2026年6月26日 12:05
检测到的 SKILL.md 语言
西班牙语
星标
2
分支
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
infraestructura-nodejs
version
1.0.0
description
Patrones de infraestructura para aplicaciones Node.js en producción — cliente HTTP resiliente, cache multicapa, validación de config, health checks, seguridad Helmet/CORS y Docker multistage.
tags
["infraestructura","nodejs","patrones","produccion","http","cache","seguridad","docker","health"]
# Infraestructura Node.js — Patrones de Producción Colección de patrones de infraestructura para aplicaciones Node.js en producción. Cada patrón es un bloque independiente que se combina con los demás. ## 1. Cliente HTTP Robusto Cliente HTTP con reintentos, backoff exponencial + jitter y timeouts. Para consumir APIs externas de forma resiliente. - **Reintentos:** configurable (default 3), solo para 5xx y errores de red - **Backoff exponencial:** baseDelay × 2^n, con jitter para evitar thundering herd - **Timeout agresivo:** 8s por defecto, proporcional al número de requests en paralelo - **Solo reintentar errores transitorios:** 4xx = error del cliente, no se retryean ## 2. Cache Multicapa (Memoria + Disco) Patrón de cachear datos de APIs externas en dos capas: memoria (rápida, volátil) y disco (lenta, persistente). Cada capa tiene su propio TTL. - **Flujo:** memoria → disco → API - **Promover disco a memoria:** cuando se lee del disco, cargar en memoria - **TTL uniforme:** mismo TTL en ambas capas para evitar inconsistencias - **Métricas:** hit rate, misses, tamaño ## 3. Validación Estricta de Config Validar y centralizar la configuración de una aplicación al arrancar. Falla rápido si falta algo, convierte tipos explícitamente, expone readiness check. - **Exit early:** si falta variable obligatoria, exit(1) con mensaje claro - **Renombrar para consistencia:** `ESIOS_API_TOKEN` (externo) → `ESIOS_TOKEN` (interno) - **Parseo explícito:** `parseInt` para números, `.split(',')` para listas - **.env.example en Git:** documentación viva de qué necesita el proyecto ## 4. Health Checks + Métricas Tres endpoints estándar: `/healthz` (liveness), `/readyz` (readiness), `/metrics` (Prometheus). - **/healthz:** ¿Vivo? Siempre 200 mientras el proceso esté funcionando - **/readyz:** ¿Listo? 200 o 503 según dependencias externas - **/metrics:** Formato Prometheus para Grafana/Prometheus scrape ## 5. Seguridad Web (Helmet + CORS) Configurar seguridad HTTP en Express: CSP, HSTS, CORS por lista blanca, protección contra payloads grandes. - **CSP mínimo:** solo permitir CDNs que realmente se usan - **Minimizar 'unsafe-inline':** necesario para Chart.js, pero cada uno es riesgo XSS - **CORS por lista blanca:** nunca usar `'*'` en producción - **Cache-busting:** forzar no-cache en HTML/JS para que usuarios descarguen versión reciente ## 6. Docker Multistage para Producción Dockerfile multistage para Node.js con usuario no-root, health checks y build optimizado. - **Alpine como base:** imágenes ~5MB vs ~900MB completa - **npm ci en vez de npm install:** builds 100% reproducibles - **Usuario no-root:** seguridad por defecto - **HEALTHCHECK:** permite detectar caídas automáticamente ## Integración entre patrones ```javascript // 1. Validar config al arrancar const env = loadEnv(); // validacion-config-estricta // 2. Crear cliente HTTP robusto const httpClient = createHttpClient({ maxRetries: 3, baseDelay: 1000, timeout: 8000 }); // cliente-http-robusto // 3. Crear cache multicapa const cache = new MultiLayerCache({ ttlMs: env.CACHE_TTL_MS }); // cache-multicapa // 4. Configurar seguridad app.use(helmet({ /* seguridad-web-helmet-cors */ })); // 5. Exponer health checks app.get('/healthz', ...); // health-checks-metrics app.get('/readyz', ...); app.get('/metrics', ...); // 6. Deploy con Docker multistage // (docker-multistage-produccion) ``` ## Pitfalls generales - ❌ Timeout menor que latencia real → funciona en dev (cache), falla en prod (sin cache) - ❌ Deploy con timeout menor que la latencia real → funciona en dev (cache), falla en prod (sin cache) - ❌ healthz y readyz iguales → no detectas tokens caídos o APIs fuera de línea - ❌ CORS con `'*'` en producción → cualquiera puede llamar a tu API - ❌ `npm install` en vez de `npm ci` → build no reproducible - ❌ Usuario root en contenedor → si hay vulnerabilidad, el atacante tiene root - ❌ Sin HEALTHCHECK → la plataforma no detecta si la app está caída - ❌ CSP demasiado restrictivo → CDNs no cargan (fonts.googleapis.com, cdn.jsdelivr.net) - ❌ Sin jitter en reintentos → thundering herd: todos reintentan al mismo tiempo
在 GitHub 查看