diciembre 21, 2025
14 min de lectura

Preguntas para Entrevistas de Arquitecto Cloud: Guía Completa

interview
career-advice
job-search
Preguntas para Entrevistas de Arquitecto Cloud: Guía Completa
MB

Milad Bonakdar

Autor

Domina los conceptos de arquitectura cloud con preguntas de entrevista exhaustivas que cubren estrategias multi-cloud, microservicios, patrones de diseño, seguridad y soluciones a escala empresarial para roles de arquitecto cloud.


Introducción

Los arquitectos de la nube diseñan soluciones en la nube a escala empresarial que son escalables, seguras, rentables y están alineadas con los objetivos empresariales. Este rol requiere experiencia en múltiples plataformas en la nube, patrones arquitectónicos y la capacidad de tomar decisiones técnicas estratégicas.

Esta guía cubre preguntas esenciales de entrevistas para arquitectos de la nube, centrándose en estrategias multi-nube, microservicios, patrones de diseño y soluciones empresariales.


Estrategia Multi-Nube

1. ¿Cómo diseña una estrategia multi-nube?

Respuesta: Multi-nube aprovecha múltiples proveedores de nube para la resiliencia, la optimización de costes y evitar el bloqueo del proveedor.

Consideraciones Clave:

Loading diagram...

Patrones de Arquitectura:

1. Activo-Activo:

  • Las cargas de trabajo se ejecutan simultáneamente en múltiples nubes
  • Balanceo de carga entre proveedores
  • Máxima disponibilidad

2. Activo-Pasivo:

  • Nube primaria para producción
  • Secundaria para recuperación ante desastres
  • Rentable

3. Servicios Agnostic a la Nube:

  • Utilizar Kubernetes para la portabilidad
  • Terraform para IaC en todas las nubes
  • Pipelines CI/CD estandarizados

Desafíos:

  • Complejidad en la gestión
  • Costes de transferencia de datos
  • Requisitos de habilidades
  • Políticas de seguridad consistentes

Rareza: Común Dificultad: Difícil


2. ¿Cómo planifica y ejecuta una migración a la nube?

Respuesta: La migración a la nube requiere una planificación cuidadosa, evaluación de riesgos y ejecución por fases.

Las 6 R de la Migración:

Loading diagram...

Estrategias de Migración:

1. Rehost (Lift and Shift):

  • Mover tal cual a la nube
  • Más rápido, menor riesgo
  • Beneficios limitados de la nube

2. Replatform (Lift, Tinker, and Shift):

  • Optimizaciones menores
  • Ejemplo: Mover a una base de datos gestionada
  • Equilibrio entre velocidad y beneficios

3. Refactor/Re-architect:

  • Rediseñar para ser nativo de la nube
  • Máximos beneficios
  • Mayor esfuerzo y riesgo

4. Repurchase:

  • Mover a SaaS
  • Ejemplo: Reemplazar un CRM personalizado con Salesforce

5. Retire:

  • Desmantelar aplicaciones no utilizadas

6. Retain:

  • Mantener on-premises (cumplimiento, latencia)

Fases de Migración:

# Herramienta de evaluación de la migración
class MigrationAssessment:
    def __init__(self, application):
        self.app = application
        self.score = 0
    
    def assess_cloud_readiness(self):
        factors = {
            'architecture': self.check_architecture(),
            'dependencies': self.check_dependencies(),
            'data_volume': self.check_data_volume(),
            'compliance': self.check_compliance(),
            'performance': self.check_performance_requirements()
        }
        
        # Calcular la complejidad de la migración
        complexity = sum(factors.values()) / len(factors)
        
        if complexity < 3:
            return "Rehost - Baja complejidad"
        elif complexity < 6:
            return "Replatform - Complejidad media"
        else:
            return "Refactor - Alta complejidad"
    
    def generate_migration_plan(self):
        return {
            'phase_1': 'Evaluación y Planificación',
            'phase_2': 'Prueba de Concepto',
            'phase_3': 'Migración de Datos',
            'phase_4': 'Migración de Aplicaciones',
            'phase_5': 'Pruebas y Validación',
            'phase_6': 'Puesta en Marcha y Lanzamiento',
            'phase_7': 'Optimización'
        }

Ejecución de la Migración:

1. Evaluación:

  • Inventariar aplicaciones y dependencias
  • Analizar costes (TCO)
  • Identificar riesgos y restricciones

