Está en la página 1de 48

Arquitectura de Integración

Responde a la pregunta
de cómo integramos los
distintos componentes
tecnológicos de una
organización de manera
de optimizar los
recursos, eficientar los
procesos, responder al
negocio, mantener la
calidad …
Integración de Sistemas

“La integración de sistemas significa el compartir datos y


procesos de negocio en forma irrestricta entre distintas
aplicaciones interconectadas…”
Gartner Group
A lo que podemos agregarle:
“… de forma tal que cada proceso de negocio o porción de datos
sea implementado de la mejor manera por la aplicación mas
adecuada, y compartido al resto”
Evolución Arquitecturas de Integración
Aplicación Monolítica
Las aplicaciones monolíticas son aquellas
en las que el software se estructura en
grupos funcionales muy acoplados (Si los
hay), involucrando los aspectos referidos a
la presentación, procesamiento y
almacenamiento de la información.  Son
implementadas dentro de un solo
componente de software.
Arquitectura Cliente Servidor

En esta arquitectura la
capacidad de proceso está
repartida entre los clientes y
los servidores, aunque son
más importantes las ventajas
de tipo organizativo debidas a
la centralización de la gestión
de la información y la
separación de
responsabilidades, lo que
facilita y clarifica el diseño
del sistema.
Arquitectura de 3 capas

 Persistencia: Esta capa se encarga de guardar los datos. Será donde se


gestione todo lo relativo a la base de datos y a la creación, edición y borrado
de datos de ésta.
 Negocio: En esta capa se gestiona la lógica de la aplicación. Es donde se dice
que se hace con los datos.
 Presentación: En esta capa se crea la interfaz del usuario. Su única función es
pasarle las acciones que realice el usuario a la capa de negocio.
Sistema Distríbuido

Se define como una colección de


computadoras separadas físicamente y
conectadas entre sí por una 
red de comunicaciones; cada máquina posee
sus componentes de hardware y software
que el programador percibe como un solo
sistema.
El usuario accede a los componentes de
software (objetos) remotos, de la misma
manera en que accedería a componentes
locales, en un grupo de computadoras que
componen un middleware utilizando
protocolos como RPC, RMI, CORBA y SOAP.
Enterprise Application Integration (EAI)
EAI es el proceso de crear una
infraestructura integrada para
unir sistemas dispares, a través
de una empresa.
Nace de la necesidad de integrar
sistemas heterogéneos como
ERP, CRM, etc.
Comprende
– Aceptación de mensajes
– Transformación
– Traducción
– Ruteo
– Entrega de mensajes
Bus de Servicios

Provee una infraestructura que elimina cualquier conexión directa entre los
consumidores y los proveedores de los servicios. Infraestructura común para
invocaciones, mensajes y eventos. Basado en estándares (JMS, RMI, SOAP, etc.)
Bus de Servicios
Communications
– Routing, addressing,
request/response,
publish/subscribe, …

Integration
– Adapters, protocol
transformation, …

Service interaction
– Service Interface
definition, substitution of
service implementation, …

Management
– Administration Capability
Arquitectura Orientada a Servicios

Es un enfoque basado en el
concepto de Servicios. Las
necesidades y funciones de
infraestructura requeridas
para crear sistemas
distribuidos son provistos
como servicios que entregan,
en forma individual o
colectiva, funcionalidad para
aplicaciones u otros servicios.
Arquitectura Orientada a Servicios

 SOA != Web Services


 SOA no existe en una caja
 Lo mas importante es el concepto de
orientación a servicios
 Es aplicable en contextos empresariales
 No se debe pensar un sistema aislado
 Un sistema es una entidad proveedora
de servicios
 Los servicios deben ser fácilmente
ubicables
 Los servicios deben tener un contrato
claro
Monolito vs SOA
Business Process Management

BPM es una metodología de mejoramiento continuo del rendimiento  de los


procesos. Es sobre todo una disciplina de gestión basada en la mejora
iterativa de los procesos de negocio.

En los últimos años, tanto BPM y


SOA  se han promocionado como 
dos enfoques que ayudarán a las
organizaciones a mejorar su
rendimiento.  Ambos enfoques
ofrecen una metodología evolutiva
para  la transformación de la
arquitectura empresarial y para el
desarrollo de TI,  todo  bajo una 
visión holística.
BPM y SOA
BPM y SOA, aplicadas
en conjunto
proporcionan la
infraestructura ideal
para resolver
problemas de
integración en las
organizaciones.
Laboratorio parte 6 (20 mins)

Se formarán 3 grupos de trabajo:

1.- Grupo 1: Café


2.- Grupo 2: Gimnasio
3.- Grupo 3: Barbería

Para la empresa que le corresponda selecciones uno de los procesos de la


