Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Cochabamba – Bolivia
2019
Tabla de contenido
DEDICATORIA ................................................................................................................................ 1
AGRADECIMIENTOS ..................................................................................................................... 1
RESUMEN ....................................................................................................................................... 2
INTRODUCCIÓN ............................................................................................................................. 2
1 GENERALIDADES ....................................................................................................................... 3
1.1. Antecedentes Generales ...................................................................................................... 3
1.2. Antecedentes Específicos .................................................................................................... 3
2 METODOLOGIA ........................................................................................................................... 4
3 ARQUITECTURA ORIENTADA A SERVICIOS Y ARQUITECTURA ORIENTADA A
MICROSERVICIOS. ........................................................................................................................ 4
3.1.- Definición de servicio........................................................................................................... 5
3.1.1.- Servicio web .................................................................................................................. 5
3.1.2.- Componentes................................................................................................................ 6
3.2.- Arquitectura orientada a servicios(SOA)............................................................................. 7
3.2.1- Lenguaje de descripción de servicios web(WSDL)..................................................... 10
3.2.2- Enterprise Service Bus(ESB) ...................................................................................... 11
3.3.- Arquitectura orientada a los Microservicios ...................................................................... 13
3.3.1- Componentes básicos en una arquitectura de microservicios. .................................. 15
3.3.2- Coreografia .................................................................................................................. 17
3.3.3.- Despliegue .................................................................................................................. 17
3.3.4.- Escalabilidad y desacoplamiento ............................................................................... 18
4 SOA vs MSOA ANALISIS COMPARATIVO .............................................................................. 19
4.1.- Introducción ....................................................................................................................... 19
4.2.- Análisis............................................................................................................................... 19
4.3.- Comparación ..................................................................................................................... 21
4.3.1.- Costo de infraestructura ............................................................................................. 21
4.3.2.- Granularidad del servicio ............................................................................................ 21
4.3.3.- Abstracción de la interfaz ........................................................................................... 22
4.3.4.- Protocolos ................................................................................................................... 22
4.3.5.- Interacción entre servicios .......................................................................................... 22
4.3.6.- Interacción fuera del servicio ...................................................................................... 22
4.3.7.- Alcance de la aplicación ............................................................................................. 23
4.3.8.- Integración .................................................................................................................. 23
4.3.9.- Rendimiento y tiempo de respuesta ........................................................................... 24
4.3.10.- Desafíos, esfuerzo y adopción de la cultura ............................................................ 24
4.3.11.- Escalabilidad y entrega continua .............................................................................. 24
4.3.12.- Orientación practica .................................................................................................. 25
4.3.13.- Procesos ................................................................................................................... 25
4.4.- Ventajas y desventajas en la arquitectura orientada a los Microservicios ....................... 26
4.5- Ventajas y desventajas de la arquitectura orientada a servicios....................................... 27
5 IMPLICACIONES Y BUENAS PRACTICAS .............................................................................. 29
5.1.1- mayor cohesión en los modelos de negocio internos del servicio.............................. 29
5.1.2- Fragmentación más explícita del modelo .................................................................... 29
5.1.3- Modelos de comportamiento menos complejos en modelos de arquitectura ............ 30
5.1.4- Diferentes controladores para la complejidad del modelo de arquitectura ................ 30
5.1.5- Modelado de integración menos complejo pero restringido ....................................... 30
5.1.6- Modelado de la operación del servicio dependiente del equipo de desarrollo........... 30
5.1.7- Modelo de gobernanza dependiente del equipo. ........................................................ 31
5.2.- Mejores practicas .............................................................................................................. 31
5.3.- Entrega rápida y Lógica del negocio ................................................................................. 31
5.4.- Un modelo de servicio para la arquitectura de diferentes velocidades ............................ 32
6 CONCLUCIONES....................................................................................................................... 35
7 Bibliografía .................................................................................................................................. 37
Tabla de Cuadros, Gráficos y Figuras
Dentro del proceso de desarrollo de software de un sistema, uno de los temas importantes a tratar
es la arquitectura de software, es la parte de la ingeniería de software que se dedica al estudio,
análisis y descripción para formalizar el esquema global de un sistema, poniendo énfasis en el
estudio de las interacciones entre sus elementos básicos, denominados componentes.
Las empresas de hoy en día se enfrentan a muchos desafíos en un entorno global orientado a
los servicios, centrado en la experiencia del cliente y orientado a la demanda de los clientes,
donde las tecnologías de información se están convirtiendo en el principal facilitador y socio de
las empresas modernas. Cada vez más las organizaciones dependen de su infraestructura de IT
para alcanzar sus objetivos, pero en un entorno competitivo como el actual, aprovechar las
oportunidades de negocio exige moverse con rapidez.
La estrategia de orientación a servicios permite a IT conseguir una mayor productividad de los
recursos de IT existentes, como pueden ser las aplicaciones y sistemas ya instalados e incluso
los más antiguos. La orientación a servicios permite además el desarrollo de una nueva
generación de aplicaciones compuestas que ofrecen capacidades avanzadas y multifuncionales
para las organizaciones con independencia de las plataformas y lenguajes de programación que
soportan los procesos.
La Arquitectura Orientada a Servicios (SOA, siglas del inglés Service Oriented Architecture) es la
estructura subyacente que permite la comunicación entre varios servicios. La SOA define la
interacción y conexión entre dos entidades, que pudieran ser simplemente el transferir datos, o
coordinar una actividad específica entre servicios. En éste proceso, las interacciones están auto
contenidas y ligeramente acopladas, y son por tanto independientes entre sí. La arquitectura más
simple para un SOA muestra un proveedor de servicios en un lado, y a un consumidor de servicios
en el otro lado, intercambiando las solicitudes y respuesta de servicios.
Desde 2014, los Microservicios han ganado una amplia atención por parte de profesionales como
arquitectos de software y desarrolladores, seguido de un aumento significativo de las actividades
de investigación a partir de 2015. Netflix una empresa comercial de entretenimiento fue una de
las pioneras que implementó la arquitectura de Microservicios. estos han ido ganando presencia
y hoy en día, se aceptan en la industria como un estilo arquitectónico establecido.
En esencia los Microservicios permiten tratar con varias plataformas y dispositivos web, móviles,
Internet de objetos, dispositivos y dispositivos de mano, vemos varios gurús, con un gran interés
por mantener vivo un debate de integración. Esta desafortunada tendencia es evidente en las
líneas del discurso actual sobre SOA y los microservicios que discuten el "mejor" estilo, con la
ideología, la moda y el interés creado que parecen vencer a la razón. En la figura 1 se puede
observar una la aplicación según estructura.
En el presente documento se realizará una análisis comparativo entre el desarrollo basado en
Modelos de la arquitectura orientada a servicios y microservicios, de los conceptos clave en torno
a SOA y Microservicios, identificando similitudes y diferencias entre ellos, disipando así la
confusión alrededor de ellos, presentando un conjunto de recomendaciones y mejoras prácticas
para la arquitectura, el diseño y el desarrollo de interfaces de programas de aplicaciones desde
la perspectiva del resultado deseados, para la administración efectiva de los componentes de
software empresarial, aprovechando los mejores conceptos y prácticas de SOA y Microservicios.
1
MONOLITICA
SOA MICROSERVICIOS
2
1 GENERALIDADES
3
FIGURA 2: Ciclo de sobreexpectación Gartner.
Fuente: (Gartner, 2002).
2 METODOLOGIA
SOA intenta integrar las diferentes aplicaciones de una empresa, favoreciendo la interacción entre
estas. La interacción entre las aplicaciones se da a través de un canal en común, en este caso el
Enterprise Service Bus (ESB), que se encarga de recibir y enviar las diferentes peticiones de
servicios, transformándolos o guardando un registro de ejecución dependiendo lo requerido. SOA
utiliza el protocolo WSDL que está basado en XML para definir todos los detalles de la estructura
de los mensajes en la comunicación cliente servidor.
La arquitectura orientada a los microservicios (MSOA), está basada en servicios que son
pequeñas aplicaciones con su propia tecnología y plataforma, estas se comunican a través de
mecanismos, cada microservicio se basa en las necesidades del negocio. la necesidad de utilizar
microservicios es debido a que estas nos proporcionan una buena escalabilidad y bajo
acoplamiento, existen diferentes tipos de implementación de acuerdo a las tecnologías que se
estén utilizando. MSOA está conformada por los componentes: Servicio de enrutamiento,
4
balanceador de carga, circuit breaker y logs centralizados, para la integración de los servicios
MSOA se basa en un estilo coreográfico.
3.1.- Definición de servicio
Según la página (Microsoft, 2019) Un servicio es una vía de intercomunicación entre uno o varios
sistemas, esta interacción de máquina a máquina se realiza a través de una red, un servicio
contiene una función de negocio auto contenida con una interfaz definida y estable, recibiendo
solicitudes y entregando respuestas a los clientes.
El proceso de un servicio se inicia cuando el cliente solicita información, enviando a veces datos
al servidor para que pueda procesar su solicitud, el servidor genera una respuesta que envía de
vuelta al cliente, adjuntando otra serie de datos que forman parte de esa respuesta. Por tanto, un
servicio se puede definir como el tráfico de mensajes entre dos máquinas. Los servicios son
desplegados una única vez y permanecen disponibles, sin consumir recursos, hasta que son
invocados.
3.1.1.- Servicio web
Un servicio web es una tecnología que utiliza un conjunto de protocolos y estándares para el
intercambio de datos entre aplicaciones. Distintas aplicaciones de software desarrolladas en
lenguajes de programación diferentes, y ejecutadas sobre cualquier plataforma, pueden utilizar
los servicios web para intercambiar datos en redes de ordenadores como Internet. La
interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones
OASIS y W3C son los comités responsables de la arquitectura y reglamentación de los servicios
Web (IBM, 2019).
Los servicios web permiten que aplicaciones web interactúen dinámicamente con otras
aplicaciones web, utilizando estándares abiertos como XML, UDDI y SOAP. Esto es posible
porque están basados en un protocolo simple y liviano para realizar las invocaciones, como
SOAP, un protocolo estándar creado por W3C, basado en XML (Gonzalez, 2009).
Los servicios web son mucho más que simplemente SOAP, éste último sólo define el protocolo
de invocación remota a los métodos, incorporan WSDL como un lenguaje basado en XML como
sistema de mensajes se utiliza XML estandarizado. El protocolo más simple para el intercambio
de información entre ordenadores es XML-RPC, que emplea XML para llevar a cabo RPCs. RPC,
Remote Procedure Call, es un protocolo de red que permite a un programa a ejecutar código en
una máquina remota. Los XML-RPC requests son una combinación entre contenido XML y
headers HTTP. La simpleza de los XML-RPC hizo que el estándar evolucionar a SOAP, uno de
los componentes básicos de los servicios Web que permite describir los contratos de cada
servicio. Este lenguaje fue desarrollado conjuntamente por Microsoft e IBM y sometido para su
aprobación como un estándar (Gonzalez, 2009).
5
FIGURA 3: Interacción de un servicio web.
Fuente: (Wikipedia, 2019).
3.1.2.- Componentes
Los componentes de un servicio web definen el objetivo del servicio web y cómo se comunica el
cliente de servicio web con el servicio web.
Un servicio web posee los siguientes componentes:
6
• Qué funciones se pueden invocar
Antes de definir el SOA, es importante aclarar una arquitectura de software puede definirse como
la estructura de estructuras del sistema, que comprende elementos de software, las propiedades
externamente visibles de esos elementos y las relaciones entre estos. En este sentido es que la
arquitectura SOA supone una estrategia general de organización de los elementos de las
tecnologías de información, de forma que los sistemas distribuidos y aplicaciones complejas se
puedan relacionar a través de una red de recursos integrados, simplificada y sumamente flexible.
(Microsoft, 2019)
SOA Service Oriented Architecture (SOA) es una arquitectura un poco antigua, haciendo sentir
su presencia a principios de la década de 2000 y alcanzando un nivel de madurez a fines de la
primera década del milenio.
El enfoque y los productos de SOA surgieron a través de la necesidad de crear una arquitectura
distribuida basada en componentes que promueva la agilidad empresarial, es decir, poder
configurar rápidamente una solución para satisfacer una necesidad comercial particular y
proporcionar cambios a la solución a medida que las necesidades empresariales evolucionan
rápidamente. Las definiciones sobre SOA son muchas y muy diversas, algunas de las primeras
son:
SOA, según (IBM, 2019): un marco de aplicación que toma las aplicaciones comerciales
diarias y las divide en funciones y procesos empresariales individuales, denominados
servicios.
8
algunas variaciones en los "bordes". Un modelo de servicio que los autores han encontrado útil
se describe a continuación.
Registro de
servicios
Consumidor de Proveedor de
Asociacion e
Servicios invocacion Servicios
Se puede resumir que SOA es un enfoque para diseñar y construir soluciones de negocio, a partir
de componentes independientes que exponen funciones como servicios accesibles por otros
componentes a través de interfaces estándares. Está compuesto por diferentes tecnologías como
se puede visualizar en el siguiente ejemplo:
9
SOA = XML+SOAP+WSDL+UDDI+Bus
Principios
Según (J, 2009) los componentes centrales de una arquitectura SOA son:
10
Para comunicarse entre sí estos servicios se basan en una definición formal independiente de la
plataforma subyacente y del lenguaje de programación.
Ciertos autores la definen como una súper abstracción, esto debido a su estructura la cual tiene
los siguientes elementos.
La infraestructura de comunicaciones, conocida como Enterprise Service Bus (ESB), debe ser la
que provee de servicios estándar, mediante los cuales se permite la publicación y la localización
de servicios. Adicionalmente, deberá ofrecer:
Independencia de lenguaje-plataforma: Debe permitir la conexión de servicios implementados
en cualquier tecnología. Al dar soporte a los métodos y mecanismos estándares para desarrollar
e interconectar aplicaciones a través de la empresa, tales como WSDL, SOAP, los ESB reducen
11
drásticamente el tiempo de implementación y el coste total de propiedad de los proyectos de
integración.
Arquitecturas dirigidas por eventos: Se basa en utilizar eventos como disparadores que inician
la distribución de un mensaje que informa a varios receptores acerca de un evento para que
realicen las acciones pertinentes. Estas arquitecturas tienen las siguientes características:
12
3.3.- Arquitectura orientada a los Microservicios
13
Una razón principal para usar los servicios como componentes (en lugar de bibliotecas) es que
los servicios se pueden implementar de forma independiente. Si se tiene una aplicación que
consta de varias bibliotecas en un solo proceso, un cambio en cualquier componente implica
volver a implementar la aplicación completa. Pero si esa aplicación se descompone en múltiples
servicios, puede esperarse que muchos cambios en el servicio solo requieren que éste se vuelva
a cargar. Eso no es absoluto, en algunos casos se tendrá que reiniciar
Otra consecuencia de usar servicios como componentes es una interfaz de componentes más
explícita. La mayoría de los lenguajes de programación no tienen un buen mecanismo para definir
una interfaz pública explícita. A menudo, solo la documentación y la disciplina impiden que los
clientes rompan la encapsulación de un componente, lo que lleva a un acoplamiento demasiado
apretado entre los componentes. Los servicios hacen que sea más fácil evitar esto utilizando
mecanismos de llamada remota explícitos
14
Un microservicio debe ser "desplegable de forma independiente" y cada microservicio tiene su
propia arquitectura de despliegue; y no comparta sus recursos como contenedores, cachés,
almacenes de datos con otros componentes de software empresarial. Por ejemplo, donde el
microservicio almacena y recupera información de una base de datos, el esquema de la base de
datos debe ser parte del microservicio. De manera similar, la escala de un microservicio es
independiente de otros microservicios; y el aumento de la capacidad de un microservicio, al mover
su objetivo alojado o al aumentar el número de instancias, no debería tener ningún impacto en
sus consumidores.
Las aplicaciones que exponen interfaces que otras aplicaciones pueden utilizar para interactuar
se definen como “interfaces de programación de aplicaciones”, y un microservicio proporciona
sus propias interfaces para las comunicaciones. Se construyen APIs de microservicio utilizando
protocolos de comunicación de Internet como HTTP y se adhiere a estándares abiertos como
REST y utiliza tecnologías de intercambio de datos como JSON (Richardson & Smith, 2016).
En una empresa, varios equipos requieren acceso para crear o mejorar funciones comunes como
la cuenta del cliente. Para fomentar una comprensión clara de un microservicio, para que puedan
reutilizarse de manera efectiva, las especificaciones deben definirse y mantenerse en un
repositorio compartido de toda la empresa de todas las especificaciones de microservicios.
Información adicional como estado, propiedad, también puede ser incluida. Las interfaces
proporcionadas por microservicios deben ser detectables: el consumidor de las interfaces debe
poder buscar, encontrar las interfaces sin tener un conocimiento explícito de la implementación o
ubicación de la tecnología subyacente.
La independencia es una característica clave de la arquitectura de microservicios. Para habilitar
esta característica, un microservicio debe tener la administración de los datos dentro de su
contexto; otro microservicio permitiría leer sus datos; sin embargo, las escrituras se realizan a
través del servicio que posee la administración de los datos. Por ejemplo, un microservicio de
cuenta de cliente es el administrador de datos para las cuentas de cliente, y otros microservicios
pueden acceder a versiones de solo lectura de los datos de la cuenta de cliente.
Un microservicio normalmente consta de tres capas como una aplicación típica de 3 niveles, que
consiste en una capa de interfaz, una capa de lógica de negocios y una capa de persistencia de
datos, pero dentro de un contexto acotado mucho más pequeño. Esto establece un amplio
alcance de las capacidades técnicas que podría poseer un microservicio. Sin embargo, no todos
los microservicios proporcionan todas las capacidades; esto variaría sobre cómo se debe
consumir la función proporcionada. Por ejemplo, un microservicio utilizado principalmente por
proveedores de API tendría una capa de interfaz de comunicaciones, lógica de negocios y capas
de persistencia de datos, pero no necesariamente interfaces de usuario (Barcia, Brown, &
Osowski, 2019).
3.3.1- Componentes básicos en una arquitectura de microservicios.
15
Edge service, Un edge service también se conoce como servicio de enrutamiento. Este
servicio permite a los clientes de una aplicación de microservicios, acceder a servicios
individuales, por un único punto de entrada. una definición más formal "un servicio de
enrutamiento es una puerta de enlace para un único punto de entrada, gestiona todas las
peticiones de los clientes, y realiza un re direccionamiento al servicio o servicios
apropiados", En la figura siguiente se muestra cómo un servicio de enrutamiento
redirecciona las peticiones de un cliente hacia un determinado servicio. Este servicio es
importante para abstraer a todos los microservicios del tráfico externo; mapear las URLs
de cada microservicio y permitir redirigir peticiones concretas a servicios concretos.
Algunas de las implementaciones de servicios de enrutamiento más utilizadas son: API
Gateway (AWS), HA-Proxy, Zuul (parte de Spring Cloud Netflix).
Balanceador de carga y registro de servicios, Un cliente, para poder realizar una
petición necesita conocer la ubicación de red (dirección IP y puerto) de la instancia del
microservicio. Esto puede resultar un problema difícil de resolver, ya que las ubicaciones
de red cambian y el conjunto de instancias de los microservicios cambian dinámicamente
(por escalamiento, fallas o actualizaciones). Precisamente, para resolver el problema
anterior, se utiliza un servicio de descubrimiento (discovery service). un servicio de
descubrimiento se define como “el responsable de determinar la ubicación de red de las
instancias de los servicios disponibles”. Algunos autores lo definen como “una base de
datos de instancias de servicios disponibles". Existen dos tipos de servicios de
descubrimiento, lo cuales se describen a continuación.
1. Descubrimiento del lado del cliente
El cliente es responsable de determinar tanto la ubicación de red de las instancias de los
servicios disponibles, así como del balance de carga de las peticiones entre ellos.
Un registro de servicios es consultado por el cliente, el cual "es una base de datos de
instancias de servicios disponibles". Luego el cliente utiliza un algoritmo de balanceo de
carga para seleccionar una instancia de servicio disponible y así poder procesar la
petición. La ubicación de red de una instancia de servicio es registrada, en el registro de
servicios cuando esta es inicializada, y removida cuando esta es finalizada. Los registros
de instancias de servicios típicamente son actualizados periódicamente.
2. Descubrimiento del lado el servidor
Para este tipo de servicio de descubrimiento, el cliente realiza una petición por medio de
un balanceador de carga. El balanceador de carga consulta el registro de servicios y re
direcciona la petición a una instancia de servicio disponible.
Circuit breaker Un circuit breaker (circuito cerrado) sirve para "degradar funcionalidad
cuando la llamada a un método falla. Esto permite a un microservicio continuar operando
cuando un servicio relacionado falla, previniendo el fallo en cascada y dando tiempo al
servicio que fallo de recuperarse". Cuando un servicio que tiene dependencias falla, se
desencadena lo que se conoce como un fallo en cascada, tal como se puede observar en
la siguiente figura.
Logs centralizados, Se definen a los logs centralizados como “una configuración global
de servidores que, escriben todos sus logs a un único archivo de registro". La
centralización de logs, puede ser de mucha utilidad cuando se trata de identificar los
problemas que ocurren en las diferentes instancias de los servicios.
Configuración centralizada, En un sistema distribuido se necesita disponer de un
componente de configuración centralizada. Esto permite asegurar que los ficheros de
16
configuración sean únicos para todas las instancias de los microservicios. Pivotal Software
Inc. Describe un servidor de configuración como "un lugar centralizado para gestionar
propiedades externas de aplicaciones alrededor de todos los ambientes". Este
componente lo que hace es tener una copia de los ficheros de configuración, los
microservicios se la piden en caliente, es decir siempre que necesitan una propiedad se
la piden a este servicio.
3.3.2- Coreografia
La coreografía es un patrón en la cual los microservicios interactúan entre sí, cada componente
conoce perfectamente su función, sabe en qué momento debe actuar y a dónde enviar sus datos
al terminar, normalmente la coreografía se basa en servicios asíncronos que pueden encolar sus
peticiones y ejecutarse independientemente.
Aplicar un patrón de coreografía significa que un servicio no habla con otro servicio para instruir
una acción. En su lugar, cada servicio está observando su entorno y actúa sobre eventos
autónomos.
Para que la integración de los microservicios sobre un patrón coreográfico funcione es necesario
que cada microservicio conozca la totalidad del proceso que va a desarrollar, además la
coreografía puede ser complicada de escalar si no se tiene un control sobre el flujo que estuviera
siguiendo, es decir es necesario un monitor que pueda controlar los eventos que se estuvieran
ejecutando.
3.3.3.- Despliegue
Cuando se piensa en la arquitectura de microservicios una cuestión importante a tener en cuenta
es su modelo de despliegue. El modelo de despliegue se refiere a el modo en el cual se va a
organizar y gestionar los despliegues de los microservicios y la tecnología que se utilizara para
lograr este fin (Xabier Larrucea & Santamaria, 2017).
Mutiples instancias de servicio por host, Este es el enfoque común para desplegar
aplicaciones de microservicios. se disponen de uno o más hosts físicos o virtuales y cada
uno corre múltiples instancias de servicios. Algunas ventajas que tiene este patrón son: el
uso eficiente de los recursos, ya que las instancias de los servicios comparten recursos;
el despliegue e inicio de una instancia de servicio es relativamente rápida. A pesar de sus
beneficios, este patrón también presenta algunas desventajas, por ejemplo, no hay
aislamiento si múltiples instancias de un servicio corren en el mismo proceso, lo cual, si
un servicio falla, puede hacer que los demás servicios fallen.
Instancia de servicio por host, Al utilizar este patrón se ejecuta cada instancia del
servicio de forma aislada en su propio host. En seguida, se describen dos tipos de
enfoques para este tipo de patrón.
Instancia de servicio por máquina virtual. Tal como su nombre lo indica, en este tipo
de patrón "se empaqueta cada servicio como una imagen de máquina virtual. Cada
instancia de servicio es una máquina virtual que es iniciado usando esa imagen de
máquina virtual". Este patrón tiene varios beneficios: cada servicio se ejecuta en completo
aislamiento; tiene recursos fijos asignados; se pueden aprovechar los beneficios de la
nube; una vez que la aplicación esta empaquetada como imagen de máquina virtual esta
17
queda encapsulada. Algunas desventajas que presenta este patrón son: menor eficiencia
en la utilización de los recursos; si se utiliza un IaaS, típicamente se cobra extra por cada
máquina virtual; la construcción, el inicio y el despliegue de la máquina virtual son lentos.
Instancia de servicio por contenedor. Para este caso, cada instancia del servicio se
ejecuta en un contenedor, lo que implica que se debe empaquetar la aplicación en una
imagen de contenedor. Usualmente se ejecutan múltiples contenedores en cada host, ya
sea físico o virtual. Los beneficios de este enfoque son similares al enfoque anterior: se
aíslan las instancias del servicio; se puede monitorear fácilmente los recursos utilizados
por cada contenedor; encapsulan la tecnología utilizada para implementar los servicios;
son una tecnología liviana; la construcción, el inicio y el despliegue del contenedor son
muy rápidos. Algunas desventajas que tiene este tipo de enfoque son: la infraestructura
para este tipo de tecnología no es tan madura; no son tan seguros como las máquinas
virtuales, ya que se comparte el kernel del sistema operativo host y esto puede ocasionar
que, si un contenedor falle, los otros contenedores también lo hagan; al igual que con el
enfoque de máquinas virtuales, si se utiliza un IaaS, se cobra extra por cada contenedor.
18
4 SOA vs MSOA ANALISIS COMPARATIVO
19
Función Componente (SOA) Componente (Micro servicio)
BAM, monitoreo de
Servicio de tiempo de ejecución
servicio. Monitoreo empresarial.
/ monitoreo y gestión de API
Además, se puede observar que las dos arquitecturas tienen las siguientes diferencias.
SOA servicios Micro servicios
Los servicios pueden ser de granularidad fina
o grueso. Granularidad fina, servicios pequeños.
20
4.3.- Comparación
Para comparar ambas arquitecturas se evaluaron diferentes áreas de aplicación, su costo de
infraestructura, rendimiento, escalabilidad y entrega continua, con los desafíos que implican la
adopción de la cultura empresarial y las metodologías de desarrollo, los detalles se describen en
los siguientes apartados.
4.3.1.- Costo de infraestructura
21
4.3.3.- Abstracción de la interfaz
Una interfaz es una condición previa para interactuar con un servicio, ya que especifica
información obligatoria como la estructura y la semántica de los mensajes y datos intercambiados.
SOA y MSA comparten requisitos centrales con respecto a las interfaces, por ejemplo:
disponibilidad de descripciones de interfaz para los consumidores, probablemente junto
con un mecanismo de control de versiones, para permitir la interacción
provisión de múltiples, pero diferentes descripciones de interfaz por servicio
acoplamiento con protocolos como medio para el transporte de información
Sin embargo, SOA proporciona un mayor nivel posible de abstracción de interfaz que MSOA.
Esto se debe a que las SOA generalmente integran un Enterprise Service Bus (ESB), que permite
la transformación y mejora de los mensajes de interacción. Por lo tanto, las SOA facilitan la
interacción de los servicios, cuyos formatos y estructuras de mensajes difieren, por ejemplo, a
través del desacoplado patrón de contrato. Como los sistemas basados en MSOA generalmente
no comprenden un ESB, la interacción con los servicios solo es posible si los consumidores
utilizan formatos de mensajes y estructuras directamente compatibles con los servicios (Richards,
2015).
4.3.4.- Protocolos
Junto a la transformación del mensaje, los ESB también son capaces de transformar el protocolo,
lo que proporciona a las SOA el potencial de soportar una cantidad arbitraria de protocolos de
transporte. Esto permite la interacción de los participantes que utilizan diferentes protocolos. Por
el contrario, las MSA generalmente se aplican a la mayoría de dos protocolos diferentes, es decir,
uno a uno y uno a varios escenarios de interacción. Si bien las interacciones uno a uno dependen
principalmente de REST a través de HTTP, las interacciones uno a muchos siguen un patrón de
mensajería de publicación-suscripción (Xiao, 2016).
4.3.5.- Interacción entre servicios
En las arquitecturas basadas en servicios, los patrones más comunes para la coordinación de las
interacciones entre la arquitectura y el servicio interno son la orquestación y la coreografía.
Las orquestaciones se basan en un mediador central que coordina las interacciones del servicio
de acuerdo con la solicitud que debe manejarse.
Dentro de las coreografías, los servicios deciden de forma autónoma cuándo interactuar con otros
servicios. Esto generalmente resulta en cadenas de llamadas de servicio.
Para la interacción entre servicios, las MSA prefieren la coreografía sobre la orquestación,
mientras que SOA puede considerar igualmente la aplicación de ambos patrones según el
escenario de interacción concreto, pero generalmente se utiliza una orquestación. La razón detrás
del predominio de la coreografía en las MSA es la ausencia de un ESB y, por lo tanto, una capa
de orquestación habilitada para ESB.
4.3.6.- Interacción fuera del servicio
En las SOA, la ESB actúa como un intermediario entre los servicios internos de la arquitectura y
los consumidores externos con el potencial de mediar, en rutar y transformar los mensajes
intercambiados.
22
Los MSOA pueden proporcionar puertas de enlace API para que los llamantes externos realicen
solicitudes. En comparación con los ESB, las puertas de enlace API no muestran ninguna
capacidad de transformación de protocolo o mensaje. En su lugar, actúan como fachadas
bastante simples entre microservicios y consumidores, que se abstraen de los puntos finales y
granularidades de los servicios. Por lo tanto, un conjunto de interfaces de microservicio de
granularidad fina podría agregarse en una única función de API de granularidad gruesa más
conveniente para llamadores externos. Esto requiere una puerta de enlace API para implementar
capacidades de enrutamiento y mediación similares a un ESB. Las puertas de enlace API
fomentan el desacoplamiento de las estructuras de servicio de las expectativas de los
consumidores y permiten la evolución independiente de la MSOA siempre que la API expuesta
permanezca estable (Xiao, 2016).
4.3.7.- Alcance de la aplicación
SOA está predestinado para sistemas de software empresariales o de empresas cruzadas que
presentan un alto grado de heterogeneidad con respecto a, por ejemplo, formatos de datos,
estructuras de mensajes, protocolos y tecnologías. Además, cuando las preocupaciones como
las políticas y la gobernabilidad deben abordarse de forma centralizada en la arquitectura, SOA
es preferible a MSOA.
Los tipos de sistemas de software que favorecen a MSOA comprenden
4.3.8.- Integración
La arquitectura de microservicio admite interoperabilidad heterogénea sensible al protocolo en la
que el consumidor de servicios y ambas partes deben tener los mismos protocolos (REST), pero
la implementación del servicio y su consumidor pueden estar en diferentes tecnologías, como el
consumidor de servicios en java y el servicio implementado en .Net C #, esto es También se llama
lenguaje agnóstico en la arquitectura microservicio. Se encontraron algunos problemas durante
el desarrollo de la arquitectura de Microservicios debido a un entorno distribuido que enfrentó
fallas, transacciones distribuidas, comunicación entre servicios y problemas relacionados con las
dependencias, pero en la arquitectura SOA se administra en el nivel de la aplicación en una base
de código único.
En lo que respecta a la integración de nuevos servicios y consumidores externos, ambos estilos
arquitectónicos difieren en que las SOA impulsadas por ESB soportan implícitamente la
interoperabilidad heterogénea agnóstica del protocolo, mientras que las MSA solo admiten la
interoperabilidad heterogénea sensible al protocolo. Por lo tanto, los servicios SOA pueden
interactuar con las personas que llaman que basan su comunicación en diferentes protocolos. En
contraste, un requisito fundamental para interactuar con Microservicios es que el protocolo sea el
mismo para ambas direcciones de comunicación (Xiao, 2016).
23
4.3.9.- Rendimiento y tiempo de respuesta
Después del análisis, se ha evaluado el rendimiento de una aplicación desarrollada con la
arquitectura SOA y de microservicio en JMeter, configurado para la instancia de microservicio y
se ha observado que, debido a tareas secuenciales, los Microservicios tienen un 10% más de
tiempo de respuesta en comparación al tiempo que ejecutó SOA.
4.3.10.- Desafíos, esfuerzo y adopción de la cultura
Los Microservicios fomentan la organización de equipos de desarrollo en torno a características,
es decir, capacidades de infraestructura y negocios que deben realizarse y proporcionarse. Como
esto se alinea con la adaptación de los servicios, por lo general, exactamente un equipo es
responsable de un Microservicio determinado, que incluye su implementación y operación. Por lo
tanto, al lado de los desarrolladores, un equipo de desarrollo de Microservicios consta de personal
operativo que supervisa todos los aspectos relevantes para la operación de un servicio, por
ejemplo. Implementación, seguimiento y registro. Este enfoque de combinar el desarrollo y la
experiencia operativa en un equipo se conoce como DevOps. Otra característica de los equipos
de Microservicios es su tamaño comparativamente pequeño, que a menudo oscila entre cinco y
doce miembros.
En Microservicios, el equipo de desarrollo debe seguir el conjunto de directrices de la cultura de
mejores prácticas entre todos los miembros del equipo y adoptar esta cultura innovadora a lo
largo del proyecto.
En la arquitectura SOA, la responsabilidad de un servicio depende de su tipo. Por ejemplo, los
analistas de negocios proporcionan descripciones abstractas basadas en procesos de servicios
de negocios y desarrolladores de aplicaciones que implementan partes de estos servicios de
negocios como servicios de aplicaciones. Los arquitectos de software componen varios servicios
de aplicaciones y pueden desarrollar una funcionalidad adicional para toda la empresa para
proporcionar una realización ejecutable de un servicio empresarial. Por lo tanto, en una SOA es
común que los equipos se armen de manera homogénea sobre la base de disciplinas
profesionales y que más de un equipo esté involucrado en el desarrollo y la provisión de un solo
servicio.
4.3.11.- Escalabilidad y entrega continua
La implementación de Microservicios requiere muchos servicios y una puerta de enlace para
implementar individualmente y configurar sus ajustes. Una de las principales complejidades
durante la implementación por primera vez de una aplicación completa es implementar y
configurar cada servicio, puerta de enlace, frente de nube, instancia de EC2 y etc. debido a la
necesidad de una implementación continua de la arquitectura de Microservicios es una tarea
difícil.
En la nube se necesita usar herramientas de automatización para ahorrar tiempo de
implementación y mantener la agilidad. En la arquitectura de Microservicios, el equipo de
desarrollo sigue las estrategias de DevOps (desarrollo + operación) en las que el equipo de
desarrollo también implementa, opera y monitorea la aplicación en la nube. en contraste SOA es
fácil de implementar en la nube si se tiene un número limitado de usuarios, entonces la
arquitectura SOA será la mejor opción cuando se tenga una aplicación empresarial que no se
actualice constantemente y tenga un número limitado de clientes, por el contrario si la
escalabilidad y la administración del equipo son la prioridad más alta de la aplicación para este
24
propósito que necesitamos de manera incremental, se sugiere aplicar la arquitectura de
Microservicio para manejar este problema de escalabilidad y administración de equipos. También
ayuda a mejorar el incremento continuo del proyecto porque fue desarrollado, probado,
implementado, escalado y modificado por equipos individuales.
4.3.12.- Orientación practica
Se percibe que la MSOA muestran una orientación más fuerte hacia las necesidades de los
desarrolladores que la arquitectura SOA debido a sus conceptos y tecnologías más "ligeros" y
menos complejos. Una disminución de la complejidad conceptual de los MSOA se debe a su
reducida taxonomía de servicios. Mientras que en un SOA diversos tipos de servicio, por ejemplo,
Los servicios de empresa, aplicación o integración pueden existir al mismo tiempo, los MSOA
básicamente se basan en dos tipos de servicios:
compilación y construcción.
pruebas unitarias.
despliegue de contenedores.
Si ocurre una falla, solo ese servicio se verá afectado en lugar de una empresa completa,
pero en SOA un componente con falla, puede derribar todo el sistema.
El sistema de micro nivel de unidad individual para cada equipo de desarrollo se centra
en su objetivo y puede utilizar cualquier nueva tecnología de lenguaje de programación
para el primer desarrollo o después de eso.
Pequeños proyectos fáciles de administrar y hacer un IDE más rápido con un mayor
enfoque y productividad del desarrollador.
Fácil de entender y modificar para los desarrolladores, por lo tanto, puede ayudar a un
nuevo miembro del equipo a ser productivo rápidamente.
26
Desventajas
Las pruebas serán complicadas para cada módulo separado. La gestión de diferentes
tipos de servicios es compleja durante la operación de la implementación, especialmente
la primera vez que la aplicación empresarial está en producción.
Existe cierto desafío al implementar los MSOA por primera vez, esto debido a las
diferentes implementaciones que tiene dicha arquitectura, uno de los desafíos sino el
mayor es cómo convertir su aplicación en MSOA.
SOA admite tanto la interoperabilidad heterogénea, consciente del protocolo como la del
protocolo, pero MSOA solo admite un protocolo de mensajería simple.
La arquitectura ofrece una complejidad adicional ya que los desarrolladores deben mitigar
la tolerancia a fallas, la latencia de la red y lidiar con una variedad de formatos de
mensajes, así como con el equilibrio de carga.
Poder para reemplazar elementos de la capa aplicativa SOA sin disrupción en el proceso
de negocio.
Aplicaciones flexibles
Flexibilidad para reducir los tiempos y costos de implantación, y para contar con una
arquitectura ágil que permita la evolución, cambio y crecimiento del negocio.
Rapidez para llegar primero al mercado antes que la competencia y crecer la participación
de mercado.
27
Obtener mejor visibilidad de la información a través de toda su organización.
Aislar los sistemas frente a cambios generados por otras partes de la organización
(protección de las inversiones realizadas).
Desventajas
La arquitectura orientada a servicios se hace difícil y costosa, esto debido a las exigencias
de cumplir con los protocolos y hablar con un servicio.
Implica conocer los procesos del negocio, clasificarlos, extraer las funciones que son
comunes a ellos, estandarizarse y formar con ellas capaz de servicios que serán
requeridas por cualquier proceso de negocio.
28
5 IMPLICACIONES Y BUENAS PRACTICAS
Con la clara distinción de MSA de SOA, ahora es posible deducir las implicaciones en el desarrollo
de ambas arquitecturas, estas implicaciones nos sugieren que existe una mayor cohesión de los
servicios en MSOA, la fragmentación de los servicios es más flexible en SOA, existe un
comportamiento menos complejo respecto a los servicios en MSOA, SOA puede implementar
diferentes tipos de controladores mientras que MSOA solo uno, para la integración de los
servicios SOA utiliza la orquestación y MSOA puede utilizar tanto la orquestación como la
coreografía y MSOA deriva el modelado y gobernanza de los servicios al equipo de desarrollo.
Estas implicaciones proporcionan una visión general inicial de los criterios que deben
considerarse al aplicar SOA y MSA.
Es importante aplicar buenas prácticas en las arquitecturas SOA y MSOA estas deben estar
orientadas a mantener el sistema y la solución flexible, eficiente y escalable. Ambas arquitecturas
deben poner como prioridad la velocidad de desarrollo y la comprensión de la lógica de negocio
de la empresa, se sugiere utilizar un modelo en el que los servicios están divididos en grupos con
el objetivo de poder brindar servicios en un tiempo corto y contemplando un buen modelo de
arquitectura. si se tiene la opción de desarrollar una arquitectura desde el inicio es recomendable
utilizar MSOA para su implementación, en caso que la empresa ya utiliza SOA, se debe utilizar
los protocolos actuales para las nuevas implementaciones.
5.1.1- mayor cohesión en los modelos de negocio internos del servicio
En MSA sugiere implementar una capacidad de negocio autónoma en exactamente un servicio
funcional de granularidad gruesa. Esto da como resultado una mayor cohesión de los modelos
de negocios internos del servicio, ya que estos solo abarcan conceptos y elementos de un
extracto aislado y coherente del dominio empresarial.
Un contexto acotado determina el alcance de un modelo de negocio y agrupa los modelos de
negocio relacionados. Cada contexto limitado especificado puede servir como punto de partida
para adaptar la funcionalidad de un Microservicio y la definición de su límite, esto también es
aplicado a SOA ya que este último no tiene un contexto definido sobre la granularidad del servicio.
5.1.2- Fragmentación más explícita del modelo
La realización de una capacidad empresarial en un Microservicio autónomo y el consiguiente
aumento de la cohesión de los modelos internos del servicio, permiten una definición más
explícita de la lógica de los negocios. los modelos compartidos se utilizan como encapsulaciones
explícitas de partes de modelos de negocios que deben intercambiarse entre contextos limitados.
Cuando se asigna un contexto limitado a un microservicio, estos modelos proporcionan
definiciones iniciales de interfaces de servicio. Los modelos compartidos suelen participar en la
interacción de microservicios funcionales y La puerta de enlace API podría combinar varios
modelos compartidos en un servicio de granularidad gruesa.
Sin embargo, en una SOA, los conceptos de negocios pueden fragmentarse de manera más
flexible en diferentes partes de la arquitectura con diversas granularidades. Por ejemplo, un
servicio empresarial puede combinar e incluso enriquecer conceptos de diferentes servicios de
aplicación. Entonces es posible proporcionar el servicio empresarial resultante y sus conceptos
29
de negocios alterados a una variedad de participantes de SOA, por ejemplo. Consumidores
externos u otros servicios empresariales.
5.1.3- Modelos de comportamiento menos complejos en modelos de arquitectura
Dado que MSA favorece la coreografía sobre la orquestación, las interacciones de microservicios
expresadas como parte del modelo de arquitectura pueden ser solo coreografías. Las cadenas
de llamadas de servicio resultantes tienden a ser menos complejas que los modelos de
orquestación basados en procesos o los escenarios de interacción mixta que involucran ambos
patrones de coordinación de servicios. Un potencial adicional para la reducción del modelo de
comportamiento. la complejidad se logra cuando el MSA y sus interacciones exhiben flujos de
procesos bien definidos.
5.1.4- Diferentes controladores para la complejidad del modelo de arquitectura
SOA comprende una variedad de tipos de servicios sofisticados. Estas características están
diseñadas por SOA para predestinarse a los sistemas de software que abarcan diferentes
departamentos empresariales e incluso a las empresas mismas.
En las MSA, las características mencionadas generalmente no existen o exhiben una peculiaridad
menos compleja, lo que disminuye parcialmente la complejidad del modelo de arquitectura. Sin
embargo, para habilitar los aspectos de servicios relacionados con la operación de modelado se
requiere conceptos de modelado adicionales que no son tan importantes. Por ejemplo, parece
sensato que los modelos de arquitectura MSA comprendan aspectos relacionados con la
operación, como la asignación de servicios a contenedores, por ejemplo. para generar guiones
de configuración.
5.1.5- Modelado de integración menos complejo pero restringido
La integración de los servicios en una MSA es consciente del protocolo, es decir, un requisito
previo para la interacción del servicio es el acuerdo del servicio y el consumidor en un protocolo
determinado. Por lo tanto, las capacidades de transformación habilitadas por ESB que aseguran
la comunicación sin protocolo no deben ser consideradas por los lenguajes de modelado. Sin
embargo, la integración se limita entonces a la homogeneidad del protocolo y no es posible
modelar la integración de consumidores externos con una MSA que no es compatible con sus
protocolos.
5.1.6- Modelado de la operación del servicio dependiente del equipo de desarrollo
En el contexto del desarrollo los equipos se componen de desarrolladores de servicios y
operadores. El soporte de la lógica de negocio para modelar los aspectos relacionados con la
operación de un Microservicio es, beneficioso y también es considerado a nivel conceptual para
SOA. Asigna modelos relacionados con la operación, por ejemplo, para la implementación y el
monitoreo, a diferentes vistas, pero carece de una vista consolidada, dependiente del equipo, que
comprenda toda la lógica del negocio de operación de servicio. En la investigación SOA, los
aspectos de operación no parecen estar ampliamente cubiertos en lenguajes de modelado.
Esperamos que la MSOA, cuyas sintaxis abstractas incluyan conceptos relacionados con la
operación del servicio, mejoren la comunicación de los desarrolladores y los miembros del equipo
operativo. La razón de esto es el potencial para proporcionar a los operadores elementos de
lenguaje concisos para describir con eficacia los aspectos técnicos de la operación del servicio,
por ejemplo. Configuración de contenedores. Dependiendo de la adecuación de la granularidad
30
de abstracción de estos elementos del lenguaje, la comprensión de las configuraciones concretas
de los contenedores podría facilitarse a los desarrolladores que no estén familiarizados con este
aspecto relacionado con la operación a nivel técnico (Richards, 2015).
5.1.7- Modelo de gobernanza dependiente del equipo.
MSA fomenta una gran independencia de los equipos de desarrollo esto también afecta a la
gobernabilidad, que es un aspecto central de las SOA y se espera que se beneficie del apoyo
explícito al modelado.
Sin embargo, en las MSA, la responsabilidad de la gobernanza está delegada a los equipos y no
está determinada por una unidad organizativa central. Esto lleva a la existencia y madurez de los
modelos de gobierno que dependen del equipo. Si bien la gobernabilidad no es un aspecto
funcional como la implementación y operación del servicio, los equipos de MSA que usualmente
se enfocan en la provisión rápida de nuevas funcionalidades podrían no considerar la
gobernabilidad y la calidad de los modelos relacionados como una de sus tareas principales. A
través de transformaciones efectivas de modelos y validaciones sofisticadas, se puede mitigar la
posible inmadurez de los modelos de gobernabilidad (Xiao, 2016).
5.2.- Mejores practicas
¿Cuál es, entonces, el mejor enfoque para diseñar, desarrollar y administrar las interfaces de los
programas de aplicación; aquí se toma "mejor" en el sentido de cuál es la mejor manera de lograr
los resultados comerciales de la empresa?
Irónicamente, una de las razones por la que la arquitectura SOA tuvo una percepción de falta de
agilidad en el mundo de las tecnologías de información corporativo fue causado por los sistemas
monolíticos, los entornos complejos y la integración, los entornos heredados mal entendidos, etc.
Desafortunadamente, existe la misma complejidad hoy en día. especialmente en negocios
establecidos, que invariablemente tienen un legado de sistemas con diferente antigüedad y
diferentes diseños. Sin embargo, la demanda de agilidad y velocidad de respuesta han
aumentado casi en un orden de magnitud, principalmente a través de la aparición del mundo
digital. Y este es un desafío muy real, especialmente para las empresas establecidas que ven a
los desarrolladores innovando e introduciendo modelos de negocio disruptivos que reducen el
mercado y la rentabilidad. También considerar que el cambio de respuesta para la entrega de
proyectos hace años eran meses, hoy se ha convertido en días.
5.3.- Entrega rápida y Lógica del negocio
Como describimos anteriormente, la capacidad de innovar, probar y lanzar productos al mercado
con rapidez, adaptarlos y perfeccionarlos rápidamente es el ideal muy buscado por la empresa
digital de hoy en día. Varias empresas de tecnología y nuevas empresas se han beneficiado de
esta perspectiva, trayendo productos y servicios disruptivos rápidamente al mercado. Sin
embargo, las empresas típicas de hoy en día poseen sistemas centrales (sistemas que respaldan
sus operaciones principales) que simplemente no poseen las características necesarias para
satisfacer esta necesidad de rapidez y agilidad, sus ciclos de desarrollo y liberación están en el
orden de meses, no de horas y días demandados por el mundo digital.
En general, la arquitectura de microservicios de hoy surgió de esta necesidad, es decir, la
necesidad de desarrollar, implementar, cambiar servicios (o API) rápidamente para respaldar los
negocios digitales de hoy. Sin embargo, exploremos un poco más el requisito esencial.
31
los canales actuales de atención al cliente necesitan una entrega rápida de servicios; al mismo
tiempo, los principales sistemas centrales de la empresa tienen reglas de negocios complejas,
relaciones complejas con otros sistemas y exhiben una variedad de características adicionales
que inhiben el desarrollo rápido: monolítico y no modular, escasez de documentación y
habilidades de mantenimiento y soporte, construidas en un momento diferente a diferentes
principios de diseño relevantes para ese día, etc. Construir sus microservicios pequeños para
reemplazar la masa existente de funcionalidad corporativa no es una opción viable. Posiblemente
podría hacerlo, a un costo masivo y en un período de tiempo muy largo, momento en el cual
probablemente se habría visto afectado por su negocio. Incluso si, por algún milagro, hiciera eso,
introducirá una complejidad adicional que surge de la necesidad de administrar un patrimonio que
comprende una gran cantidad de servicios “pequeños” que evolucionan muy rápidamente.
Regresamos al punto señalado anteriormente: un nivel de complejidad es inseparable a su
negocio y esto está determinado por el entorno empresarial: factores tales como la naturaleza del
negocio, el entorno competitivo y regulatorio, el tamaño y la escala de su negocio etc. Esta
complejidad se traducirá en los sistemas que soportan el negocio, es decir, en la complejidad de
las reglas comerciales, las entidades de datos y las relaciones entre las entidades de datos, y se
reflejará en su colección de API o servicios. Por lo tanto, el mejor enfoque de diseño es reconocer
que no puede desechar esta complejidad, pero necesita crear un marco que introduzca la menor
cantidad de complejidad adicional, evitable.
Entonces, ¿cuál es el mejor enfoque para seguir adelante, dado que necesitamos respaldar dos
requisitos opuestos? Un requisito es la entrega rápida y el cambio de los servicios; el otro por el
mayor diseño medido y la entrega de requisitos necesaria para entender el camino a través de la
complejidad del negocio.
El punto crucial, por lo tanto, es que estos dos mundos, uno para entrega rápida y otro para diseño
y entrega medidos y considerados, deben coexistir. Aquí es donde entra en juego las diferentes
velocidades de las tecnologías de información. Una arquitectura de tecnologías de información
de diferentes velocidades puede ponerse en servicio para permitir a las empresas desarrollar sus
capacidades de atención al cliente a alta velocidad mientras desacoplan los sistemas heredados,
para lo cual se ofrece un enfoque mucho más deliberado y considerado. y los ciclos de liberación
son esenciales, lo que les permite proceder a su propio ritmo.
Estos dos mundos deben estar débilmente acoplados, pero obviamente no completamente
separados. Creemos que la forma en que se unen los dos mundos es a través de la integración
adecuada. La integración entre los dos mundos se debe reflejar a través de una construcción
arquitectónica y de diseño que muestra cómo se los abarca de una manera que permite un
acoplamiento suelto al tiempo que preserva la integridad y la cohesión. Existe un modelo de
servicio se adapta adecuadamente a los dos estilos de servicios. Los servicios que se construyen
de forma considerada y medida para satisfacer las necesidades de sus sistemas centrales, así
como las API digitales de entrega rápida, se ajustan a este requisito (Xiao, 2016).
5.4.- Un modelo de servicio para la arquitectura de diferentes velocidades
Como describimos anteriormente en este documento, un modelo de servicio es una construcción
de organización donde los "servicios" o "API" se describen en el modelo, que es una taxonomía
de los tipos de servicio y las relaciones entre ellos.
32
A continuación, un modelo de servicio, que tiene sus raíces en el modelo de servicio SOA, pero
modificado para adaptarse a las necesidades digitales actuales.
Capa Descripción
Los Servicios de entidad están diseñados para manejar datos persistentes y administrar
Servicios todas las funciones asociadas, como el almacenamiento y la recuperación, el bloqueo y la
de administración de transacciones; es decir, los servicios de CRUD. Dichos servicios
entidad administrarán una única entidad de datos, encapsulando sus operaciones CRUD más la
lógica comercial asociada.
Los servicios de negocio representan servicios sin estado que implementan directamente la
Servicios capacidad de servicio comercial y proporcionan valor comercial. Por lo general, los servicios
de de negocio son de una granularidad gruesa, encapsulan los datos y la lógica empresarial
negocio necesarios para ofrecer un resultado empresarial. Estos servicios pueden consumir servicios
de entidad u otros servicios comerciales.
Los servicios técnicos brindan apoyo a las funciones de negocios, en lugar de entregar
directamente los resultados de negocios. Estos pueden ser servicios de utilidad de negocios
Servicios (almacenamiento de documentos, correo y funciones de impresión), servicios de utilidad
técnicos técnica (por ejemplo, registro, manejo de excepciones técnicas), etc. Los servicios técnicos
pueden vincularse para formar servicios de negocios compuestos, utilizando el ensamblaje
del servicio o la orquestación de procesos.
Servicios Los Servicios de proceso son servicios que representan la totalidad o un fragmento de uno
de de los procesos de negocios de la organización. Estos pueden consumir otros servicios de
procesos procesos de negocios, servicios de negocios, servicios de entidades y servicios técnicos.
de
negocio
33
Un servicio construido para aprovisionar un requisito de frontend particular; Por lo general,
Backend está compuesto por servicios de negocios, entidad, servicios técnicos para un propósito en
para particular del usuario. Puede considerarse como una forma especializada de servicio
Frontend comercial, construida para un propósito de frontend particular.
El tipo de servicio Backend para Frontend (BEF) es un servicio susceptible de una rápida rotación,
creado para satisfacer las necesidades de la era digital. Los servicios de tipo BEF son
"desechables", con el desarrollador construyendo un nuevo BEF en lugar de una versión
actualizada cuando sea necesario.
Estos servicios BEF se basan en una base proporcionada por otros tipos de servicios: negocios,
procesos de negocios, técnicos, estos servicios siempre deben estar disponibles. En
contraposición a los BEF, los servicios de negocio "tradicionales" por mencionar SOA necesitan
un enfoque de desarrollo más medido; especialmente en el caso de servicios expuestos fuera de
los sistemas centrales de una empresa compleja. Los servicios BEF forman parte de un
paradigma completo, que generalmente incluye DevOps y desarrollo ágil, pruebas
automatizadas, ciclos de entrega rápidos e incrementales.
Para que este modelo de servicios tenga éxito, los principales servicios deben estar disponibles,
No se puede esperar seis meses para un par de servicios de negocio que requieran los servicios
BEF. Lo que debe suceder para el éxito de este modelo es la disponibilidad; Los servicios fuente
que requiere los servicios BEF y servicios de proceso de negocio deben existir. La empresa debe
invertir en "renovar" la lógica de negocio de los servicios existentes, re factorizándolos para
deshacerse de la deuda técnica asociada con el patrimonio. Esta actividad puede llevarse a cabo
antes de la necesidad de una funcionalidad empresarial específica, como una actividad
fundamental de fondo.
Si la organización ya posee una infraestructura tecnológica SOA madura, se debe continuar
usando la infraestructura SOA y los protocolos API más nuevos y más simples (REST / HTTP)
para las nuevas API digitales. Si, por otro lado, la empresa es relativamente nueva en la
administración de servicios, entonces es recomendable utiliza la arquitectura MSOA con su
respectivo marco de trabajo y los protocolos de administración de API para construir los nuevos
servicios de acuerdo a los tipos de servicios del modelo sugerido en la figura 7.
34
6 CONCLUCIONES
35
Con la clara distinción de MSA de SOA, ahora es posible deducir las implicaciones en el desarrollo
de ambas arquitecturas, estas implicaciones nos sugieren que existe una mayor cohesión de los
servicios en MSOA, la fragmentación de los servicios es más flexible en SOA, existe un
comportamiento menos complejo respecto a los servicios en MSOA, SOA puede implementar
diferentes tipos de controladores mientras que MSOA solo uno, para la integración de los
servicios SOA utiliza la orquestación y MSOA puede utilizar tanto la orquestación como la
coreografía y MSOA deriva el modelado y gobernanza de los servicios al equipo de desarrollo.
Estas implicaciones proporcionan una visión general inicial de los criterios que deben
considerarse al aplicar SOA y MSA.
Es importante aplicar buenas prácticas en las arquitecturas SOA y MSOA estas deben estar
orientadas a mantener el sistema y la solución flexible, eficiente y escalable. Ambas arquitecturas
deben poner como prioridad la velocidad de desarrollo y la comprensión de la lógica de negocio
de la empresa, se sugiere utilizar un modelo en el que los servicios están divididos en grupos con
el objetivo de poder brindar servicios en un tiempo corto y contemplando un buen modelo de
arquitectura. si se tiene la opción de desarrollar una arquitectura desde el inicio es recomendable
utilizar MSOA para su implementación, en caso que la empresa ya utiliza SOA, se debe utilizar
los protocolos actuales para las nuevas implementaciones.
36
7 Bibliografía
37
38