2. Planificación:

  • Elegir la estrategia de migración por aplicación
  • Definir los criterios de éxito
  • Crear planes de reversión

3. Migración Piloto:

  • Comenzar con una aplicación no crítica
  • Validar el enfoque
  • Refinar los procesos

4. Migración de Datos:

# Ejemplo: Migración de base de datos con AWS DMS
aws dms create-replication-instance \
    --replication-instance-identifier migration-instance \
    --replication-instance-class dms.t2.medium

# Crear tarea de migración
aws dms create-replication-task \
    --replication-task-identifier db-migration \
    --source-endpoint-arn arn:aws:dms:region:account:endpoint/source \
    --target-endpoint-arn arn:aws:dms:region:account:endpoint/target \
    --migration-type full-load-and-cdc

5. Estrategia de Transición:

  • Big Bang: Todo de una vez (arriesgado)
  • Por Fases: Migración gradual (más seguro)
  • Ejecución Paralela: Ejecutar ambos entornos

Mitigación de Riesgos:

  • Pruebas exhaustivas
  • Procedimientos de reversión automatizados
  • Líneas de base de rendimiento
  • Validación de seguridad
  • Monitorización de costes

Rareza: Muy Común Dificultad: Media-Difícil


Arquitectura de Microservicios

3. ¿Cómo diseña una arquitectura de microservicios?

Respuesta: Los microservicios descomponen las aplicaciones en servicios pequeños e independientes.

Arquitectura:

Loading diagram...

Principios Clave:

1. Independencia del Servicio:

  • Cada servicio posee sus datos
  • Despliegue independiente
  • Se permite la diversidad tecnológica

2. Comunicación:

# Síncrono (REST API)
import requests

def get_user(user_id):
    response = requests.get(f'http://user-service/api/users/{user_id}')
    return response.json()

# Asíncrono (Cola de Mensajes)
import pika

def publish_order_event(order_data):
    connection = pika.BlockingConnection(pika.ConnectionParameters('rabbitmq'))
    channel = connection.channel()
    channel.queue_declare(queue='orders')
    channel.basic_publish(
        exchange='',
        routing_key='orders',
        body=json.dumps(order_data)
    )
    connection.close()

3. API Gateway:

  • Punto de entrada único
  • Autenticación/autorización
  • Limitación de velocidad
  • Enrutamiento de solicitudes

4. Descubrimiento de Servicios:

  • Registro dinámico de servicios
  • Comprobaciones de salud
  • Balanceo de carga

Beneficios:

  • Escalado independiente
  • Flexibilidad tecnológica
  • Aislamiento de fallos
  • Despliegue más rápido

Desafíos:

  • Complejidad del sistema distribuido
  • Consistencia de datos
  • Complejidad de las pruebas
  • Sobrecarga operativa

Rareza: Muy Común Dificultad: Difícil


4. ¿Cómo implementa una malla de servicio en microservicios?

Respuesta: Una malla de servicio proporciona una capa de infraestructura para la comunicación servicio a servicio, gestionando el tráfico, la seguridad y la observabilidad.

Arquitectura:

Loading diagram...

Características Clave:

1. Gestión del Tráfico:

  • Balanceo de carga
  • Circuit breaking
  • Reintentos y timeouts
  • Despliegues canary
  • Pruebas A/B

2. Seguridad:

  • Cifrado mTLS
  • Autenticación
  • Políticas de autorización

3. Observabilidad:

  • Trazado distribuido
  • Recolección de métricas
  • Registro de acceso

Implementación de Istio:

# Servicio Virtual para el enrutamiento del tráfico
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: reviews-route
spec:
  hosts:
  - reviews
  http:
  - match:
    - headers:
        user-type:
          exact: premium
    route:
    - destination:
        host: reviews
        subset: v2
      weight: 100
  - route:
    - destination:
        host: reviews
        subset: v1
      weight: 90
    - destination:
        host: reviews
        subset: v2
      weight: 10

---
# Regla de Destino para el balanceo de carga
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: reviews-destination
spec:
  host: reviews
  trafficPolicy:
    loadBalancer:
      simple: LEAST_REQUEST
    connectionPool:
      tcp:
        maxConnections: 100
      http:
        http1MaxPendingRequests: 50
        maxRequestsPerConnection: 2
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2

