Despliegue de Tideman en AWS EC2 con Docker

Guía completa para desplegar Tideman, un algoritmo de votación en C++ con una interfaz Flask, en AWS EC2 con Docker, usando build multi-stage, Gunicorn y buenas prácticas de seguridad.

13 sept 2025 • 4 min de lectura • Equipo Q2BSTUDIO

Inteligencia-Artificial-

Recientemente llevé mi aplicación Tideman desde mi portátil a la nube y ponerla en producción en AWS EC2 con Docker fue más sencillo de lo que esperaba. En este artículo explico el proceso paso a paso y cómo combinar un algoritmo en C++ con una interfaz Flask en Python para obtener un despliegue eficiente y seguro.

Preparar la instancia EC2: primero lancé una instancia EC2 con Ubuntu como sistema operativo, escogiendo un tamaño pequeño elegible para free tier ya que la aplicación no es muy pesada. Tras el lanzamiento configuré el Security Group para abrir los puertos necesarios: puerto 22 para SSH y puerto 80 para HTTP. En la instancia instalé Docker y git, por ejemplo ejecutando en la terminal sudo apt-get update; sudo apt-get install -y docker.io git; y cloné el repositorio con git clone seguido de la URL del repo.

Dockerfile multi etapa: para mantener la imagen final ligera usé una build multi-stage que compila el componente C++ en una etapa y prepara el entorno Python en otra. En la primera etapa utilicé una imagen con compilador GCC y compilé my_algorithm.cpp produciendo el ejecutable my_algorithm con g++. En la segunda etapa cambié a una imagen python:3.10-slim, copié el binario compilado desde la etapa builder al contenedor final, añadí el código Flask, el archivo index.html y requirements.txt, instalé dependencias con pip install -r requirements.txt y configuré Gunicorn para servir la aplicación en el puerto 5000. El enfoque multi-stage evita llevar herramientas de compilación al contenedor final, lo que reduce tamaño y la superficie de ataque.

Ejemplo de pasos en texto plano: FROM gcc:latest AS builder; WORKDIR /app; COPY my_algorithm.cpp /app/my_algorithm.cpp; RUN g++ my_algorithm.cpp -o my_algorithm; FROM python:3.10-slim AS final; WORKDIR /app; COPY --from=builder /app/my_algorithm /app/my_algorithm; COPY app.py /app/app.py; COPY index.html /app/index.html; COPY requirements.txt /app/requirements.txt; RUN pip install -r requirements.txt; EXPOSE 5000; CMD gunicorn -b 0.0.0.0:5000 app:app.

Construir y ejecutar el contenedor: en la EC2 ejecuté sudo docker build -t myflaskcpp . para crear la imagen. Para lanzar el contenedor mapeando el puerto 80 del host al puerto 5000 del contenedor usé sudo docker run -d -p 80:5000 myflaskcpp. De este modo las peticiones al IP público de la EC2 en el puerto 80 se redirigen al servidor Flask servido por Gunicorn dentro del contenedor. Recuerda verificar que el Security Group tiene el puerto 80 abierto para tráfico entrante.

Por qué usar Gunicorn y no el servidor de desarrollo de Flask: el servidor integrado de Flask es para desarrollo, mono hilo y no está optimizado para producción. Gunicorn es un servidor WSGI de producción que permite múltiples workers y manejo concurrente de peticiones, mejorando estabilidad y rendimiento bajo carga real.

Repositorio Tideman y funcionalidades: el proyecto Tideman implementa el método Ranked Pairs para votación por orden de preferencia, con una implementación en C++17 orientada a objetos y envuelta por una API Flask y una interfaz HTML mínima para demos interactivas. Entre sus características destacan entrada CSV capaz de manejar desde miles hasta millones de votos, benchmarking de alto rendimiento con chrono, diseño modular con clases como TidemanElection y VoteParser, manejo robusto de errores y capacidad para procesar millones de votos con pocos candidatos en milisegundos. Un ejemplo de entrada CSV con 3 candidatos sería VoterID,Alice,Bob,Charlie; 1,1,2,3; 2,2,1,3; 3,1,3,2.

Buenas prácticas y recomendaciones: usar Security Groups para abrir solo los puertos necesarios; aprovechar builds multi-stage de Docker para mezclar lenguajes y mantener imágenes ligeras; mapear correctamente puertos del host y del contenedor; usar Gunicorn para producción; automatizar despliegues con pipelines y considerar balanceo y escalado según demanda.

Sobre Q2BSTUDIO: en Q2BSTUDIO somos una empresa de desarrollo de software especializada en aplicaciones a medida y software a medida, con experiencia en inteligencia artificial, ciberseguridad y servicios cloud. Ofrecemos soluciones integrales que incluyen consultoría en servicios cloud, despliegues en AWS y Azure, integración de agentes IA, y análisis con Power BI para inteligencia de negocio. Si necesitas migrar y desplegar aplicaciones en la nube podemos ayudarte con arquitectura, seguridad y optimización de costes, consulta nuestros servicios cloud en servicios cloud AWS y Azure y descubre cómo desarrollamos aplicaciones a medida que integran inteligencia artificial, ciberseguridad y herramientas de business intelligence.

Palabras clave integradas: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi. Si quieres que migrémos tu proyecto Tideman o te ayudemos a diseñar una solución a medida con despliegue en la nube, contáctanos y diseñaremos la arquitectura, la seguridad y la automatización de despliegue necesaria para tu caso.

Resumen final: desplegar una aplicación que combina C++ y Flask en AWS EC2 con Docker es posible y eficiente mediante builds multi-stage y servidores WSGI como Gunicorn. Abre los puertos adecuados, construye la imagen en la instancia, ejecuta el contenedor con el mapeo de puertos correcto y verifica el acceso desde el navegador usando la IP pública de la EC2. Con Q2BSTUDIO puedes convertir esta guía en un proyecto profesional y escalable adaptado a tus necesidades.

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

Inteligencia artificial

Agentes de IA, chatbots y asistentes inteligentes que automatizan tareas y atienden a tus clientes 24/7 para mejorar la eficiencia de tu negocio.

Más info

Desarrollo de software

Aplicaciones web, móviles y de escritorio, intranets, e-commerce, SaaS y plataformas de gestión diseñadas para las necesidades concretas de tu empresa.

Más info

Servicios cloud

Migración, infraestructura, hosting gestionado, alta disponibilidad y seguridad en Microsoft Azure y Amazon Web Services para que tu negocio escale sin límites.

Más info

Ciberseguridad y pentesting

Auditorías de seguridad, test de intrusión (pentesting) y protección de aplicaciones, datos e infraestructura on-premise y cloud, con hacking ético y cumplimiento normativo.

Más info

Business Intelligence

Cuadros de mando y análisis de datos con Power BI: integramos tus fuentes, diseñamos dashboards y KPIs y convertimos tus datos en decisiones.

Más info

Automatización de procesos

Automatizamos tareas repetitivas y conectamos tus aplicaciones con n8n, Power Automate, Make y RPA, eliminando trabajo manual y aumentando la productividad.

Más info

Formación para empresas

Formamos a tus equipos en tecnología con criterio: desarrollo web, bases de datos, Git, buenas prácticas y seguridad, automatización con n8n, inteligencia artificial para empresas y creación de soluciones de IA con Azure AI Foundry.

Más info

Auditoría de código

Auditamos el código que creas tú, tu equipo o una IA: te decimos qué está bien y qué mejorar, lo securizamos y lo dejamos listo para producción, web o app.

Más info

Generación de imágenes con IA

Creamos por ti las imágenes que necesita tu negocio con inteligencia artificial: producto, redes, publicidad, ilustración y avatares. Tú nos dices qué quieres y te lo entregamos listo para usar.

Más info

Generación de vídeos con IA

Creamos por ti vídeos con inteligencia artificial: promocionales, para redes, presentadores virtuales, doblaje y animaciones. Nos cuentas la idea y te lo entregamos montado y listo para publicar.

Más info

Avatares conversacionales con IA

Creamos avatares conversacionales con IA —humanos digitales con cara y voz— que atienden a tus clientes y equipos con el conocimiento de tu empresa, en tu web, monitores interactivos, WhatsApp o Teams.

Más info

Marketing Online e IA

Google Ads, Meta Ads, LinkedIn Ads y posicionamiento en motores de IA (GEO/AEO): captamos clientes y hacemos que tu marca aparezca donde te buscan, también en ChatGPT, Gemini y Perplexity.

Más info

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.

Live Chat