función de negocio principal e identifique los servicios que necesita para
ejecutarse. Para cada servicio identifique la entrada, salida y SLAs.
Arquitectura de Microservicios
MSA es una aproximación para el
desarrollo de software que
consiste en construir una
aplicación como un conjunto de
pequeños servicios, los cuales se
ejecutan en su propio proceso y se
comunican con mecanismos ligeros
(normalmente una API de recursos
HTTP).
Cada servicio se encarga de
implementar una funcionalidad
completa del negocio.
Cada servicio es desplegado de
forma independiente y puede estar
programado en distintos lenguajes
y usar diferentes tecnologías de
almacenamiento de datos.
Arquitectura de Microservicios

 Los componentes son servicios


 Organizada en torno a las funcionalidades del negocio
 Productos no proyectos
 Tener gobierno descentralizado permite usar tecnologías que se adapten
mejor a cada funcionalidad.
 Gestión de datos descentralizada
 Diseño tolerante a fallos
 Automatización de la infraestructura
 Diseño evolutivo
Arquitectura de Microservicios

 Facilidadde mantenimiento. Si una función


falla, nos podemos centrar en el microservicio
encargado de esa función.
 CadaMicroservicio puede elegir su propia
tecnología, con lo que distintos microservicios
pueden estar escritos en distintos leguajes de
programación.
 Si
me hace falta más capacidad para ejecutar
una función, simplemente despliego el mismo
microservicio todas las veces que sean
necesarias.
 Si
un Microservicio falla, el resto continua
trabajando, minimizando las pérdidas de
servicio completas.
API Gateway
Responsable por el enrutamiento, composición y la transformación de protocolos.
Proporciona un servicio o API especifica y adecuada para cada cliente, además
reduce el número de llamadas a los servicios, ya que el gateway puede hacer
múltiples invocaciones simultáneamente dentro de una sola llamada del cliente, al
tiempo que simplifica la lógica y la complejidad del llamado.
Monolito vs Microservicios
SOA vs Microservicios
Laboratorio parte 7 (20 mins)

Se formarán 3 grupos de trabajo:

1.- Grupo 1: Café


2.- Grupo 2: Gimnasio
3.- Grupo 3: Barbería

Para la empresa que le corresponda discuta que tipo de arquitectura de


integración se adecua más a sus necesidades. Justifique con ejemplos
Métodos de Integración
Mensajería (Colas)

Una cola de mensajes es una forma de comunicación asíncrona de servicio a


servicio. Los mensajes se almacenan en la cola hasta que se procesan y eliminan.
Las colas de mensajes se pueden usar para desacoplar procesos pesados, para
acumular trabajo y para clasificar cargas de trabajo.
Java Message Service
La API JMS, es la solución creada
por Sun Microsystems para el uso de
colas de mensajes.
Este es un estándar de mensajería
que permite a los componentes de
aplicaciones basados en la
plataforma Java crear, enviar,
recibir y leer mensajes. También
hace posible la comunicación
confiable de manera asíncrona.
Componentes Distribuídos

En los sistemas Cliente/Servidor, un


objeto distribuido es aquel que esta
gestionado por un servidor y sus
clientes invocan sus métodos
utilizando un "método de invocación
remota”, de forma análoga a la
llamada de procedimientos remotos
(RPC). El cliente invoca el método
mediante un mensaje al servidor que
gestiona el objeto, se ejecuta el
método del objeto en el servidor y el
resultado se devuelve al cliente en
otro mensaje.

Las tecnologías más utilizadas son


RMI, CORBA, DCOM
Enterprise Java Bean

Los EJB proporcionan un modelo de


componentes distribuido estándar del
lado del servidor.
Los EJB se disponen en un contenedor
EJB dentro del servidor de
aplicaciones. La especificación describe
cómo el EJB interactúa con su
contenedor y cómo el código cliente
interactúa con la combinación del EJB y
el contenedor.
Tipos de EJB

El objetivo de los EJB es dotar al programador de un modelo que le permita abstraerse de los
problemas generales de una aplicación empresarial (concurrencia, transacciones, persistencia,
seguridad, asincronía, etc.) para centrarse en el desarrollo de la lógica de negocio en sí. 
Message Driven Bean

Un Message-Driven Bean o MDB


(EJB dirigido por mensajes) es un
oyente de mensajes que puede
consumir mensajes de una cola o
de una durable subscription.
Dichos mensajes pueden ser
enviados por cualquier
componente JavaEE (cliente,
otro EJB o una componente Web
como un servlet). Incluso desde
una aplicación o sistema que no
use tecnología JavaEE.
Web Services

Un servicio web es una


tecnología que utiliza un
conjunto de protocolos y
estándares que sirven para
intercambiar 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.
Protocolos para Web Services

El Stack de protocolos para Servicios


