Microservicios en Node.js (Express)

Los microservicios son pequeños servicios individuales que se ejecutan en su propio proceso y se comunican entre sí a través de APIs. Cada microservicio se encarga de una tarea específica y puede ser desarrollado, desplegado y escalarado de manera independiente.

  Ventajas de los Microservicios

  • Escalabilidad: Cada microservicio puede ser escalar individualmente para manejar el tráfico y la carga.
  • Mantenibilidad: Los cambios en un microservicio no afectan a los demás, lo que facilita el mantenimiento y la actualización.
  • Flexibilidad: Se pueden utilizar diferentes tecnologías y lenguajes de programación para cada microservicio, lo que permite adaptarse a las necesidades específicas de cada servicio.

Cada microservicio se ejecutará en su propio puerto y manejará una tarea específica.

A continuación, se presentan algunos ejemplos de microservicios:

1Microservicio de Perfiles de Usuario

Este microservicio maneja un objeto en memoria con perfiles de usuarios identificados por ID. Expone un endpoint GET /perfil/:id que retorna los datos del perfil solicitado en formato JSON. Es ideal para sistemas que necesitan consultar información básica de usuarios de forma rápida y eficiente.

javascript
// profiles_service.js
  const express = require('express');
  const app = express();
  const port = 4001;

  app.use(express.json());

  const perfiles = {
      "1": { nombre: "Urian", bio: "Desarrolladora web." },
      "2": { nombre: "Luis", bio: "Diseñador UX/UI." }
  };

  app.get('/perfil/:id', (req, res) => {
      const id = req.params.id;
      res.json(perfiles[id]);
  });

  app.listen(port, () => {
      console.log(`Servicio de perfiles en http://localhost:${port}`);
  });
2Microservicio de Artículos de Blog

Este microservicio gestiona un array de artículos con información básica como ID, título y autor. Expone un endpoint GET /articulos que retorna todos los artículos disponibles en formato JSON. Es perfecto para sistemas de blog que necesitan listar contenido de forma rápida sin consultas complejas a base de datos.

javascript
// articles_service.js
  const express = require('express');
  const app = express();
  const port = 4002;

  const articulos = [
      { id: 1, titulo: "Qué es un microservicio", autor: "Urian" },
      { id: 2, titulo: "Guía de Express.js", autor: "María" }
  ];

  app.get('/articulos', (req, res) => {
      res.json(articulos);
  });

  app.listen(port, () => {
      console.log(`Servicio de artículos en http://localhost:${port}`);
  });
3Microservicio de Transacciones Bancarias

Este microservicio maneja operaciones financieras básicas mediante un endpoint POST /transferir que recibe datos de origen, destino y monto. Incluye middleware para parsear JSON y registra cada transacción en consola. Es ideal para sistemas bancarios que requieren procesamiento seguro de transferencias entre cuentas.

javascript
// transactions_service.js
  const express = require('express');
  const app = express();
  const port = 4003;

  app.use(express.json());

  app.post('/transferir', (req, res) => {
      const { origen, destino, monto } = req.body;
      // Lógica para procesar la transacción
      console.log(`Transferencia de ${monto} de ${origen} a ${destino}`);
      res.status(200).json({ mensaje: "Transferencia procesada" });
  });

  app.listen(port, () => {
      console.log(`Servicio de transacciones en http://localhost:${port}`);
  });
4Microservicio de Clima Local

Este microservicio ofrece información meteorológica mediante un endpoint GET /clima/:ciudad que acepta el nombre de la ciudad como parámetro. Mantiene un objeto con datos climáticos predefinidos y retorna el estado del tiempo o “No disponible” si la ciudad no existe. Perfecto para aplicaciones que necesitan datos meteorológicos básicos sin APIs externas.

javascript
// weather_service.js
  const express = require('express');
  const app = express();
  const port = 4004;

  app.get('/clima/:ciudad', (req, res) => {
      const ciudad = req.params.ciudad;
      // Aquí se podría llamar a una API externa
      const clima = {
          "bogota": "Nublado con lluvia",
          "madrid": "Soleado",
          "buenos-aires": "Parcialmente nublado"
      };
      res.json({ ciudad: ciudad, estado: clima[ciudad.toLowerCase()] || "No disponible" });
  });

  app.listen(port, () => {
      console.log(`Servicio de clima en http://localhost:${port}`);
  });
5Microservicio de Búsqueda

Este microservicio implementa funcionalidad de búsqueda mediante un endpoint GET /buscar que acepta un parámetro de consulta q. Filtra un array de elementos predefinidos usando includes() para encontrar coincidencias parciales en los nombres. Retorna los resultados en formato JSON. Ideal para sistemas que requieren búsqueda básica sin bases de datos complejas.

javascript
// search_service.js
  const express = require('express');
  const app = express();
  const port = 4005;

  const datos = ["python", "nodejs", "flask", "express", "microservicios"];

  app.get('/buscar', (req, res) => {
      const query = req.query.q;
      const resultados = datos.filter(item => item.includes(query.toLowerCase()));
      res.json({ resultados });
  });

  app.listen(port, () => {
      console.log(`Servicio de búsqueda en http://localhost:${port}`);
  });