Skip to content

Instantly share code, notes, and snippets.

@roxsross
Created December 24, 2025 18:34
Show Gist options
  • Select an option

  • Save roxsross/f653ecbd6839540759d2c6c4ed6a0569 to your computer and use it in GitHub Desktop.

Select an option

Save roxsross/f653ecbd6839540759d2c6c4ed6a0569 to your computer and use it in GitHub Desktop.
Prueba Técnica - Roxs.dev 🚀

🚀 Desafío Técnico - DevOps & Cloud Infrastructure

📋 Descripción General

Este desafío técnico evalúa tus habilidades en arquitectura cloud, containerización y CI/CD a través de tres pruebas prácticas que simulan escenarios reales de producción en entornos empresariales.

Tiempo estimado: 5-7 días


🎯 Prueba 1 - Diagrama de Arquitectura de Red

Objetivo

Diseñar una arquitectura de red completa para una aplicación web moderna desplegada en AWS o GCP.

Requisitos de la Aplicación

La aplicación debe soportar:

  • Cargas variables con auto-scaling
  • Alta Disponibilidad (HA) - Multi-AZ o Multi-Region
  • 🎨 Frontend en JavaScript (React, Vue, Angular, etc.)
  • ⚙️ Backend con:
    • Base de datos relacional (PostgreSQL, MySQL, etc.)
    • Base de datos no relacional (MongoDB, DynamoDB, etc.)
  • 🔌 Consumo de 2 microservicios externos (APIs de terceros)

Criterios de Diseño

El diagrama debe:

  • Hacer el mejor uso de soluciones distribuidas
  • Implementar mejores prácticas de seguridad (redes privadas, bastión hosts, security groups)
  • Incluir balanceadores de carga
  • Considerar CDN para contenido estático
  • Implementar estrategias de backup y recuperación
  • Mostrar zonas de disponibilidad y subnets

Entregables

  1. Diagrama de Red

    • Formato: Lucidchart, Draw.io, Cloudcraft o similar
    • Debe mostrar claramente todos los componentes y sus conexiones
    • Incluir flujos de tráfico y comunicación entre servicios
  2. Documento Descriptivo (½ a 1 página)

    • Justificación de las decisiones arquitectónicas
    • Explicación de cómo se logra alta disponibilidad
    • Estrategia de escalabilidad
    • Consideraciones de seguridad
    • Estimación aproximada de costos (opcional)

🐳 Prueba 2 - Deployment Dockerizado

Objetivo

Elaborar el deployment completamente dockerizado de la aplicación AWS Retail Store Sample App.

Repositorio de la aplicación:
https://github.com/aws-containers/retail-store-sample-app

Descripción de la Aplicación

La AWS Retail Store es una aplicación de ejemplo que simula una tienda online con arquitectura de microservicios:

Componente Tecnología Descripción
UI Java (Spring Boot) Interfaz web de la tienda
Catalog Go API del catálogo de productos
Cart Java (Spring Boot) API de carritos de compra
Orders Java (Spring Boot) API de gestión de órdenes
Checkout Node.js Orquestación del proceso de pago
Assets Nginx Servidor de archivos estáticos

Requisitos Técnicos

  1. Todos los servicios en un solo docker-compose

    • Debe incluir todas las dependencias (bases de datos, cache, etc.)
    • Debe poder levantarse con un solo comando
    • Networking apropiado entre contenedores
  2. Dockerfiles pertinentes

    • Un Dockerfile por cada componente
    • Optimizados con multi-stage builds
    • Imágenes lo más ligeras posible
    • Health checks configurados
  3. Justificación de la estrategia de deployment

    • Explicar por qué se eligió docker-compose vs otras opciones
    • Comparar con alternativas: Kubernetes, Docker Swarm, supervisor, systemd, etc.
    • Ventajas y desventajas de la solución propuesta

Entregables

