Microservicios con Python

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.

  Algunas Ventajas

  • Desacoplamiento: Cada microservicio es independiente y se puede desarrollar, probar y desplegar de forma aislada. Esto facilita la escalabilidad y el mantenimiento de la aplicación.
  • Flexibilidad: Puedes utilizar diferentes tecnologías y lenguajes de programación para cada microservicio, lo que te permite adoptar tecnologías emergentes cuando sea necesario.
  • Escalabilidad: Puedes escalar individualmente cada microservicio para manejar la carga de tráfico, lo que garantiza una mejor experiencia de usuario.

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.

  Nota

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.

1Microservicio de Autenticación de Usuarios

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.

python
# 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)
2Microservicio de Productos de una Tienda

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.

python
# 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)
3Microservicio de Gestión de Comentarios

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.

python
# 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)
4Microservicio de Notificaciones por Correo Electrónico

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.

python
# 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)
5Microservicio de Calculadora de Impuestos

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.

python
# 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)