Proyecto educativo de DevOps creado por roxsross para aprender conceptos fundamentales de desarrollo, contenedores, orquestación y monitoreo. ℹ️ Este repositorio parte del Docker Example Voting App y ha sido mejorado y adaptado por roxsross para el desafío 90 Días de DevOps.
Porque aprender DevOps no tiene por qué ser aburrido ni costoso.
En este desafío vas a construir, romper y mejorar una app real... ¡con tus propias manos!
Con cada semana vas a aprender algo nuevo, y lo más importante: vas a aplicarlo al instante.
📢 "Si no lo deployás, no lo aprendiste." — Roxs
📦 Aplicación Principal | 📋 Resultados | 📊 🏠 Grafana Home | 🐳 Docker Containers |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
Sistema de Votación | Web Resultados | Dash Grafana | Contenedores onfire |
Este repositorio incluye el código base de una aplicación distribuida, compuesta por tres servicios:
- Vote : Servicio en Flask que permite votar (🐱 o 🐶) y publica los votos en Redis.
- Worker : Servicio Node.js que consume votos desde Redis y los guarda en PostgreSQL.
- Result : App Node.js que muestra los resultados en tiempo real usando WebSockets.
Servicio | Lenguaje/Framework | Versión recomendada |
---|---|---|
Vote | Flask (Python) | Python 3.13+, Flask 3.3+ |
Worker | Node.js | Node.js 20.x+ |
Result | Node.js | Node.js 20.x+ |
Redis | Redis | Redis 6.x+ |
PostgreSQL | PostgreSQL | PostgreSQL 15.x+ |
⚠️ Usar versiones iguales o superiores a las recomendadas asegura compatibilidad y soporte con las dependencias del proyecto.
A lo largo del programa, vos vas a encargarte de:
✅ Crear tus propios archivos docker-compose.yml
✅ Automatizar la configuración con Ansible
✅ Desplegar todo en local usando Terraform Provider Local
✅ Crear pipelines CI/CD con GitHub Actions
✅ Orquestar la app en Kubernetes
✅ Monitorear con Prometheus y Grafana
✅ (Opcional) Llevarlo a AWS
.
├── vote/ # Flask app (app.py)
├── worker/ # Worker Node.js (main.js)
├── result/ # Resultados en tiempo real (main.js)
├── views/ # HTML y frontend
├── load-testing/ # Pruebas de Carga y rendimiento con k6
├── README.md # Este archivo ;)
⚠️ No se incluyen archivos de Docker, Terraform o CI/CD. Vos los vas a construir paso a paso como parte del desafío.
Semana | Tema Clave | Proyecto a construir |
---|---|---|
1 | Linux + Vagrant + Ansible | Levantar app sin Docker usando Vagrant |
2 | Docker y Docker Compose | Crear los Dockerfiles y docker-compose.yml |
3 | GitHub Actions CI/CD | Automatizar builds con self-hosted runner |
4 | Terraform (Provider Local) | Crear infraestructura local con Terraform |
5 | Kubernetes local con Minikube | Desplegar app dockerizada en clúster local |
6 | Despliegue con CI/CD a Kubernetes | Automatizar despliegues en k8s |
7 | Seguridad en Contenedores | Integrar herramientas de vulnerabilidades |
8 | Troubleshooting + Performance | Debug y tuning de recursos |
9 | Despliegue en la Nube (EC2/EKS - Opcional) | Llevar tu app a AWS |
Cloná el repo y seguí el material semanal en el sitio del programa.
git clone https://github.com/roxsross/roxs-devops-project90.git
cd roxs-devops-project90
El código está listo para que lo personalices, dockerices y automatices.
Todos los servicios están instrumentados con Prometheus. Podrás visualizar las métricas que vos mismo vas a recolectar y graficar con Grafana a partir de la semana 6.
Aprender DevOps puede parecer abrumador. Hay muchas herramientas, conceptos nuevos, y cientos de tutoriales que te dicen por dónde empezar… pero ninguno te lleva de la mano a construir algo real desde cero.
Este programa no es teoría vacía. Vas a construir una app real, como lo harías en un equipo profesional. Acá vas a equivocarte, arreglar, automatizar, monitorear y desplegar. Y cuando termines, vas a poder decir con orgullo: yo hice esto 💥
🧠 "DevOps no se aprende en un curso, se aprende en la práctica. Y este es tu campo de juego."
Herramienta | Documentación Oficial | Recurso Recomendado |
---|---|---|
Docker | https://docs.docker.com/ | Docker Workshop |
Ansible | https://docs.ansible.com/ | Ansible para principiantes |
Terraform | https://developer.hashicorp.com/terraform/ | Guía de Terraform en español |
Kubernetes | https://kubernetes.io/docs/home/ | Kubernetes The Hard Way (by Kelsey Hightower) |
GitHub Actions | https://docs.github.com/actions | Curso Gratuito GitHub Actions |
Prometheus | https://prometheus.io/docs/introduction/overview/ | Observabilidad |
Grafana | https://grafana.com/docs/ | Dashboards y Alertas con Grafana |
PostgreSQL | https://www.postgresql.org/docs/ | PostgreSQL Tutorial |
Redis | https://redis.io/docs/ | Aprendé Redis |
🛠️ Tip: Agregá estos links como favoritos, los vas a necesitar cuando te enfrentes a errores reales 😉
✔️ 1. Entender Linux y la terminal
✔️ 2. Automatizar entornos con Vagrant y Ansible
✔️ 3. Construir imágenes con Docker
✔️ 4. Orquestar servicios con Docker Compose
✔️ 5. Crear pipelines con GitHub Actions
✔️ 6. Definir infraestructura con Terraform
✔️ 7. Desplegar en Kubernetes (local)
✔️ 8. Agregar métricas con Prometheus y Grafana
✔️ 9. Aprender troubleshooting y performance
✔️ 🔥 BONUS: Subir tu proyecto a la nube (AWS)
Roadmap que recomiendo seguir DevOps
Tener un portfolio técnico completo y práctico, demostrando tus conocimientos en cada área del ciclo de vida DevOps.
Este proyecto está licenciado bajo MIT License - ver el archivo LICENSE para detalles.
roxsross - Instructor DevOps y Cloud
- 🐦 Twitter: @roxsross
- 🔗 LinkedIn: roxsross
- ☕ Ko-fi roxsross
▶️ Youtube 295devops- 📧 Email: [email protected]
💡 Si querés sumar este desafío a tu portfolio o como parte de tu onboarding, ¡hacelo con orgullo! 💥