Repositorio Git (GitHub, GitLab o Bitbucket) que contenga:

  1. Código de la aplicación (puede ser fork del repositorio original)

  2. Dockerfiles para cada servicio

  3. docker-compose.yml completo y funcional

  4. README.md con instrucciones detalladas para:

    • Compilar la aplicación
    • Desplegar en PC local (Linux/Mac/Windows)
    • Desplegar en la nube (AWS o GCP)
    • Variables de entorno necesarias
    • Prerequisitos y dependencias
    • Troubleshooting común
  5. Documentación adicional (opcional pero recomendado):

    • Diagrama de arquitectura del deployment
    • Scripts de automatización
    • Configuraciones de infraestructura (Terraform, CloudFormation)

Criterios de Evaluación

  • ✅ Completitud: todos los servicios funcionando
  • 🚀 Facilidad de uso: simplicidad del proceso de deployment
  • 📚 Calidad de documentación
  • 🔧 Optimización de imágenes Docker
  • 🔒 Manejo de secrets y configuraciones
  • 🏗️ Arquitectura del deployment

🔄 Prueba 3 - Pipeline CI/CD

Objetivo

Elaborar un pipeline de CI/CD completo que automatice el build y deployment de un contenedor Nginx.

Aplicación Base

Dockerizar un Nginx con el index.html por defecto.

Comportamiento Esperado

El pipeline debe activarse automáticamente ante cada cambio realizado sobre el index.html y:

  1. Validar el código (linting, tests básicos)
  2. Construir la nueva imagen Docker
  3. Etiquetar la imagen apropiadamente (versioning)
  4. Ejecutar security scans
  5. Publicar la imagen en un registry (Docker Hub, ECR, GCR)
  6. Actualizar la aplicación en la plataforma elegida
  7. Verificar el deployment

Plataformas Permitidas

CI/CD:

  • GitLab CI/CD
  • GitHub Actions
  • CircleCI
  • Bitbucket Pipelines
  • Jenkins
  • Otra de tu elección

Deployment Target:

  • Docker Compose
  • Kubernetes
  • Docker Swarm
  • AWS ECS/Fargate
  • GCP Cloud Run
  • Azure Container Instances
  • Otra plataforma de contenedores

Requisitos del Pipeline

Obligatorios:

  • ✅ Automatización completa (trigger en push)
  • ✅ Build de imagen Docker
  • ✅ Versionado de imágenes
  • ✅ Push a registry
  • ✅ Deployment automatizado
  • ✅ Zero-downtime deployment

Deseables:

  • 🔒 Security scanning (Trivy, Snyk, etc.)
  • 🧪 Tests automatizados
  • 📊 Health checks post-deployment
  • 🔔 Notificaciones (Slack, Email)
  • ⏮️ Rollback automático en caso de fallo
  • 🎯 Deploy a múltiples ambientes (dev, staging, prod)

Entregables

