Arquitectura de microservicios para niños
La arquitectura de microservicios es una forma especial de construir programas de computadora. Imagina que quieres crear una aplicación muy grande, como una red social o una tienda en línea. En lugar de hacerla como una sola pieza gigante, la arquitectura de microservicios la divide en muchas partes más pequeñas e independientes.
Cada una de estas partes, llamadas "servicios", es como un pequeño programa que hace una tarea específica. Por ejemplo, un servicio podría encargarse de los usuarios, otro de los productos, y otro de los pagos. Estos servicios funcionan por separado, pero pueden comunicarse entre sí para que la aplicación funcione como un todo. Se comunican usando mensajes sencillos, como si hablaran por teléfono.
Esta forma de trabajar es como construir un edificio con muchos bloques de Lego pequeños en lugar de una sola pieza enorme. Si un bloque necesita un cambio o se rompe, puedes arreglar o reemplazar solo ese bloque sin afectar el resto del edificio.
Contenido
- ¿Cómo funcionan los microservicios?
- Los componentes son servicios independientes
- Organizados por funciones de negocio
- Son productos, no proyectos
- Comunicación sencilla entre servicios
- Libertad para usar diferentes tecnologías
- Gestión de datos descentralizada
- Diseño que tolera fallos
- Automatización de la infraestructura
- Diseño que permite evolucionar
- ¿Cómo se comunican los servicios?
- Véase también
¿Cómo funcionan los microservicios?
Aunque no todas las aplicaciones que usan microservicios son exactamente iguales, la mayoría comparten estas características:
Los componentes son servicios independientes
En esta arquitectura, las partes principales del programa son servicios. Cada servicio es una unidad de software que puede ser cambiada o actualizada sin afectar a los demás. Piensa en ellos como pequeños robots que tienen una tarea específica y se comunican entre sí para lograr un objetivo mayor. No usan llamadas directas como si estuvieran en el mismo cerebro, sino que se envían mensajes.
Organizados por funciones de negocio
Los microservicios se organizan según las tareas que la aplicación debe hacer. Por ejemplo, si tienes una tienda en línea, podrías tener un servicio para "gestionar clientes", otro para "mostrar productos" y otro para "procesar pedidos". Cada servicio se encarga de todo lo relacionado con su tarea, desde cómo se ve en la pantalla hasta cómo guarda la información.
Son productos, no proyectos
En este enfoque, un equipo de programadores se encarga de un servicio desde que se piensa hasta que se usa y se mantiene. Es como si fueran los "dueños" de ese servicio. Esto ayuda a que el software mejore continuamente, pensando siempre en cómo puede ayudar mejor a los usuarios.
Comunicación sencilla entre servicios
Las aplicaciones con microservicios buscan que cada parte sea lo más independiente posible. Los servicios tienen su propia lógica y actúan como "filtros": reciben una solicitud, hacen su trabajo y envían una respuesta. Se coordinan usando protocolos simples, como el que usa tu navegador para ver páginas web (HTTP).
Libertad para usar diferentes tecnologías
Una gran ventaja es que cada servicio puede usar el lenguaje de programación o la base de datos que mejor se adapte a su tarea. Si una parte necesita ser muy rápida, puede usar una tecnología especial para eso. Si otra parte necesita guardar mucha información de un tipo específico, puede usar una base de datos diferente. Esto permite elegir la herramienta perfecta para cada trabajo.
Gestión de datos descentralizada
Los microservicios prefieren que cada servicio tenga su propia base de datos. Esto significa que no hay una única base de datos gigante para toda la aplicación. Por ejemplo, un servicio podría usar una base de datos para guardar información de usuarios, y otro servicio podría usar una diferente para guardar los productos. Esto hace que los servicios sean más independientes.
Diseño que tolera fallos
Las aplicaciones deben estar diseñadas para seguir funcionando incluso si uno de sus servicios falla. Si un servicio deja de responder, el resto de la aplicación debe poder manejarlo sin colapsar. Algunas técnicas para esto son:
- Tiempos de espera: Si un servicio tarda mucho en responder, el sistema deja de esperar y asume que falló.
- Reintentos: Si una operación falla, se puede intentar de nuevo.
- Disyuntores: Funcionan como los interruptores automáticos de tu casa. Si un servicio empieza a fallar mucho, el "disyuntor" se "abre" para evitar que ese fallo afecte a todo el sistema. Después de un tiempo, intenta conectarse de nuevo.
- Compartimentos estancos: Se crean varias copias de los servicios para que, si una falla, las otras sigan funcionando.
Automatización de la infraestructura
Para que los microservicios funcionen bien, es importante que muchos procesos estén automatizados. Esto incluye desde probar el código hasta desplegar los servicios. Es como tener una fábrica donde las máquinas hacen la mayor parte del trabajo.
Diseño que permite evolucionar
Los microservicios están diseñados para que cada uno pueda ser reemplazado o actualizado fácilmente sin afectar a los demás. Esto permite que la aplicación crezca y cambie con el tiempo de forma sencilla.
¿Cómo se comunican los servicios?
Cuando una tarea compleja necesita que varios servicios trabajen juntos, hay dos formas principales de coordinarlos:
Orquestación
Imagina un director de orquesta que le dice a cada músico cuándo tocar. En la orquestación, hay un servicio principal que controla y dirige a los demás servicios, diciéndoles qué hacer y en qué orden. El problema es que este servicio principal puede volverse demasiado grande y complejo.
Coreografía
Piensa en un grupo de bailarines que saben sus pasos y reaccionan a los demás sin que nadie les diga qué hacer en cada momento. En la coreografía, cada servicio sabe su parte y se comunica con los demás cuando es necesario, sin un "director" central. Esto hace que el sistema sea más flexible.
Ejemplo de comunicación
Imaginemos que cuando un nuevo cliente se registra en una tienda en línea, deben pasar varias cosas:
- Recibir puntos de bienvenida.
- Recibir un paquete de bienvenida por correo.
- Recibir un correo electrónico de bienvenida.
Con la orquestación, el servicio de "clientes" sería el que controla todo. Cuando se crea un cliente, este servicio le diría al servicio de "puntos", al servicio de "correo postal" y al servicio de "correo electrónico" que hagan su parte. El servicio de "clientes" sabría si todo salió bien.
Con la coreografía, el servicio de "clientes" simplemente enviaría un mensaje diciendo "¡Nuevo cliente creado!". Los servicios de "puntos", "correo postal" y "correo electrónico" estarían "escuchando" ese mensaje y, al recibirlo, cada uno haría su trabajo por su cuenta. Si otro servicio necesita saber sobre nuevos clientes, solo tiene que "escuchar" el mismo mensaje. Este método es más flexible, pero requiere un sistema para verificar que todas las tareas se completaron correctamente.
En resumen, los sistemas que usan coreografía son más flexibles y fáciles de cambiar, pero necesitan un buen sistema para monitorear que todo funcione como debe.
Véase también
En inglés: Microservices Facts for Kids