Configuración del Circuit Breaker:

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: circuit-breaker
spec:
  host: payment-service
  trafficPolicy:
    outlierDetection:
      consecutiveErrors: 5
      interval: 30s
      baseEjectionTime: 30s
      maxEjectionPercent: 50

Seguridad mTLS:

apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
  namespace: production
spec:
  mtls:
    mode: STRICT

---
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: allow-read
spec:
  action: ALLOW
  rules:
  - from:
    - source:
        principals: ["cluster.local/ns/default/sa/frontend"]
    to:
    - operation:
        methods: ["GET"]

Observabilidad con Kiali:

# Instalar Istio con addons de observabilidad
istioctl install --set profile=demo

# Desplegar Kiali, Prometheus, Grafana, Jaeger
kubectl apply -f samples/addons/

# Acceder al dashboard de Kiali
istioctl dashboard kiali

Comparación de Mallas de Servicio:

CaracterísticaIstioLinkerdConsul
ComplejidadAltaBajaMedia
RendimientoBuenaExcelenteBuena
CaracterísticasCompletaEsencialCompleta
Curva de AprendizajeEmpinadaSuaveMedia
Uso de RecursosAltoBajoMedio

Cuándo Usar:

  • Grandes despliegues de microservicios (50+ servicios)
  • Necesidad de gestión avanzada del tráfico
  • Requisitos de seguridad (mTLS)
  • Despliegues multi-cluster
  • Requisitos de observabilidad

Rareza: Común Dificultad: Difícil


Patrones de Diseño

5. Explique el patrón Circuit Breaker y cuándo usarlo.

Respuesta: El Circuit Breaker previene fallos en cascada en sistemas distribuidos.

Estados:

  1. Cerrado: Operación normal
  2. Abierto: Fallos detectados, las solicitudes fallan rápidamente
  3. Semi-Abierto: Probando si el servicio se ha recuperado
from enum import Enum
import time

class CircuitState(Enum):
    CLOSED = "cerrado"
    OPEN = "abierto"
    HALF_OPEN = "semi-abierto"

class CircuitBreaker:
    def __init__(self, failure_threshold=5, timeout=60, success_threshold=2):
        self.failure_threshold = failure_threshold
        self.timeout = timeout
        self.success_threshold = success_threshold
        self.failures = 0
        self.successes = 0
        self.last_failure_time = None
        self.state = CircuitState.CLOSED
    
    def call(self, func, *args, **kwargs):
        if self.state == CircuitState.OPEN:
            if time.time() - self.last_failure_time > self.timeout:
                self.state = CircuitState.HALF_OPEN
                self.successes = 0
            else:
                raise Exception("El circuit breaker está ABIERTO")
        
        try:
            result = func(*args, **kwargs)
            self.on_success()
            return result
        except Exception as e:
            self.on_failure()
            raise e
    
    def on_success(self):
        self.failures = 0
        if self.state == CircuitState.HALF_OPEN:
            self.successes += 1
            if self.successes >= self.success_threshold:
                self.state = CircuitState.CLOSED
    
    def on_failure(self):
        self.failures += 1
        self.last_failure_time = time.time()
        if self.failures >= self.failure_threshold:
            self.state = CircuitState.OPEN

# Uso
breaker = CircuitBreaker()
result = breaker.call(external_api_call, user_id=123)

Casos de Uso:

  • Llamadas a APIs externas
  • Conexiones a bases de datos
  • Comunicación entre microservicios
  • Integraciones de terceros

Rareza: Común Dificultad: Media-Difícil


Arquitectura Dirigida por Eventos

6. Explique la arquitectura dirigida por eventos y cuándo usarla.

Respuesta: La Arquitectura Dirigida por Eventos (EDA) utiliza eventos para activar y comunicarse entre servicios desacoplados.

Arquitectura:

Loading diagram...

Conceptos Centrales:

1. Evento:

  • Hecho inmutable que sucedió
  • Contiene datos relevantes
  • Con marca de tiempo

2. Productor de Eventos:

  • Publica eventos
  • No conoce a los consumidores

3. Consumidor de Eventos:

  • Se suscribe a eventos
  • Procesa asíncronamente

4. Bus/Broker de Eventos:

  • Enruta eventos
  • Ejemplos: Kafka, RabbitMQ, AWS EventBridge

Implementación de Kafka:

from kafka import KafkaProducer, KafkaConsumer
import json
from datetime import datetime
import uuid

