Arquitecto de Soluciones AWS

NutriTrack SaaS — Plan de Arquitectura AWS

Diseño serverless + optimización de costes · Generado el 12 Jun 2026
SaaS Platform · GDPR Compliance
8.000 usuarios · 80 RPS promedio
Región: eu-west-1 (Irlanda)
~$155
Coste target/mes
-$370
Ahorro identificado
99.9%
SLA objetivo
Serverless
Patrón recomendado
Web App · 1k–100k usuarios
20.0%
Ahorro potencial inmediato
$1.850 → $1.480/mes (infra actual)
$155
Coste nueva arquitectura
Frente a $1.850/mes actual
14
Problemas detectados
4 alta · 5 media · 5 baja prioridad
☁️ Arquitectura Recomendada Serverless Web Application
Usuarios
👥
8.000 Usuarios
Dietistas + Pacientes
Edge / CDN
🌐
CloudFront
$10–30/mes · CDN global
🔒
WAF
GDPR · Rate limiting
Compute
API Gateway
$10–40/mes · 800 RPS
λ
Lambda
$5–20/mes · 512 MB
🗃️
S3 + Hosting
$1–5/mes · Static SPA
Datos
🗄️
DynamoDB
$5–30/mes · PAY_PER_REQUEST
🔑
Cognito
Gratis hasta 50k MAU
🔐
KMS
GDPR · Cifrado en reposo
Operaciones
📊
CloudWatch
Métricas + Alarms
🚀
CodePipeline
CI/CD · GitHub
🛡️
GuardDuty
Threat detection
💰 Desglose de costes — Nueva arquitectura
~$155/mes
API Gateway
$10–40
800 RPS throttling
CloudFront CDN
$10–30
Cache-Control · Edge EU
DynamoDB
$5–30
PAY_PER_REQUEST · KMS
Lambda
$5–20
512 MB · node20.x
Cognito
Gratis
Free tier 50k MAU
S3 (hosting + assets)
$1–5
Lifecycle IA 30d · Glacier 90d
Estimación total mensual nueva arquitectura ~$155 USD
⚖️ Ventajas e inconvenientes
✅ Ventajas
Sin gestión de servidores
Auto-scaling integrado
Pago por uso real
Alta disponibilidad nativa
Despliegue rápido
⚠️ Consideraciones
!Cold start 100–500 ms
!Vendor lock-in AWS
!Debug distribuido complejo
!Curva aprendizaje serverless
📈 Capacidad de escalado
Usuarios soportados 1k – 100k
Peticiones por segundo 100 – 10.000 RPS
Método de escalado Automático (Lambda concurrency)
Disponibilidad 99.99% (multi-AZ DynamoDB)
GDPR compliance KMS + eu-west-1 + WAF
📄
Plantilla CloudFormation — NutriTrack Serverless Stack
nutritrack-serverless.yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: NutriTrack SaaS — Serverless Backend Stack (eu-west-1, GDPR)

Parameters:
  AppName:
    Type: String
    Default: nutritrack
  Environment:
    Type: String
    AllowedValues: [dev, staging, prod]
    Default: prod

Resources:

  # ── COGNITO USER POOL (autenticación GDPR) ───────────────────────
  UserPool:
    Type: AWS::Cognito::UserPool
    Properties:
      UserPoolName: !Sub ${AppName}-users-${Environment}
      AutoVerifiedAttributes: [email]
      MfaConfiguration: OPTIONAL
      PasswordPolicy:
        MinimumLength: 12
        RequireUppercase: true
        RequireSymbols: true

  # ── API LAMBDA (backend NutriTrack) ──────────────────────────────
  ApiFunction:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: !Sub ${AppName}-api-${Environment}
      Handler: index.handler
      Runtime: nodejs20.x
      MemorySize: 512
      Timeout: 10
      Tracing: Active   # X-Ray habilitado
      Environment:
        Variables:
          TABLE_NAME: !Ref DataTable
          USER_POOL_ID: !Ref UserPool
          ENVIRONMENT: !Ref Environment
      Policies:
        - DynamoDBCrudPolicy:
            TableName: !Ref DataTable
      Events:
        ApiEvent:
          Type: Api
          Properties:
            Path: /{proxy+}
            Method: ANY
            Auth:
              Authorizer: NutriCognito

  # ── DYNAMODB (perfiles + registros nutricionales) ─────────────────
  DataTable:
    Type: AWS::DynamoDB::Table
    Properties:
      TableName: !Sub ${AppName}-data-${Environment}
      BillingMode: PAY_PER_REQUEST
      PointInTimeRecoverySpecification:
        PointInTimeRecoveryEnabled: true
      SSESpecification:
        SSEEnabled: true
        SSEType: KMS  # GDPR: cifrado con clave gestionada
      AttributeDefinitions:
        - AttributeName: pk     # userId o clinicId
          AttributeType: S
        - AttributeName: sk     # entidad#fecha
          AttributeType: S
      KeySchema:
        - AttributeName: pk
          KeyType: HASH
        - AttributeName: sk
          KeyType: RANGE

  # ── S3 ASSETS (SPA React + uploads dietistas) ────────────────────
  WebBucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: !Sub ${AppName}-web-${Environment}
      VersioningConfiguration:
        Status: Enabled
      LifecycleConfiguration:
        Rules:
          - Status: Enabled
            Transitions:
              - TransitionInDays: 30
                StorageClass: STANDARD_IA
              - TransitionInDays: 90
                StorageClass: GLACIER_IR

