La bitácora de un Ñu

GNU/Linux, software libre, programación y servidores

Introducción a la arquitectura de microservicios

Aplicaciones monolíticas

Características:

Monolitos

Los monolitos son aplicaciones desarrolladas bajo una arquitectura monolítica.

Acerca de:

Ejemplo de una aplicación monolítica:

Ejemplo de una aplicación monolítica

Una arquitectura monolitica es un buen punto para empezar una solución, posteriormente se pueden integrar microservicios, diferentes arquitecturas y patrones según las necesidades.

Desafíos

El Scale-Up se refiere a aumentar los recursos del servidor donde está alojada la aplicación.

El Scale-Out se refiere a utilizar diferentes ordenadores para distribuir la demanada de la aplicación.

Arquitectura de software y SOA

Una arquitectura de software se refiere a la relación, comunicación y estructura de los componentes en un sistema, incluye buenas prácticas y patrones comprobadas en diferentes escenarios, además nos ayudan a modelar una solución de acuerdo a nuestras necesidades.

Los servicios son aplicaciones expuestas que proveen datos o rutinas específicas para ser consumidas por otras aplicaciones, nos permiten distribuir la lógica y compartirla entre diferentes clientes.

Estándares para servicios:

SOA (Service Oriented Architecture) es una arquitectura donde se distribuye la lógica en servicios que luego son consumidos a través de interfaces. Los servicios normalmente están relacionados en unidades de negocios o áreas de una compañía y por su complejidad se necesita de un software orquestador (integra servicios de diversas fuentes) o administrador de servicios.

Ejemplo de una aplicación SOA:

Ejemplo de una arquitectura SOA

Un administrador de servicios es costoso.

Microservicios es una interpretación moderna de SOA.

Microservicios

Es una arquitectura orientada a servicios y a la nube que busca descomponer una aplicación en diferentes servicios para obtener alta disponibilidad, bajo acoplamiento (dependencia), descentralización y tolerancia a fallos.

Es una arquitectura ideal para escenarios de alto tráfico (volumen de datos), alta demanda (número de peticiones) y alta disponibilidad.

Cada microservicio pude estar construido en un lenguaje y tecnología diferente.

Ejemplo de una aplicación con microservicios:

Ejemplo de microservicios

La aplicación se divide por servicios o responsabilidades, y cada servicio cuenta con su propia base de datos.

Los microservicios resuelven los problemas a gran escala que presentan las aplicaciones monolíticas y dividen problemas complejos de gran magnitud en problemas pequeños.

Reglas de diseño de un Microservicio

Ventajas de los Microservicios

Desafíos de los Microservicios

Microservicios y DevOps

Algunas herramientas que ayudan a desplegar microservicios:

Opciones y estrategias de despliegue

Máquinas Virtuales:

Servicios para APIs:

Serverless:

Contenedores:

Podemos combinar diferentes estrategias para crear y desplegar Microservicios de acuerdo a nuestras necesidades.

Estrategias de diseño en Microservicios

Arquitectura Hexagonal

Ejemplo de un arquitectura hexagonal:

Ejemplo de un arquitectura hexagonal

MicroApps

Ejemplo de MicroApps:

Ejemplo de MicroApps

Separación de roles

Microservicios por núcleo de negocio

Ejemplo de microservicios por núcleo de negocio:

Ejemplo de microservicios por núcleo de negocio

Microservicios por flujos de trabajo

Ejemplo de microservicios por flujos de trabajo:

Ejemplo de microservicios por flujos de trabajo

Patrones en Microservicios

Los patrones son una guía para solucionar problemas o retos conocidos.

Ambassador - Embajador

Ejemplo de un patrón embajador:

Ejemplo de un patrón embajador

Materialized View - Vista Materializada

Ejemplo de un patrón por vista materializada

Event sourcing

Ejemplo de un patrón por eventos:

Ejemplo de un patrón por eventos

Otros patrones

Patrón API Gateway

Ejemplo de un patrón por API Gateway:

Ejemplo de un patrón por API Gateway

Patrón Saga

Ejemplo de un patrón por Saga:

Ejemplo de un patrón por Saga

Referencias