Patrón de Microservicios en Arquitectura de Software
Clase 19 de 43 • Curso Profesional de Arquitectura de Software
Contenido del curso
- 2

Atributos de Calidad en Sistemas: Definición y Medición
01:49 - 3

Idoneidad Funcional: Completitud, Exactitud y Pertinencia
02:52 - 4

Eficiencia de Ejecución en Sistemas Informáticos
04:14 - 5

Compatibilidad en Sistemas: Interoperabilidad y Coexistencia
03:49 - 6

Subcaracterísticas de Usabilidad en Desarrollo de Software
08:14 - 7

Confiabilidad de Sistemas: Madurez, Disponibilidad, Resiliencia y Recuperación
05:38 - 8

Seguridad de Usuarios en Desarrollo de Software
04:01 - 9

Subcaracterísticas de Mantenibilidad en Sistemas de Software
06:28 - 10

Medición de Adaptabilidad en Sistemas de Software
02:48 - 11

Relación y Tensión entre Atributos de Calidad en Sistemas de Software
04:04 - 12

Atributos de Calidad en Arquitectura de Software
07:00
- 13

Patrones de Arquitectura Monolítica y Distribuida
02:50 - 14

Modelo Vista Controlador: Separación de Responsabilidades en Aplicaciones
05:38 - 15

Arquitectura de Capas: Diseño y Comunicación entre Niveles
03:14 - 16

Patrones de Arquitectura Orientada a Eventos y Event Sourcing
06:17 - 17

Patrón de Arquitectura MicroKernel y su Implementación en IDEs
01:52 - 18

Arquitectura "Comparte Nada": Optimización y Procesamiento de Datos
02:29 - 19

Patrón de Microservicios en Arquitectura de Software
03:57 - 20

Patrón CQRS para Separación de Consultas y Comandos
03:24 - 21

Arquitectura Hexagonal: Diseño y Aplicación Práctica
04:10 - 22

Diseño Orientado al Dominio: Conceptos y Aplicaciones Prácticas
05:34 - 23

Patrones de Arquitectura para Aplicaciones Escalables y Modulares
09:22 - 24

Patrones de Arquitectura en Proyectos de Crecimiento Empresarial
07:59
- 25

Diseño de Arquitecturas a Medida: Herramientas y Estrategias
02:18 - 26

Tipos de Conectores en Arquitectura de Software
06:18 - 27

Conectores Asíncronos y Sincrónicos: Implementación y Uso Práctico
03:05 - 28

Diferencias entre Enrutadores y Difusores en Comunicación de Mensajes
01:55 - 29

Conexión de Productores y Consumidores con Colas de Mensajes
03:52 - 30

Framework de Diseño Orientado a Atributos: Escenarios y Tácticas
01:55 - 31

Tácticas para Mejorar la Disponibilidad de Sistemas
05:59 - 32

Tácticas para Mejorar la Disponibilidad del Sistema
04:10 - 33

Tácticas para Mejorar la Mantenibilidad del Software
06:16 - 34

Prevención de Efectos Dominó en Mantenibilidad de Software
12:17 - 35

Estrategias para Mejorar la Eficiencia de Ejecución en Sistemas
09:15 - 36

Tácticas de Seguridad Informática para Detectar, Resistir y Recuperarse de Ataques
09:03 - 37

Estrategias para Mejorar la Capacidad de Prueba de Software
05:14 - 38

Tácticas de Usabilidad en Diseño de Interfaces de Usuario
08:20 - 39

Validación de Arquitectura con ATAM y Métricas de Calidad
06:34 - 40

Diseño de Arquitectura para Startups y Empresas Escalables
10:30
¿Qué son los microservicios?
Los microservicios son un patrón de arquitectura que ha revolucionado el diseño de sistemas en los últimos años. Se caracterizan por descomponer un sistema grande en componentes más pequeños y distribuidos. Cada microservicio ofrece una funcionalidad específica y trabaja de manera independiente, lo que no solo facilita su mantenimiento, sino también su reutilización. Este enfoque modular permite que diferentes partes del sistema puedan ser desarrolladas y desplegadas de manera aislada y, a menudo, incluso por equipos diferentes.
¿Cómo se comunican entre sí los microservicios?
Una de las características más notables de los microservicios es su capacidad para intercomunicarse de manera eficiente. Esta comunicación puede ser directa o a través de un bus de eventos:
-
Conexión directa: un microservicio depende directamente de otro, estableciendo una relación más estrecha.
-
Bus de eventos: utiliza un sistema de publish-subscribe para desacoplar los servicios. Un microservicio puede publicar un evento en un bus, y otros pueden suscribirse y reaccionar a estos eventos sin conocerse directamente entre sí.
Ejemplo práctico en e-commerce
Imagina un sistema de e-commerce donde cada funcionalidad crítica se maneja a través de un microservicio especializado:
- Servicio de usuarios: para gestionar la información de los clientes.
- Servicio de productos: encargado del catálogo y la gestión de inventarios.
- Servicio de pagos: maneja todas las transacciones financieras.
- Servicio de logística: coordina el envío de los bienes.
Por ejemplo, tras un pago exitoso, el servicio de pagos podría publicar un evento al cual el servicio de logística respondería para iniciar el proceso de envío.
Ventajas y desafíos de los microservicios
¿Por qué considerar una arquitectura de microservicios?
Adoptar microservicios presenta varias ventajas, especialmente para empresas en crecimiento:
- Escalabilidad: permite escalar servicios específicos en función de la demanda.
- Desplegabilidad independiente: los equipos pueden desplegar actualizaciones a sus servicios sin afectar otros componentes del sistema.
- Mayor disponibilidad: al replicar servicios resulta más fácil asegurar que el sistema esté disponible en caso de fallos en un componente.
¿Cuándo evitar los microservicios?
Pese a sus beneficios, la implementación de microservicios no siempre es la solución ideal:
- Complejidad en la implementación: requiere experiencia en sistemas distribuidos, lo que puede dificultar su desarrollo con equipos pequeños o menos experimentados.
- Costos de mantenimiento: un equipo pequeño puede encontrar costoso y desafiante mantener múltiples servicios distribuidos.
Consideraciones finales
Al decidir entre microservicios y un enfoque monolítico hay que sopesar el tamaño del equipo, la experiencia, y las necesidades de escalabilidad del proyecto. Mientras que microservicios son una excelente opción para empresas que anticipan un crecimiento significativo, un monolito puede ser más manejable para un equipo pequeño iniciando un proyecto. Además, es común que las arquitecturas de microservicios se combinen con otras estrategias para definir tanto la arquitectura interna de cada servicio como las vías de comunicación entre servicios y clientes.