Extensión de YouTube para The Nocturne
Análisis en profundidad de la arquitectura EDA-Serverless y su vista por capas.
The Nocturne
Arquitectura EDA-Serverless · Vista integral por capas
Capa 1 · Cliente
Chrome Extension
AuthPhase · ActionPhase · StatusPhase
React 19 + Vite (1) Login OIDC · (2) Start Ritual · (6) Polling de estado · (8.1) POST
/upload-url
Capa 2 · Entrada API
API Gateway v2
POST /start · GET /status · POST /upload-url
HTTP API API Dispatcher
Gestión identidad · cifrado KMS · creación Job
Lambda · Ingesta (1.2) Cifrado token · (4.1) Decrypt token
Capa 3 · Seguridad
AWS KMS
Cifrado asimétrico de tokens y secretos
Key Management SSM Parameter Store
Configuración y secretos de aplicación
Secrets (3) Mensaje encolado · (4) Trigger Worker tras 3 reintentos → DLQ
Capa 4 · Mensajería
SQS Job Queue
Cola principal · entrega garantizada · decoupling
Autopista principal SQS DLQ
Mensajes fallidos ×3 · auditoría · aislamiento
Dead Letter Queue (4.3) YouTube API · (5.1) Re-inject a cola · (5.0) EventBridge Cron
Capa 5 · Cómputo
Worker Processor
Lógica de negocio · idempotencia · Time-Aware relay
Lambda · Motor Lambda Resumer
EventBridge 09:05 AM · detecta reset cuota · re-inyecta
Lambda · Scheduler Lambda Upload-URL
Genera presigned URLs · direct upload a S3
Lambda · S3 Gate YouTube Data API v3
Suscripciones · playlists · quota-aware
API Externa · Quota (4.2) Update state · (7.2) Query progress · (8.2) Presigned URL · (8.3)
Direct upload PUT
Capa 6 · Persistencia
DynamoDB
Estado de Jobs · contadores atómicos · QuotaLedger
Global State · KV S3 Bunker
JSON export/import · presigned access · lifecycle
Object Storage (7.1) GET /status · Lambda Status lee DynamoDB · responde % progreso al
cliente
Capa 7 · Observabilidad
Lambda Status
Lee doneCount/failedCount · responde % progreso
Read-only · Low mem EventBridge Cron
09:05 AM Madrid · dispara Lambda Resumer
Scheduler · Cron Flujos de datos end-to-end
📥 Importación (S3 Direct)
1Extensión solicita URL de
subida a Lambda Upload-URL
2Extensión sube JSON
directamente a S3 via PUT (presigned URL)
3Extensión llama al Dispatcher
con el s3Key del archivo subido
⚙️ Ejecución (Idempotente)
1Worker lee SQS, descarga
archivo de S3, procesa item a item
2Si queda poco tiempo →
auto-reencola (relay sin pérdida)
3Fallo crítico ×3 → mensaje va
a DLQ para auditoría
📊 Gobernanza (Quota-Aware)
1Antes de cada llamada
YouTube, Worker consulta QuotaLedger
2Sin cuota → estado cambia a
PAUSED_QUOTA
309:05 AM → Resumer detecta
reset y re-inyecta en cola activa
📡 Monitoreo (Real-Time)
1Extensión hace polling cada X
segundos a Lambda Status
2Lambda lee contadores atómicos
de DynamoDB
3Pinta barra de progreso con
doneCount y failedCount
×
Flujo interactivo completo del usuario en Nocturne: autenticación, exportación e importación
Vamos a simular un peticion de un usuario nuevo que va conectarse a su cuenta de google y luego va exportar 100 canales e importar 50 suscripciones + 10 playlists
El diagrama interactivo aparecerá de forma nativa justo encima de este párrafo, con sus estilos intactos y con interactividad en los clics.