Saltar a contenido

S1 · Entregable 3 — Diseño de Centro de Datos (AWS)

Competencia C3.1 · Arquitectura, dimensionamiento y virtualización cloud
Proyecto: LOGYX — Sistema Operativo Logístico Colaborativo para PYMEs
Equipo: Jorge Gutiérrez Miranda · Fabrizio Sanchez Saravia · Alex Coila Jarita
Semestre 1 · Junio 2026


Resumen Ejecutivo

El "Centro de Datos" de LOGYX es la infraestructura AWS en la región sa-east-1 (São Paulo) que aloja todos los servicios del sistema. Se adopta un modelo cloud puro en lugar de un datacenter físico, lo que entrega disponibilidad Tier III+ equivalente (99.982% según SLA de AWS) sin inversión en hardware ni instalaciones físicas.

La arquitectura sigue el patrón 3-tier (presentación → aplicación → datos) distribuida en dos zonas de disponibilidad (Multi-AZ) para eliminar puntos únicos de falla. El dimensionamiento está calibrado para el MVP (500 usuarios concurrentes) con capacidad de escalar hasta 5,000 usuarios sin rediseño estructural, solo aumentando el tamaño o cantidad de instancias.


Sección 1 — Definición de Arquitectura (Equivalencia Tier)

1.1 Equivalencia Tier según Uptime Institute

Característica Tier Tier I Tier II Tier III LOGYX (AWS)
Componentes redundantes No Parcial Sí (N+1) Sí (Multi-AZ)
Rutas de distribución 1 1 Múltiple Múltiple (2 AZ)
Mantenimiento sin downtime No No Sí (rolling deploy)
Tolerancia a fallo único No No
Disponibilidad garantizada 99.671% 99.741% 99.982% 99.99% (SLA AWS Multi-AZ)
Downtime anual máximo ~29h ~22h ~1.6h ~52 min

LOGYX clasifica como Tier III equivalente gracias a Multi-AZ en todos los componentes stateful y Auto Scaling para los componentes stateless.

1.2 Justificación basada en necesidades del negocio

Necesidad de LOGYX Tier requerido Justificación
Marketplace de subastas activo 24/7 Tier III+ Una subasta perdida = contrato perdido = ingreso perdido
Tracking de envíos en tiempo real Tier III+ Driver app necesita conexión para confirmar entregas
Procesamiento de pagos futuro (Fase 2) Tier III+ Regulación financiera exige alta disponibilidad
Costo controlado para startup No Tier IV Tier IV (99.9999%) triplica costos; no justificado en MVP

1.3 Arquitectura general

graph TB
    subgraph EDGE["Capa de Borde (Global)"]
        DNS[Route 53<br/>DNS Failover]
        CDN[CloudFront<br/>CDN + SSL]
        WAF[AWS WAF<br/>OWASP Rules]
    end

    subgraph DC["Centro de Datos Virtual — AWS sa-east-1"]
        subgraph PRESENTATION["Capa de Presentación"]
            ALB[Application Load Balancer<br/>Multi-AZ · HTTPS + WebSocket]
        end

        subgraph APPLICATION["Capa de Aplicación (Multi-AZ)"]
            ASG[Auto Scaling Group]
            EC2A[EC2 t3.medium<br/>Quarkus — AZ-A]
            EC2B[EC2 t3.medium<br/>Quarkus — AZ-B]
            ASG --> EC2A & EC2B
        end

        subgraph DATA["Capa de Datos (Multi-AZ)"]
            RDS[RDS PostgreSQL 16<br/>db.t3.medium · Multi-AZ]
            REDIS[ElastiCache Redis 7<br/>cache.t3.micro · Cluster Mode]
            S3[S3 Standard<br/>logyx-documents]
        end

        subgraph SECURITY["Capa de Seguridad Transversal"]
            SM[Secrets Manager]
            KMS[KMS CMK]
            GD[GuardDuty]
            CW[CloudWatch]
            CT[CloudTrail]
        end

        subgraph MANAGEMENT["Capa de Gestión"]
            SSM[SSM Parameter Store<br/>+ Session Manager]
            WZ[Wazuh IDS<br/>EC2 t3.small]
            BH[Bastion Host<br/>EC2 t3.micro]
        end
    end

    DNS --> CDN --> WAF --> ALB
    ALB --> EC2A & EC2B
    EC2A & EC2B --> RDS & REDIS & S3
    EC2A & EC2B --> SM & SSM
    RDS & S3 --> KMS
    CW & CT & GD -.->|monitorea| APPLICATION & DATA