Repositorio Git que incluya:

  1. Código fuente

    • index.html
    • Dockerfile
    • Configuración de Nginx (si aplica)
  2. Configuración del Pipeline

    • .gitlab-ci.yml o .github/workflows/*.yml o equivalente
    • Scripts de deployment
    • Scripts de testing/validación
  3. Infrastructure as Code (opcional)

    • Manifiestos de Kubernetes
    • Configuración de Terraform
    • CloudFormation templates
    • Helm charts
  4. README.md detallado que explique:

    • Arquitectura del pipeline
    • Cómo funciona cada stage
    • Variables de entorno y secrets necesarios
    • Cómo replicar el setup
    • Estrategia de deployment elegida
    • Diagrama de flujo del CI/CD

Demostración

Debes poder demostrar:

  • El pipeline ejecutándose automáticamente
  • Un cambio en index.html siendo desplegado
  • La aplicación actualizada corriendo
  • Rollback en caso de fallo (opcional)

✅ Criterios Generales de Evaluación

Aspectos Técnicos (60%)

  • 🏗️ Arquitectura: Diseño escalable y mantenible
  • 💻 Código: Calidad, organización y buenas prácticas
  • 🔒 Seguridad: Manejo de secrets, principio de mínimo privilegio
  • 🚀 Automatización: Nivel de automatización alcanzado
  • 📦 Containerización: Optimización de imágenes y configuraciones

DevOps Practices (25%)

  • 🔄 CI/CD: Robustez y completitud del pipeline
  • 📊 Observabilidad: Logging, monitoring, health checks
  • 🎯 IaC: Uso de Infrastructure as Code
  • 🧪 Testing: Estrategia de pruebas automatizadas

Documentación y Comunicación (15%)

  • 📚 Claridad: Documentación clara y completa
  • 🎨 Presentación: Profesionalismo en la entrega
  • 💡 Justificación: Explicación de decisiones técnicas
  • 🔍 Atención al detalle: Completitud de las soluciones

🎁 Puntos Extra (Bonus)

Los siguientes elementos no son obligatorios pero serán valorados positivamente:

  • 🔐 GitOps: Implementación con ArgoCD o Flux
  • 🌍 Multi-region: Deployment en múltiples regiones
  • 📊 Observabilidad avanzada: Dashboards de Grafana, Datadog, etc.
  • 🧪 Testing avanzado: Load testing, chaos engineering
  • 💰 Cost optimization: Análisis y optimización de costos
  • 🏆 Managed services: Uso inteligente de servicios cloud managed
  • 🔄 Disaster Recovery: Plan de recuperación ante desastres
  • 📱 Monitoring: Alertas y métricas configuradas
  • 🎯 Advanced deployment: Blue/Green, Canary deployments

📝 Formato de Entrega

Repositorios Git

  • Prueba 1: Puede ser un repositorio con el diagrama y documento, o links a Lucidchart/Draw.io
  • Prueba 2: Repositorio completo con código y documentación
  • Prueba 3: Repositorio completo con pipeline funcional

Requisitos de los Repositorios

  • ✅ README.md profesional y completo
  • ✅ Commits descriptivos y organizados
  • ✅ .gitignore apropiado
  • ✅ Branching strategy clara (opcional)
  • ✅ Sin secretos ni credenciales

Presentación (Opcional)

Si se requiere presentación:

  • 10-15 minutos explicando las soluciones
  • Demo en vivo de deployments
  • Q&A técnico

⚡ Consejos

  1. Lee todo el desafío primero antes de comenzar
  2. Empieza simple: MVP primero, luego itera
  3. Documenta mientras trabajas: No dejes la documentación para el final
  4. Testea continuamente: Valida cada componente antes de avanzar
  5. Pregunta si tienes dudas: Es mejor preguntar que asumir incorrectamente
  6. Gestiona tu tiempo: No busques la perfección, busca funcionalidad
  7. Backup frecuente: Commitea y pushea regularmente

📚 Recursos Útiles


❓ Preguntas Frecuentes

P: ¿Puedo usar herramientas que no están mencionadas?
R: Sí, puedes usar cualquier herramienta que consideres apropiada, pero debes justificar tu elección.

P: ¿Necesito desplegar realmente en la nube o puede ser todo local?
R: Para la Prueba 2, debes proporcionar instrucciones para ambos casos (local Y cloud), pero el deployment real puede ser solo local si no tienes acceso a cloud.

P: ¿Cuánto tiempo tengo?
R: El tiempo recomendado es 5-7 días, pero puede variar según las indicaciones específicas.

P: ¿Puedo usar soluciones existentes o templates?
R: Puedes usar templates como base, pero debes demostrar que entiendes lo que estás implementando y adaptarlo a los requisitos específicos.

P: ¿Es necesario hacer las tres pruebas?
R: Sí, las tres pruebas son obligatorias salvo indicación contraria.


📧 Contacto

Para consultas o aclaraciones sobre el desafío, contactar a: [roxs.dev]


¡Buena suerte! 🚀

Este desafío está diseñado para evaluar habilidades reales de DevOps/SRE utilizadas en entornos de producción modernos.


Versión: 1.0
Última actualización: Diciembre 2025

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment