Microservicios en C++: arquitectura, práctica y ejemplos de código

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción a los microservicios en C++



La arquitectura de microservicios (MSA) es uno de los enfoques dominantes para construir sistemas distribuidos modernos. Aunque C++ se asocia menos frecuentemente con microservicios que Go, Java o Python, sigue siendo indispensable para escenarios donde el rendimiento, la baja latencia y el uso eficiente de la memoria son críticos. En este artículo, analizaremos cómo construir microservicios en C++, qué frameworks y bibliotecas utilizar, y veremos ejemplos prácticos de código.



¿Por qué C++ para microservicios?

Las principales ventajas de C++ en el desarrollo de microservicios son:

  • Máximo rendimiento — C++ permite lograr un tiempo de respuesta mínimo (latency) y un alto rendimiento (throughput).
  • Control sobre los recursos — gestión manual de memoria y optimización a nivel de hardware.
  • Bibliotecas maduras — Boost, Poco, cpp-httplib, gRPC, Crow.
  • Integración con sistemas legacy — C++ se utiliza a menudo en los núcleos de sistemas de alta carga (finanzas, telecomunicaciones, juegos).


Arquitectura de un microservicio en C++



Componentes principales

Un microservicio típico en C++ incluye:

  • Servidor HTTP/REST — para recibir solicitudes (por ejemplo, usando cpp-httplib o Crow).
  • Lógica de negocio — módulos de procesamiento de datos.
  • Cliente para comunicación entre servicios — gRPC o cliente HTTP.
  • Trabajo con almacenamiento — conexión a PostgreSQL, Redis o Kafka mediante bibliotecas (libpqxx, redis-plus-plus, librdkafka).


Comunicación entre servicios

Dos protocolos principales:

  • gRPC — protocolo binario basado en Protobuf, proporciona tipado estricto y alta velocidad.
  • REST (JSON) — conveniente para APIs externas, pero más lento debido a la serialización.


Práctica: creación de un microservicio en C++



1. API REST simple con cpp-httplib

Veamos un servicio mínimo que recibe una solicitud GET y devuelve JSON. La biblioteca cpp-httplib es header-only, fácil de incluir.



// main.cpp#include <httplib.h>#include <nlohmann/json.hpp>

using json = nlohmann::json;

int main() { httplib::Server svr;

// GET /hello — devuelve JSON svr.Get("/hello", [](const httplib::Request& req, httplib::Response& res) { json response; response["message"] = "Hello from C++ microservice!"; response["status"] = "ok"; res.set_content(response.dump(), "application/json"); });

// POST /data — recibe JSON y lo procesa svr.Post("/data", [](const httplib::Request& req, httplib::Response& res) { try { auto input = json::parse(req.body); int value = input["value"]; json result; result["squared"] = value * value; res.set_content(result.dump(), "application/json"); } catch (const std::exception& e) { res.status = 400; res.set_content("{\\"error\\":\\"Invalid JSON\\"}", "application/json"); } });

std::cout << "Server started on port 8080"; svr.listen("0.0.0.0", 8080); return 0;}


Compilación (requiere nlohmann/json instalado):

g++ -std=c++17 main.cpp -o microservice -lpthread./microservice


2. Microservicio con gRPC

gRPC requiere definir el servicio en un archivo .proto. Ejemplo:



// calculator.protosyntax = "proto3";

service Calculator { rpc Add (AddRequest) returns (AddResponse);}

message AddRequest { int32 a = 1; int32 b = 2;}

Blogs

Book Recommendations