Sección 2 — Diseño de Layout Físico (AWS Architecture)

2.1 Distribución por capas y AZs

┌────────────────────────────────────────────────────────────────┐
│  REGIÓN: sa-east-1 (São Paulo, Brasil)                         │
│                                                                │
│  ┌─────────── AZ-A (sa-east-1a) ─────────────────────────┐   │
│  │                                                        │   │
│  │  [SUBNET PÚBLICA — 10.0.1.0/24]                       │   │
│  │  ┌──────────────┐  ┌──────────────┐                   │   │
│  │  │ ALB Node A   │  │ NAT Gateway A│                   │   │
│  │  └──────────────┘  └──────────────┘                   │   │
│  │                                                        │   │
│  │  [SUBNET PRIVADA APP — 10.0.10.0/24]                  │   │
│  │  ┌─────────────────────────────────┐                  │   │
│  │  │ EC2 t3.medium                   │                  │   │
│  │  │ Quarkus Backend (Primary)       │                  │   │
│  │  │ vCPU: 2 · RAM: 4 GB            │                  │   │
│  │  │ AMI: Amazon Linux 2023 + JRE 21 │                  │   │
│  │  └─────────────────────────────────┘                  │   │
│  │                                                        │   │
│  │  [SUBNET PRIVADA DATOS — 10.0.20.0/24]                │   │
│  │  ┌──────────────────┐  ┌──────────────────┐           │   │
│  │  │ RDS Primary      │  │ ElastiCache      │           │   │
│  │  │ db.t3.medium     │  │ Primary Node     │           │   │
│  │  │ PG 16, 2vCPU     │  │ cache.t3.micro   │           │   │
│  │  │ 4 GB RAM, 100 GB │  │ 0.5 GB RAM       │           │   │
│  │  └──────────────────┘  └──────────────────┘           │   │
│  │                                                        │   │
│  │  [SUBNET MGMT — 10.0.30.0/24]                         │   │
│  │  ┌──────────────┐  ┌──────────────┐                   │   │
│  │  │ Wazuh IDS    │  │ Bastion Host │                   │   │
│  │  │ EC2 t3.small │  │ EC2 t3.micro │                   │   │
│  │  └──────────────┘  └──────────────┘                   │   │
│  └────────────────────────────────────────────────────────┘   │
│                                                                │
│  ┌─────────── AZ-B (sa-east-1b) ─────────────────────────┐   │
│  │                                                        │   │
│  │  [SUBNET PÚBLICA — 10.0.2.0/24]                       │   │
│  │  ┌──────────────┐  ┌──────────────┐                   │   │
│  │  │ ALB Node B   │  │ NAT Gateway B│                   │   │
│  │  └──────────────┘  └──────────────┘                   │   │
│  │                                                        │   │
│  │  [SUBNET PRIVADA APP — 10.0.11.0/24]                  │   │
│  │  ┌─────────────────────────────────┐                  │   │
│  │  │ EC2 t3.medium                   │                  │   │
│  │  │ Quarkus Backend (Secondary)     │                  │   │
│  │  │ vCPU: 2 · RAM: 4 GB            │                  │   │
│  │  └─────────────────────────────────┘                  │   │
│  │                                                        │   │
│  │  [SUBNET PRIVADA DATOS — 10.0.21.0/24]                │   │
│  │  ┌──────────────────┐  ┌──────────────────┐           │   │
│  │  │ RDS Standby      │  │ ElastiCache      │           │   │
│  │  │ (sync replica)   │  │ Replica Node     │           │   │
│  │  └──────────────────┘  └──────────────────┘           │   │
│  └────────────────────────────────────────────────────────┘   │
│                                                                │
│  [SERVICIOS GLOBALES / REGIÓN]                                 │
│  S3 Bucket: logyx-documents (versioning ON, SSE-KMS)          │
│  S3 Bucket: logyx-backups (lifecycle → Glacier 30d)           │
│  S3 Bucket: logyx-web (static Angular build + CloudFront)     │
│  CloudWatch Logs + Metrics · CloudTrail · GuardDuty            │
│  Secrets Manager · KMS · ACM (certificado SSL *.logyx.pe)     │
└────────────────────────────────────────────────────────────────┘

2.2 Flujo de una petición HTTP

1. Usuario (Lima) → DNS logyx.pe (Route 53, TTL 60s)
2. Route 53 → CloudFront POP más cercano (Bogotá o São Paulo edge)
3. CloudFront → AWS WAF (inspección OWASP Top 10)
4. WAF → ALB (balanceo entre AZ-A y AZ-B, health check cada 30s)
5. ALB → EC2 Quarkus (subnet privada, puerto 8080)
6. Quarkus → RDS PostgreSQL (subnet datos, puerto 5432, SSL)
7. Quarkus → ElastiCache Redis (puerto 6379, TLS)
8. Quarkus → S3 (via VPC Endpoint, sin pasar por internet)
9. Respuesta: EC2 → ALB → CloudFront → Usuario (~90–110 ms total)

Sección 3 — Dimensionamiento de Capacidad

3.1 Cálculo de carga esperada

Supuestos del MVP (Fase 1): - 200 PYMEs activas, 200 carriers activos - Pico: 500 usuarios concurrentes - Solicitudes API promedio: 10 req/s por usuario activo - Pico: 5,000 req/s (subastas abiertas simultáneamente) - Foto de entrega promedio: 2 MB

3.2 Dimensionamiento de EC2 (Backend Quarkus)

Parámetro Cálculo Valor
Req/s pico 500 usuarios × 10 req/s 5,000 req/s
Throughput por EC2 t3.medium ~500–800 req/s (Quarkus reactivo) ~600 req/s
Instancias necesarias (pico) 5,000 / 600 ~9 instancias
Instancias con buffer 30% 9 × 1.3 12 instancias máx
Instancias mínimas (normal) 500 usuarios / 600 2 instancias (1 por AZ)
ASG rango 2 – 12 instancias Escala automática
RAM por instancia t3.medium 4 GB (JVM Quarkus ~1 GB) 3 GB disponible
CPU por instancia 2 vCPU Quarkus usa ~0.5 vCPU normal

Justificación de t3.medium para MVP: Quarkus en modo JVM arranca con ~200 MB de RAM y consume ~0.2 vCPU en idle. Con 600 req/s simultáneos, sube a ~1.5 GB RAM y ~1.8 vCPU. El t3.medium (2 vCPU, 4 GB) tiene headroom suficiente para el MVP. Al superar el 70% de CPU, el ASG agrega instancias.

3.3 Dimensionamiento de RDS PostgreSQL

Parámetro Valor Justificación
Instancia db.t3.medium 2 vCPU, 4 GB RAM
shared_buffers 1 GB (25% RAM) Cache de páginas activas
effective_cache_size 3 GB Estimado cache OS
max_connections 100 (con PgBouncer) PgBouncer concentra 200 app conns en 20 BD conns
Storage 100 GB gp3 (SSD) Estimado 18 meses de datos con crecimiento moderado
IOPS 3,000 (baseline gp3) Suficiente para carga inicial; puede incrementar sin migración
Multi-AZ Standby sincrónico en AZ-B
Backup 30 días retention Automated daily
Mantenimiento Domingo 03:00 UTC-5 Ventana de menor actividad

Estimado de crecimiento de almacenamiento: | Tabla | Tamaño/fila | Filas/mes | GB/mes | |-------|-------------|-----------|--------| | shipments | ~500 bytes | 3,000 | 0.0015 | | shipment_stops | ~300 bytes | 9,000 | 0.003 | | messages | ~200 bytes | 30,000 | 0.006 | | audit_log | ~400 bytes | 50,000 | 0.02 | | documents (metadata) | ~200 bytes | 6,000 | 0.0012 | | Total BD/mes | | | ~0.1 GB/mes |

