terminal

codeando_simple

terminal

menu

terminal

search_module

guest@codeandosimple: ~/system/search $ grep -r "" .

Press [ENTER] to execute search

Status

Engine: Ready

Database: Online

Index: V2.1.0_LATEST

bash — cat microservices-model.md
guest@codeandosimple: ~/blog/architecture $ cat microservices-model.md

Modelo de Microservicios_

// "Dividir para conquistar"

El modelo de microservicios propone construir una aplicación como un conjunto de servicios pequeños, autónomos y especializados. Cada microservicio se encarga de una funcionalidad específica, se despliega de forma independiente y comunica con los demás a través de APIs bien definidas.

# ¿De dónde viene esta idea?

La necesidad de escalar sistemas complejos, mantener equipos independientes y mejorar los tiempos de desarrollo impulsó el surgimiento de esta arquitectura. Grandes empresas como Netflix, Amazon o Spotify la adoptaron para dividir sus sistemas monolíticos en servicios distribuidos.

# Características clave

  • Descomposición por funcionalidades o dominios.

  • Cada microservicio tiene su propia base de datos (independencia de datos).

  • Se comunican vía HTTP/REST, gRPC, eventos u otros mecanismos.

  • Escalables, desplegables y versionables de forma independiente.

Modelo Microservicios

# Analogía cotidiana

Imaginá un shopping. Hay una tienda de ropa, una librería, una heladería. Cada negocio tiene su equipo, su caja, su inventario. Si una tienda cierra, el shopping sigue funcionando. Así son los microservicios: independientes pero colaborando.

# Ventajas

  • verified

    Escalabilidad Selectiva

    Permite escalar partes específicas de una app según demanda.

  • verified

    Equipos Autónomos

    Facilita el trabajo de equipos pequeños e independientes.

  • verified

    Resiliencia

    Un fallo en un servicio no afecta necesariamente a toda la aplicación.

  • verified

    Diversidad Tecnológica

    Permite usar distintos lenguajes o bases de datos por servicio.

# Desventajas

  • warning

    Complejidad Operativa

    Mayor dificultad en infraestructura, monitoreo y trazabilidad.

  • warning

    Sobrecarga de Comunicación

    Depende fuertemente de una red fiable y APIs bien diseñadas.

  • warning

    Inconsistencia de Datos

    Dificultad para mantener la integridad en bases de datos distribuidas.

# Ejemplo técnico (Arquitectura realista)

Supongamos que estamos desarrollando un sistema de e-commerce. Usamos microservicios para dividirlo en componentes independientes. A continuación, se muestra cómo podría verse esto:

  • Servicio de Catálogo: expone productos disponibles, precios, descripciones.
  • Servicio de Carrito: administra productos añadidos por el usuario antes de comprar.
  • Servicio de Pedidos: recibe pedidos desde el carrito, procesa pagos, genera confirmaciones.
  • Servicio de Usuarios: maneja autenticación, perfiles, direcciones de envío.
Comparación Monolito vs Microservicios

Ejemplo visual de una aplicación e-commerce con microservicios vs un monolito tradicional.

# Código por servicio (Node.js)

Catálogo

const express = require('express');
const app = express();

app.get('/catalogo', (req, res) => {
  res.json([ { id: 1, nombre: 'Zapatilla', precio: 10000Comp } ]);
});

app.listen(3001);

Carrito

const express = require('express');
const app = express();
app.use(express.json());

app.post('/carrito', (req, res) => {
  // Lógica de carrito
  res.status(201).send('Agregado');
});

app.listen(3002);

Pedidos

const express = require('express');
const app = express();

app.post('/pedido', (req, res) => {
  // Lógica de pedidos y pagos
  res.send('Procesado');
});

app.listen(3003);

Usuarios

const express = require('express');
const app = express();

app.get('/usuarios/:id', (req, res) => {
  res.json({ id: req.params.id, nombre: 'Juan' });
});

app.listen(3004);

# ¿Cuándo conviene usarlos?

Cuando un sistema crece mucho en funcionalidades, equipos y volumen de usuarios. También cuando necesitás escalar ciertas partes más que otras o usar tecnologías distintas en cada módulo.

# Conclusión

Los microservicios no son para todos. Son poderosos pero complejos. Si tu equipo y contexto lo permiten, ofrecen una gran ventaja a largo plazo. Pero si estás comenzando, tal vez un monolito bien hecho sea el mejor punto de partida.