Web es una colección de protocolos y
estándares que son utilizados para
definir, localizar, implementar y hacer
que un Servicio Web interactúe con otro.
Actualmente, esta área incluye protocolos
tales como XML-RPC, SOAP y REST.
Descripción del Servicio: usado para
describir la interfaz pública de un
Servicio Web especifico. El formato de
interfaz Web Services Description
Language - WSDL es típicamente usado
para este propósito.
SOAP vs REST

Cuando se trata de aplicaciones


públicas (servicios de uso masivo)
es mucho mejor utilizar REST por la
sencillez en su implementación y
respuestas, inclusive en clientes
móviles es mucho más fácil utilizar
REST. Por otro lado si se esta
pensando en webservices para
corporaciones donde se manejan
datos complejos y se necesita una
presición detallada en las respuestas
se debe de utilizar SOAP
SOAP vs REST
Laboratorio parte 8 (20 mins)

Se formarán 3 grupos de trabajo:

1.- Grupo 1: Café


2.- Grupo 2: Gimnasio
3.- Grupo 3: Barbería

Para la empresa que le corresponda discuta que métodos de integración


ustedes creen que podrían llegar a utilizar. Explique sus respuestas
Arquitectura Aplicativa

Haciendo la analogía con


la construcción de un
hogar o edificio la
arquitectura de una
aplicación serían los
cimientos, las bases sobre
las que construir todo
nuestra aplicación. Se
trata de un elemento
fundamental para que el
correcto desarrollo de
una app sea posible. 
Arquitectura de Software

Una arquitectura de
software, también
denominada arquitectura
lógica, consiste en un
conjunto de patrones y
abstracciones coherentes
que proporcionan un marco
definido y claro para
interactuar con el código
fuente del software
Arquitectura de Software

La arquitectura de
software define, de
manera abstracta, los
componentes que llevan a
cabo alguna tarea de
computación, sus
interfaces y la
comunicación entre ellos.
Patrones de Diseño

Los patrones de diseño son unas técnicas


para resolver problemas comunes en el 
desarrollo de software y otros ámbitos
referentes al diseño de interacción o
interfaces.
Un patrón de diseño resulta ser una solución
a un problema de diseño. Para que una
solución sea considerada un patrón debe
poseer ciertas características. Una de ellas
es que debe haber comprobado su
efectividad resolviendo problemas similares
en ocasiones anteriores. Otra es que debe
ser reutilizable, lo que significa que es
aplicable a diferentes problemas de diseño
en distintas circunstancias
Model View Controller

Modelo Vista
Controlador (MVC) es
un estilo de
arquitectura de
software que separa
los datos de una
aplicación, la interfaz
de usuario, y la lógica
de control en tres
componentes distintos
Frameworks MVC

Aunque originalmente MVC fue


desarrollado para aplicaciones
de escritorio, ha sido
ampliamente adaptado como
arquitectura para diseñar e
implementar aplicaciones web
en los principales lenguajes de
programación. Se han
desarrollado multitud de
frameworks, comerciales y no
comerciales, que implementan
este patrón 
Arquitectura Java EE

Java Platform, Enterprise Edition o Java


EE, es una plataforma para desarrollar y
ejecutar software de aplicaciones en el
lenguaje de programación Java. Permite
utilizar arquitecturas de N capas
distribuidas y se apoya ampliamente en
componentes de software modulares
ejecutándose sobre un 
servidor de aplicaciones.
La plataforma Java EE está definida por
una especificación y es también
considerado informalmente como un
estándar debido a que los proveedores
deben cumplir ciertos requisitos de
conformidad para declarar que sus
productos son conformes a Java EE
Framework Spring

Spring es un framework para el desarrollo de aplicaciones y contenedor de inversión


de control, de código abierto para la plataforma Java
Spring Boot

La idea de Spring Boot es poder


realizar aplicaciones Spring,
pero con cero configuración. A
Spring Boot se le indica qué tipo
de aplicación se requiere (web,
con jpa, con postgres, etc) y él
genera un proyecto
maven/gradle con todo lo
necesario y que se autoconfigura
en el arranque.
Micro Servicios
Según Martin Fowler y 
James Lewis explican en su
artículo Microservices,
los microservicios se definen
como un estilo arquitectural, es
decir, una forma de desarrollar
una aplicación, basada en un
conjunto de pequeños servicios,
cada uno de ellos ejecutándose de
forma autónoma y comunicándose
entre si mediante mecanismos
livianos, generalmente a través de
peticiones REST sobre HTTP por
medio de sus APIs.
Laboratorio parte 8 (20 mins)

Se formarán 3 grupos de trabajo:

1.- Grupo 1: Café


2.- Grupo 2: Gimnasio
3.- Grupo 3: Barbería

Para la empresa que le corresponda discuta qué framework o metodología


de arquitectura aplicativa (y/o de software) ustedes utilizarían para
construir sus aplicaciones. Justifique.

También podría gustarte