Los microservicios son una arquitectura de software que divide una aplicación en pequeños servicios independientes, cada uno con una responsabilidad específica. Estos servicios se comunican entre sí a través de APIs RESTful, lo que permite un alto grado de escalabilidad, flexibilidad y mantenimiento.
A continuación, te muestro cinco microservicios desarrollados con Python Flask, cada uno diseñado para resolver problemas específicos del mundo real. Estos ejemplos demuestran la arquitectura de microservicios aplicada a casos prácticos como autenticación, gestión de productos, comentarios, notificaciones y cálculos fiscales.
Cada microservicio opera de forma independiente en su propio puerto, implementa una responsabilidad única y puede escalarse por separado según las necesidades del negocio.
Microservicio que implementa autenticación básica usando Flask con un diccionario en memoria como base de datos simulada. Expone un endpoint POST /login que valida credenciales mediante JSON y retorna respuestas HTTP apropiadas (200 para éxito, 401 para credenciales inválidas). Ideal para prototipos que requieren autenticación simple sin configuración de base de datos compleja.
# auth_service.py
from flask import Flask, jsonify, request
app = Flask(__name__)
usuarios_db = {"javi": "pass123"}
@app.route("/login", methods=["POST"])
def login():
data = request.get_json()
usuario = data.get("usuario")
password = data.get("password")
if usuarios_db.get(usuario) == password:
return jsonify({"mensaje": "Inicio de sesión exitoso"}), 200
return jsonify({"mensaje": "Credenciales inválidas"}), 401
if __name__ == "__main__":
app.run(port=5001) Microservicio que maneja un catálogo de productos usando Flask con una lista en memoria como base de datos simulada. Expone un endpoint GET /productos que retorna todos los productos en formato JSON con ID, nombre y precio. Ideal para e-commerce básicos que necesitan mostrar inventario sin configuración de base de datos compleja.
# products_service.py
from flask import Flask, jsonify
app = Flask(__name__)
productos_db = [
{"id": 1, "nombre": "Laptop", "precio": 1200},
{"id": 2, "nombre": "Teclado mecánico", "precio": 85},
]
@app.route("/productos")
def get_productos():
return jsonify(productos_db)
if __name__ == "__main__":
app.run(port=5002) Microservicio que gestiona comentarios usando Flask con una lista en memoria para almacenamiento temporal. Expone un endpoint POST /comentarios que recibe datos JSON y los agrega a la colección, retornando confirmación con código 201. Perfecto para blogs o sistemas de reseñas que requieren funcionalidad básica de comentarios sin persistencia compleja.
# comments_service.py
from flask import Flask, jsonify, request
app = Flask(__name__)
comentarios_db = []
@app.route("/comentarios", methods=["POST"])
def add_comentario():
data = request.get_json()
comentarios_db.append(data)
return jsonify({"mensaje": "Comentario agregado"}), 201
if __name__ == "__main__":
app.run(port=5003) Microservicio que maneja notificaciones usando Flask con simulación de envío de emails. Expone un endpoint POST /notificar que recibe email y mensaje en JSON, procesa la información y simula el envío mediante print. Ideal para sistemas que requieren notificaciones básicas sin configuración real de SMTP o servicios de email externos.
# notifications_service.py
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route("/notificar", methods=["POST"])
def notificar_usuario():
data = request.get_json()
destinatario = data.get("email")
mensaje = data.get("mensaje")
# Aquí iría la lógica real para enviar el correo
print(f"Correo enviado a {destinatario}: {mensaje}")
return jsonify({"mensaje": "Notificación enviada"}), 200
if __name__ == "__main__":
app.run(port=5004) Microservicio que implementa cálculos fiscales usando Flask con parámetros de ruta dinámicos. Expone un endpoint GET /calcular-impuestos/<int:precio> que aplica una tasa fija del 15% al precio recibido y retorna tanto el precio original como el impuesto calculado en JSON. Ideal para sistemas de facturación que requieren cálculos tributarios básicos sin lógica fiscal compleja.
# tax_calculator.py
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route("/calcular-impuestos/<int:precio>")
def calcular_impuestos(precio):
impuesto = precio * 0.15
return jsonify({"precio_original": precio, "impuesto_calculado": impuesto})
if __name__ == "__main__":
app.run(port=5005)