# Productor de Eventos
class OrderEventProducer:
    def __init__(self):
        self.producer = KafkaProducer(
            bootstrap_servers=['localhost:9092'],
            value_serializer=lambda v: json.dumps(v).encode('utf-8')
        )
    
    def publish_order_created(self, order_id, customer_id, items, total):
        event = {
            'event_type': 'OrderCreated',
            'event_id': str(uuid.uuid4()),
            'timestamp': datetime.utcnow().isoformat(),
            'data': {
                'order_id': order_id,
                'customer_id': customer_id,
                'items': items,
                'total': total
            }
        }
        self.producer.send('order-events', value=event)
        self.producer.flush()

# Consumidor de Eventos
class InventoryEventConsumer:
    def __init__(self):
        self.consumer = KafkaConsumer(
            'order-events',
            bootstrap_servers=['localhost:9092'],
            value_deserializer=lambda m: json.loads(m.decode('utf-8')),
            group_id='inventory-service'
        )
    
    def process_events(self):
        for message in self.consumer:
            event = message.value
            if event['event_type'] == 'OrderCreated':
                self.reserve_inventory(event['data'])
    
    def reserve_inventory(self, order_data):
        # Lógica para reservar el inventario
        print(f"Reservando inventario para el pedido {order_data['order_id']}")
        # Publicar el evento InventoryReserved

Patrón de Event Sourcing:

# Almacenar eventos en lugar del estado actual
class EventStore:
    def __init__(self):
        self.events = []
    
    def append(self, event):
        self.events.append(event)
    
    def get_events(self, aggregate_id):
        return [e for e in self.events if e['aggregate_id'] == aggregate_id]

# Reconstruir el estado a partir de los eventos
class OrderAggregate:
    def __init__(self, order_id):
        self.order_id = order_id
        self.status = 'pending'
        self.items = []
        self.total = 0
    
    def apply_event(self, event):
        if event['type'] == 'OrderCreated':
            self.items = event['data']['items']
            self.total = event['data']['total']
        elif event['type'] == 'OrderPaid':
            self.status = 'paid'
        elif event['type'] == 'OrderShipped':
            self.status = 'shipped'
    
    def rebuild_from_events(self, events):
        for event in events:
            self.apply_event(event)

CQRS (Command Query Responsibility Segregation):

Loading diagram...

Beneficios:

  • Acoplamiento débil
  • Escalabilidad
  • Flexibilidad
  • Pista de auditoría (event sourcing)
  • Procesamiento en tiempo real

Desafíos:

  • Consistencia eventual
  • Evolución del esquema de eventos
  • Complejidad de la depuración
  • Manejo de eventos duplicados

Casos de Uso:

  • Procesamiento de pedidos de comercio electrónico
  • Analítica en tiempo real
  • Procesamiento de datos de IoT
  • Comunicación entre microservicios
  • Sistemas de auditoría y cumplimiento

Rareza: Común Dificultad: Difícil


Recuperación ante Desastres

7. ¿Cómo diseña una estrategia de recuperación ante desastres?

Respuesta: La recuperación ante desastres (DR) asegura la continuidad del negocio durante las interrupciones.

Métricas Clave:

  • RTO (Recovery Time Objective): Tiempo máximo aceptable de inactividad
  • RPO (Recovery Point Objective): Pérdida máxima aceptable de datos

Estrategias de DR:

EstrategiaRTORPOCosteComplejidad
Backup & RestoreHorasHorasBajoBajo
Pilot LightMinutosMinutosMedioMedio
Warm StandbyMinutosSegundosAltoMedio
Activo-ActivoSegundosNingunoMás AltoAlto

Ejemplo de Implementación:

Loading diagram...

Automatización:

# Script de failover automatizado
def initiate_failover():
    # 1. Detener las escrituras en la primaria
    stop_primary_writes()
    
    # 2. Promocionar la base de datos secundaria
    promote_secondary_to_primary()
    
    # 3. Actualizar el DNS
    update_route53_failover()
    
    # 4. Iniciar los servicios de la región de DR
    start_dr_services()
    
    # 5. Verificar la salud
    verify_dr_health()
    
    # 6. Notificar al equipo
    send_alert("Failover completado a la región de DR")

Pruebas:

  • Simulacros regulares de DR (trimestralmente)
  • Pruebas automatizadas
  • Documentar los runbooks
  • Revisiones post-incidente

Rareza: Muy Común Dificultad: Difícil


Seguridad y Cumplimiento

8. ¿Cómo implementa la seguridad de confianza cero en la arquitectura de la nube?

Respuesta: La Confianza Cero asume que no hay confianza implícita, verifica todo.

Principios:

  1. Verificar explícitamente
  2. Acceso con el mínimo privilegio
  3. Asumir la brecha

Implementación:

Loading diagram...

Componentes:

1. Identidad y Acceso:

# Ejemplo: Política de acceso condicional
policies:
  - name: "Requerir MFA para aplicaciones sensibles"
    conditions:
      applications: ["finance-app", "hr-system"]
      users: ["all"]
    controls:
      - require_mfa: true
      - require_compliant_device: true
      - allowed_locations: ["corporate-network", "vpn"]

2. Segmentación de la Red:

  • Micro-segmentación
  • Malla de servicio (Istio, Linkerd)
  • Políticas de red

3. Cifrado:

  • Datos en reposo
  • Datos en tránsito
  • Cifrado de extremo a extremo

4. Monitorización Continua:

  • Detección de amenazas en tiempo real
  • Analítica del comportamiento
  • Respuesta automatizada

Rareza: Común Dificultad: Difícil


Optimización de Costes

9. ¿Cómo optimiza los costes entre múltiples proveedores de nube?

Respuesta: Estrategias de optimización de costes multi-nube:

1. Colocación de Cargas de Trabajo:

  • Analizar modelos de precios
  • Considerar los costes de transferencia de datos
  • Aprovechar las diferencias de precios regionales

2. Capacidad Reservada:

  • Instancias Reservadas de AWS
  • Instancias de VM Reservadas de Azure
  • Descuentos por Uso Comprometido de GCP

3. Instancias Spot/Preemptibles:

# Herramienta de comparación de costes
def calculate_cost(provider, instance_type, hours):
    pricing = {
        'aws': {'on_demand': 0.10, 'spot': 0.03, 'reserved': 0.06},
        'gcp': {'on_demand': 0.095, 'preemptible': 0.028, 'committed': 0.057},
        'azure': {'on_demand': 0.105, 'spot': 0.032, 'reserved': 0.063}
    }
    
    return {
        'on_demand': pricing[provider]['on_demand'] * hours,
        'spot': pricing[provider]['spot'] * hours,
        'reserved': pricing[provider]['reserved'] * hours
    }

4. Monitorización y Gobernanza:

  • Paneles de control de costes unificados
  • Alertas de presupuesto
  • Asignación de costes basada en etiquetas
  • Limpieza automatizada de recursos

5. Optimización de la Arquitectura:

  • Serverless para cargas de trabajo variables
  • Políticas de auto-escalado
  • Niveles de almacenamiento
  • CDN para contenido estático

Rareza: Muy Común Dificultad: Media-Difícil


Conclusión

Las entrevistas de Arquitecto de la Nube requieren pensamiento estratégico y profunda experiencia técnica. Céntrese en:

  1. Multi-Nube: Estrategia, desafíos, distribución de cargas de trabajo
  2. Migración: Las 6 R, fases de migración, mitigación de riesgos
  3. Microservicios: Patrones de diseño, comunicación, gestión de datos
  4. Malla de Servicio: Gestión del tráfico, seguridad, observabilidad
  5. Patrones de Diseño: Circuit breaker, saga, CQRS
  6. Dirigida por Eventos: Event sourcing, colas de mensajes, comunicación asíncrona
  7. Recuperación ante Desastres: RTO/RPO, estrategias de failover, pruebas
  8. Seguridad: Confianza cero, cifrado, cumplimiento
  9. Optimización de Costes: Precios multi-nube, capacidad reservada, monitorización

Demuestre experiencia real con arquitecturas a escala empresarial y toma de decisiones estratégicas. ¡Buena suerte!

Newsletter subscription

Consejos de carrera semanales que realmente funcionan

Recibe las últimas ideas directamente en tu bandeja de entrada

Decorative doodle

Deja de Postularte. Comienza a Ser Contratado.

Transforma tu currículum en un imán de entrevistas con optimización impulsada por IA confiada por buscadores de empleo en todo el mundo.

Comienza gratis

Compartir esta publicación

Reduce el Tiempo de Escritura de tu Currículum en un 90%

El buscador de empleo promedio pasa más de 3 horas formateando un currículum. Nuestra IA lo hace en menos de 15 minutos, llevándote a la fase de solicitud 12 veces más rápido.