Con 100 GB inicial, LOGYX tiene capacidad para ~80 años de operación al ritmo del MVP. El storage real a considerar es el S3 (documentos/fotos).

3.4 Dimensionamiento de ElastiCache Redis

Parámetro Valor Uso
Tipo cache.t3.micro 0.5 GB RAM
Datos en cache Marketplace ranking (TTL 60s) + sesiones WebSocket + pub/sub chat ~100 MB máx en pico
Conexiones máx 65,000 Muy por encima de lo necesario
Modo Cluster con 1 réplica en AZ-B Alta disponibilidad

3.5 Dimensionamiento de S3

Bucket Contenido Tamaño promedio Volumen/mes GB/mes
logyx-documents Fotos de entrega + firmas 2 MB/foto 6,000 fotos 12 GB/mes
logyx-backups RDS snapshots cifrados ~0.1 GB/backup 30 backups 3 GB/mes
logyx-web Build Angular estático ~10 MB 1 deploy/semana < 0.1 GB

Política de lifecycle S3: - Fotos de entrega: Standard (0–90d) → Standard-IA (90d–1año) → Glacier (>1 año) - Backups: Standard (0–30d) → eliminar automáticamente - Costo estimado S3: ~$0.50/mes en inicio, ~$6/mes al año 1

3.6 Resumen de instancias y costo mensual estimado

Servicio Tipo/SKU Cant Costo unitario (USD) Total (USD/mes)
EC2 backend t3.medium (on-demand) 2–12 $33 $66 (mín)
RDS PostgreSQL db.t3.medium Multi-AZ 1 $97 $97
ElastiCache Redis cache.t3.micro + réplica 2 $13 $26
ALB 1 $22 $22
NAT Gateway 2 $32 $65
S3 (12 GB/mes) Standard + IA $3
CloudFront (100 GB) $9
CloudWatch Logs + métricas $15
GuardDuty $4
Secrets Manager 5 secretos $2
Route 53 1 hosted zone $1
Bastion Host t3.micro 1 $8 $8
Wazuh IDS t3.small 1 $15 $15
TOTAL MVP (mín) ~$333/mes
TOTAL MVP (pico 12 EC2) ~$630/mes

Sección 4 — Virtualización y Cloud Híbrido

4.1 Modelo de computación adoptado: AWS ECS Fargate + EC2

LOGYX utiliza un modelo híbrido de virtualización dentro de AWS:

Workload Tecnología Justificación
Backend Quarkus (API principal) EC2 t3.medium + Auto Scaling Control total sobre JVM, mayor predictibilidad de latencia, costo más bajo que Fargate para carga continua
Jobs programados (Smart Load Planner, cierre de subastas) ECS Fargate (on-demand) Solo se ejecutan 30 min/hora; Fargate evita pagar EC2 idle para eso
Angular web (assets estáticos) S3 + CloudFront Sin servidores — pure CDN, máximo rendimiento global, costo mínimo
Flutter apps APK/IPA distribuidos No requieren infraestructura de servidor (client-side)

4.2 Esquema de virtualización

┌─────────────────────────────────────────────────────────┐
│  CAPA DE VIRTUALIZACIÓN LOGYX                           │
│                                                         │
│  ┌──────────────────────────────────────────────────┐  │
│  │  EC2 (Hypervisor Nitro — AWS)                    │  │
│  │  ┌────────────────────────────────────────────┐  │  │
│  │  │  Amazon Linux 2023 (OS)                    │  │  │
│  │  │  ┌─────────────────────────────────────┐   │  │  │
│  │  │  │  Docker Engine                      │   │  │  │
│  │  │  │  ┌─────────────────────────────┐   │   │  │  │
│  │  │  │  │  Container: Quarkus JVM     │   │   │  │  │
│  │  │  │  │  Java 21 + Quarkus 3.x      │   │   │  │  │
│  │  │  │  │  Puerto 8080                │   │   │  │  │
│  │  │  │  └─────────────────────────────┘   │   │  │  │
│  │  │  └─────────────────────────────────────┘   │  │  │
│  │  └────────────────────────────────────────────┘  │  │
│  │                                                   │  │
│  │  ECS Fargate (Serverless Containers)              │  │
│  │  ┌────────────────────────────────────────────┐  │  │
│  │  │  Task: SmartLoadPlannerJob (0.5 vCPU, 1GB) │  │  │
│  │  │  Schedule: EventBridge cada 30 min          │  │  │
│  │  └────────────────────────────────────────────┘  │  │
│  └──────────────────────────────────────────────────┘  │
│                                                         │
│  SERVICIOS GESTIONADOS (sin virtualización manual)      │
│  RDS PostgreSQL → AWS gestiona OS, patches, failover   │
│  ElastiCache Redis → AWS gestiona réplica y failover   │
│  S3 → AWS gestiona distribución y redundancia 11 9s    │
└─────────────────────────────────────────────────────────┘

4.3 Estrategia de contenedores

Repositorio de imágenes: Amazon ECR (Elastic Container Registry)

Imagen backend: logyx/quarkus-backend:latest
  Base: eclipse-temurin:21-jre-alpine (91 MB)
  App:  logyx-backend.jar (~50 MB)
  Total: ~141 MB

Pipeline de actualización:
  Git push → GitHub Actions → mvn package
  → docker build → docker push ECR
  → ECS rolling update (0% downtime)
    └── Nuevo task healthy → terminar task antiguo

4.4 Migración a microservicios (Roadmap)

El monolito actual puede extraerse a microservicios en Fase 3 sin cambiar la red:

Microservicio candidato Trigger de extracción Infraestructura
pricing-service > 500 req/s de cotizaciones ECS Fargate dedicado
smartload-service Scheduler independiente requerido ECS Fargate programado
notification-service Uso masivo de WebSocket EC2 dedicado con sticky sessions
tracking-service Alta frecuencia de actualizaciones GPS EC2 con Redis Stream

Sección 5 — Cumplimiento de Estándares

Estándar Aplicación en LOGYX
Uptime Institute Tier III Equivalencia lograda via Multi-AZ + Auto Scaling
AWS Well-Architected Framework 5 pilares evaluados: Operacional, Seguridad, Fiabilidad, Rendimiento, Costos
ISO/IEC 27001 Cifrado en reposo (KMS), en tránsito (TLS 1.3), control de accesos (IAM)
PCI DSS (fase 2) Preparación para pagos: VPC aislada para componentes de pago
NIST SP 800-145 Definición de cloud computing: LOGYX usa IaaS (EC2) + PaaS (RDS, ElastiCache) + SaaS (CloudFront)

Anexos

Anexo A — Comparativa DC físico vs AWS para LOGYX

Aspecto DC físico AWS (LOGYX)
Inversión inicial USD 50,000+ (servidores, switches, UPS) USD 0 (pago por uso)
Tiempo de aprovisionamiento 2–4 semanas < 30 minutos (Terraform)
Redundancia física Requiere 2 servidores físicos mínimo Multi-AZ incluido
Escalado Manual (comprar hardware) Automático (ASG)
Mantenimiento OS/hardware Equipo interno AWS gestiona (RDS, ElastiCache)
Disponibilidad Depende del diseño 99.99% SLA AWS
Costo mensual MVP ~USD 800 (electricidad + depreciación) ~USD 333 (pay-as-you-go)

Anexo B — Cálculo de disponibilidad

Componentes en serie (todos deben estar disponibles):
  CloudFront:       99.99%
  ALB:              99.99%
  EC2 (2 AZ):       99.99%
  RDS Multi-AZ:     99.95%
  ElastiCache:      99.90%

Disponibilidad total = 99.99% × 99.99% × 99.99% × 99.95% × 99.90%
                     ≈ 99.82%

Downtime anual estimado: ~15.7 horas
→ Por encima del objetivo de 99% del SRS (RNF-02)
→ Con mejoras en caché (Redis absorbe fallas de RDS cortas):
   Disponibilidad efectiva percibida ≈ 99.9%

LOGYX · S1 Entregable 3 · Diseño de Centro de Datos · Competencia C3.1 · Junio 2026