Outputs:
  ApiEndpoint:
    Description: URL del API REST NutriTrack
    Value: !Sub https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/${Environment}
  UserPoolId:
    Value: !Ref UserPool
    Export:
      Name: !Sub ${AppName}-UserPoolId
💡
Optimización de costes — Infraestructura actual ($1.850/mes)

Ahorro potencial identificado con 14 mejoras

Análisis automático de EC2, RDS, Lambda, S3, NAT Gateways, CloudWatch y VPC

$1.850
Gasto actual/mes
-$370
Ahorro identificado
$1.480
Coste optimizado/mes
20%
Reducción
🔴 Alta prioridad — Acción inmediata
ALTA
EC2 — Instancias inactivas
2 instancias t3.large con <10% CPU utilization (i-001, i-002)
Detener o eliminar instancias ociosas; considerar downsizing a t3.medium
+$100
ahorro/mes
ALTA
NAT Gateway — Consolidación
2 NAT Gateways activos sin necesidad de multi-AZ
Reducir a 1 NAT Gateway; crear VPC Endpoints para S3 y DynamoDB
+$45
ahorro/mes
ALTA
EC2 — Elastic IPs no asignadas
2 Elastic IPs sin instancia asociada (eip-1, eip-2)
Liberar las EIPs sin uso para evitar cobro por hora
+$7
ahorro/mes
ALTA
AWS Budgets — Sin alertas configuradas
No hay presupuesto ni alertas de gasto configuradas
Crear alertas al 50%, 80%, 100% del presupuesto mensual
Prevención
coste oculto
🟡 Media prioridad — Esta semana
MEDIA
RDS Aurora — Migración Serverless v2
nutritrack-db con <30% utilización media · $280/mes fijo
Migrar a Aurora Serverless v2 para auto-scaling y pago por uso
+$112
ahorro/mes
MEDIA
EC2 — Savings Plan 1 año
3 instancias en On-Demand pricing
Contratar Compute Savings Plan 1 año (ahorro ~30%)
+$45
ahorro/mes
MEDIA
S3 — Lifecycle policy
Bucket nutritrack-data (320 GB) sin lifecycle policy
Transición a IA a los 30 días, Glacier Instant Retrieval a los 90 días
+$5
ahorro/mes
BAJA
Lambda — Right-sizing memoria
8 funciones con 1024 MB · uso real <200 MB
Usar Lambda Power Tuning tool para optimizar a 256–512 MB
+$40
ahorro/mes
Checklist de despliegue — NutriTrack Serverless
1
Planning
5 tareas
Revisar patrón Serverless Web Application
Estimar costes con AWS Pricing Calculator
Definir estrategia de entornos (dev/staging/prod)
Configurar AWS Organization y cuentas
Definir estrategia de etiquetado (cost allocation)
2
Foundation
5 tareas
Crear VPC con subnets públicas/privadas (eu-west-1)
Configurar VPC Endpoints para S3 y DynamoDB
Crear roles IAM con menor privilegio
Habilitar CloudTrail para auditoría (GDPR)
Configurar AWS Config para compliance
3
Core Services
5 tareas
Deploy S3 + CloudFront (SPA hosting)
Deploy API Gateway + Lambda (nutritrack-api)
Deploy DynamoDB (PAY_PER_REQUEST + KMS)
Deploy Cognito User Pool (GDPR + MFA)
Deploy CodePipeline (GitHub → prod)
4
Security
5 tareas
Configurar Security Groups y NACLs
Habilitar KMS para todos los servicios (GDPR)
Configurar WAF rules (OWASP Top 10)
Configurar Secrets Manager (credenciales)
Habilitar GuardDuty (detección amenazas)
5
Monitoring
5 tareas
Crear dashboards CloudWatch (latencia, errores)
Configurar alarmas para métricas críticas
Crear topics SNS para notificaciones
Habilitar X-Ray para trazabilidad distribuida
Configurar retención de logs (7 días dev / 30 días prod)
6
CI/CD
5 tareas
Configurar CodePipeline o GitHub Actions
Implementar tests automatizados
Configurar despliegue Blue/Green
Establecer procedimientos de rollback
Documentar proceso de despliegue