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 read • Q2BSTUDIO Team

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.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat