Post on 14-Dec-2015
description
Arquitectura Orientada a Arquitectura Orientada a Servicios (SOA)Servicios (SOA)
Diego González - CTODiego González - CTOdiegog@lagash.comdiegog@lagash.com
Hernán de LahitteHernán de Lahitte - arquitecto - arquitectoHernán@lagash.comHernán@lagash.com
AgendaAgenda
Orígenes de SOAOrígenes de SOA
Principios fundamentalesPrincipios fundamentales
Diseño de aplicacionesDiseño de aplicaciones
ImplementacionesImplementacionesTecnologíasTecnologías
FrameworksFrameworks
ProyectosProyectos
Orígenes de SOAOrígenes de SOA
Arquitectura de aplicaciones Arquitectura de aplicaciones distribuidasdistribuidas
Cliente-ServidorCliente-ServidorSeparación del origen de datosSeparación del origen de datos
Modelo tres capasModelo tres capasObjetos distribuidosObjetos distribuidos
Arquitectura de Web ServicesArquitectura de Web ServicesModelo Modelo statelessstateless
Nuevos lenguajes de programación Nuevos lenguajes de programación Utilización de patrones de diseñoUtilización de patrones de diseño
Orígenes de SOAOrígenes de SOA
Integración de aplicacionesIntegración de aplicacionesReutilización limitada de funcionalidadReutilización limitada de funcionalidad
Distintas plataformasDistintas plataformas
Distintos lenguajesDistintos lenguajes
Limitaciones técnicas de integración Limitaciones técnicas de integración entre plataformasentre plataformas
TransaccionesTransacciones
SeguridadSeguridad
HerramientasHerramientas
Futuro desafío en el diseño de Futuro desafío en el diseño de aplicacionesaplicaciones
Composición integral de aplicacionesComposición integral de aplicaciones
Orígenes de SOAOrígenes de SOA
Requerimientos no funcionales que Requerimientos no funcionales que aplican a toda la organizaciónaplican a toda la organización
AdministraciónAdministración
MonitoreoMonitoreo
SeguridadSeguridad
MetadatosMetadatos
Aparición de Aparición de AAspect spect OOriented riented PProgrammingrogramming
Proponiendo el concepto Proponiendo el concepto Cross-Cutting Cross-Cutting ConcernsConcerns
Intercepción como base de la Intercepción como base de la extensibilidadextensibilidad
Orígenes de SOAOrígenes de SOA
Objetos distribuidosObjetos distribuidosHan demostrado necesitar mucho más Han demostrado necesitar mucho más desarrollo teóricodesarrollo teórico
Tiempo de vidaTiempo de vida
Circulación de referenciasCirculación de referencias
Diversidad de tecnologíasDiversidad de tecnologíasEstándares muy dependientes de la Estándares muy dependientes de la plataformaplataforma
Dificultad para acordar alcancesDificultad para acordar alcancesQuien se encarga de Quien se encarga de
SeguridadSeguridad
TransaccionesTransacciones
Orientación a serviciosOrientación a servicios
Centrado en el concepto de servicioCentrado en el concepto de servicioLas aplicaciones exponen y consumen Las aplicaciones exponen y consumen serviciosservicios
Un servicio esUn servicio esUnidad atómica de funcionalidad Unidad atómica de funcionalidad reutilizablereutilizable
Definen claramente su interfazDefinen claramente su interfaz
Requerimientos no funcionales son Requerimientos no funcionales son independientes de la plataformaindependientes de la plataforma
Leyes (Leyes (tenetstenets) de SOA) de SOA
Limites explícitosLimites explícitosQué hace y que no hace un servicio?Qué hace y que no hace un servicio?
Servicios autónomosServicios autónomosAutocontenidos e independientes de Autocontenidos e independientes de otros serviciosotros servicios
Interfaz como esquema y no como Interfaz como esquema y no como clasesclases
Exponer sus requerimientos como Exponer sus requerimientos como estructura de datos y contratosestructura de datos y contratos
Compatibilidad basada en políticasCompatibilidad basada en políticasQué requiere de quien lo consume?Qué requiere de quien lo consume?
No leyes de SOANo leyes de SOA
Invocación puede ser sincrónica o Invocación puede ser sincrónica o asincrónicaasincrónica
Interacción orientada a mensajesInteracción orientada a mensajes
Transparencia de ubicación de Transparencia de ubicación de serviciosservicios
Catálogo de serviciosCatálogo de servicios
Modelo de Dominio/TablaModelo de Dominio/Tabla
Una interfaz por delante del modelo Una interfaz por delante del modelo de dominio.de dominio.
Producto
Cliente
Factura
ItemFactura
Aplicación
FacturarFacturar
ObtenerFacturaci
ón
ObtenerFacturaci
ón
VentajasVentajas
Fuerte separación entre capas o Fuerte separación entre capas o loosely coupled applicationsloosely coupled applications
Separación tecnológicaSeparación tecnológica
Declaración de los requerimientos no Declaración de los requerimientos no funcionalesfuncionales
Administración unificadaAdministración unificadaCon una única herramienta que Con una única herramienta que administra serviciosadministra servicios
Transparencia de locaciónTransparencia de locación
Reusabilidad simplificadaReusabilidad simplificada
VentajasVentajas
Exposición de servicios granatizadosExposición de servicios granatizadosEn lugar de exponer clases o interfaces En lugar de exponer clases o interfaces que pueden ser “mal usadas”que pueden ser “mal usadas”
Agregación de serviciosAgregación de serviciosUn servicio puede agregar a otros Un servicio puede agregar a otros servicios para garantizar atomicidadservicios para garantizar atomicidad
Composición de lógica de negocioComposición de lógica de negocioIntercepción como base de la Intercepción como base de la extensibilidadextensibilidad
Buenos niveles de escalabilidadBuenos niveles de escalabilidad
Paralelismo en el desarrolloParalelismo en el desarrollo
RequerimientosRequerimientos
Definición de servicios independientemente de la Definición de servicios independientemente de la implementación, ubicación o usoimplementación, ubicación o usoImplementación y provisión de servicios como Implementación y provisión de servicios como proveedorproveedorLocalización y uso de servicios como consumidorLocalización y uso de servicios como consumidorComposición de servicios a partir de otros Composición de servicios a partir de otros servicios y relglas de negocioservicios y relglas de negocio
Servicios internos y externosServicios internos y externos
Soporte de interacción sincrónica y asincrónicaSoporte de interacción sincrónica y asincrónicaOrquestación de UI basadas en servicios y reglas Orquestación de UI basadas en servicios y reglas de ngociode ngocioSoporte para múltiples formas de interacción Soporte para múltiples formas de interacción humanahumanaTransformación de datos automáticos entre Transformación de datos automáticos entre distintas estructuras de datos.distintas estructuras de datos.Soporte para simulación, prueba y depuración de Soporte para simulación, prueba y depuración de serviciosservicios
Diseño de aplicaciones Diseño de aplicaciones SOASOA
Identificación de serviciosIdentificación de serviciosIdentificar los procesos a partir de los Identificar los procesos a partir de los casos de usocasos de uso
Definir los servicios que se utilizan Definir los servicios que se utilizan durante los procesos detectadosdurante los procesos detectados
Determinar una jerarquía de servicios en Determinar una jerarquía de servicios en función de la reusabilidad interna y función de la reusabilidad interna y externaexterna
Crear servicios externos que componen Crear servicios externos que componen servicios internosservicios internos
Evitar la proliferación de serviciosEvitar la proliferación de serviciosLimitar los servicios a los requeridos por los Limitar los servicios a los requeridos por los procesosprocesos
Diseño de aplicaciones Diseño de aplicaciones SOASOA
Categorización de serviciosCategorización de serviciosUnaUna
ProcessProcessActivityActivityEntityEntityInfraestructureInfraestructure
XWIF Service ModelXWIF Service ModelUtility serviceUtility serviceBusiness serviceBusiness serviceController serviceController serviceProxy serviceProxy serviceWrapper serviceWrapper serviceCoordination service (for atomic transactions)Coordination service (for atomic transactions)Process serviceProcess serviceCoordination service (for business activities)Coordination service (for business activities)
Categorización de serviciosCategorización de serviciosClientes o agentesClientes o agentes
Entity Entity ServicesServices
Activity Activity ServicesServices
Process Process ServicesServices
DatosDatos ComponenteComponentePartnerPartner LegacyLegacy
Infra
stru
ctu
re
Infra
stru
ctu
re
Serv
ices
Serv
ices
Diseño de aplicaciones Diseño de aplicaciones SOASOA
Diseño de los mensajesDiseño de los mensajesUna vez definidos los servicios ajustar los Una vez definidos los servicios ajustar los mensajes utilizadosmensajes utilizados
Como hacer aplicaciones clientes de SOAComo hacer aplicaciones clientes de SOANo asumir conectividad contínua ni servicios No asumir conectividad contínua ni servicios relacionados (seguridad, transacciones)relacionados (seguridad, transacciones)MappingMapping
Mensajes y entidadesMensajes y entidades
Diseñando interfaces de usuario SOADiseñando interfaces de usuario SOASoporada por servicios de UISoporada por servicios de UISolo interactúa con el servidor cuando finaliza Solo interactúa con el servidor cuando finaliza la operación.la operación.Coarse-Grained interactionCoarse-Grained interaction..
Migrando aplicaciones a Migrando aplicaciones a SOASOA
Considerar una arquitectura con Considerar una arquitectura con concepto de serviciosconcepto de servicios
Migrando componentesMigrando componentesCOMCOM
.Net.Net
Migrando ASP.NETMigrando ASP.NETWebServicesWebServices
WebApplicationsWebApplications
Migrando aplicaciones WinFormsMigrando aplicaciones WinForms
Migrando de aplicaciones SOAMigrando de aplicaciones SOA
Orientación a Orientación a FuncionesFunciones
Creada para durarCreada para durar
Ciclos de desarrollo Ciclos de desarrollo prolongadosprolongados
DesdeDesde HaciaHaciaOrientación a Orientación a Procesos Procesos
Creada para el Creada para el cambiocambio
Desarrollo e Desarrollo e implantación implantación incremental y en incremental y en paraleloparalelo
Silos de AplicacionesSilos de Aplicaciones
Acoplamiento FuerteAcoplamiento Fuerte
Orientación a Orientación a ObjetosObjetos
Implementación Implementación ConocidaConocida
Soluciones Soluciones OrquestadasOrquestadas
Acoplamiento DébilAcoplamiento Débil
Orientación a Orientación a MensajesMensajes
AbstracciónAbstracción
Ciclo de vida de Ciclo de vida de aplicacionesaplicaciones
Como se llega a SOAComo se llega a SOAIntegración de aplicacionesIntegración de aplicaciones
Nueva aplicación con nueva arquitecturaNueva aplicación con nueva arquitectura
Nueva interfaz para una aplicación Nueva interfaz para una aplicación existenteexistente
Mantenimiento de aplicacionesMantenimiento de aplicacionesLas aplicaciones cambianLas aplicaciones cambian
Exponer servicios evita “mal uso” de las Exponer servicios evita “mal uso” de las clasesclases
Constante reutilización de serviciosConstante reutilización de servicios
ImplementaciónImplementación
FrameworksFrameworksASMXASMX
Formato nativo .Net para exposición de Formato nativo .Net para exposición de WebServicesWebServices
Totalmente integrado con Visual Studio .NETTotalmente integrado con Visual Studio .NET
Soporta únicamente HTTP (IIS + ASP.NET)Soporta únicamente HTTP (IIS + ASP.NET)
WSEWSEPermite crear servicios o clases Permite crear servicios o clases proxyproxy a a servicios remotosservicios remotos
Fácilmente extensible e interceptableFácilmente extensible e interceptable
No asume protocolo HTTPNo asume protocolo HTTP
ImplementaciónImplementación
ProductosProductosBizTalkBizTalk
Si bien está más orientado a la integración Si bien está más orientado a la integración de aplicacionesde aplicaciones
Es un Es un hubhub de mensajes extensible de mensajes extensible
FrameworksFrameworksEDRAEDRA
MBIMBI
FABRIQFABRIQ
¿Que es EDRA ¿Que es EDRA (Shadowfax)(Shadowfax)??
Es una Es una Guía de ArquitecturaGuía de Arquitectura para para estandarizar el desarrollo de estandarizar el desarrollo de sistemas sistemas distribuidosdistribuidos
Es un Es un Framework de AplicacionesFramework de Aplicaciones Extensible el cual incorpora recursos Extensible el cual incorpora recursos de la plataforma; ASP.NET-WS, MSMQ, de la plataforma; ASP.NET-WS, MSMQ, Enterprise Services, Remoting, WSE Enterprise Services, Remoting, WSE
Es una Es una Implementación de ReferenciaImplementación de Referencia que usa el Framework en un modelo que usa el Framework en un modelo bancariobancario
Es una iniciativa (PAG) apoyada en un Es una iniciativa (PAG) apoyada en un fuerte feedback de la comunidad y la fuerte feedback de la comunidad y la industriaindustria
¿Que es MBI?¿Que es MBI?
Resuelve escenarios recurrentes de una empresa Resuelve escenarios recurrentes de una empresa corporativacorporativa
Es una arquitectura de referencia para la Es una arquitectura de referencia para la construcción de aplicacionesconstrucción de aplicaciones
Incorpora mejores prácticas de Microsoft Incorpora mejores prácticas de Microsoft CorporationCorporation
Arquitectura de integración común a todos los Arquitectura de integración común a todos los Portfolios de SolucionesPortfolios de Soluciones
Reducción de costos de desarrollo y Reducción de costos de desarrollo y mantenimientomantenimiento
MBI es un MBI es un frameworkframework para crear, ejecutar para crear, ejecutar y mantener aplicaciones corporativas y mantener aplicaciones corporativas basadas en plataforma Microsoft.NETbasadas en plataforma Microsoft.NET
Shadowfax + MBI = MBI Shadowfax + MBI = MBI 3.03.0
DefiniciónDefiniciónImplementación prescriptiva de Implementación prescriptiva de Shadowfax Shadowfax
Revisada por el equipo de PAG de Microsoft Revisada por el equipo de PAG de Microsoft Corp.Corp.
MBI 3.0 complementa a Shadowfax en MBI 3.0 complementa a Shadowfax en escenarios que Shadowfax aún no escenarios que Shadowfax aún no resuelveresuelve
MBI 3.0 implementa como componente MBI 3.0 implementa como componente central a Shadowfax central a Shadowfax
MBI & Shadowfax proveen el contexto MBI & Shadowfax proveen el contexto adecuado para la construcción de adecuado para la construcción de aplicaciones orientadas a serviciosaplicaciones orientadas a servicios
¿Que es FABRIQ?¿Que es FABRIQ?
Q.NET + EntServices + WSE + SOA + HPC + AgentQ.NET + EntServices + WSE + SOA + HPC + Agent
Arquitectura para el desarrollo de aplicaciones SOA en .Net Arquitectura para el desarrollo de aplicaciones SOA en .Net de alta performance soportado sobre un modelo de redes de de alta performance soportado sobre un modelo de redes de colas distribuidas interconectadas .colas distribuidas interconectadas .
Una aplicación que utiliza las mejores prácticas de WSE 2.0Una aplicación que utiliza las mejores prácticas de WSE 2.0
Un frámework agil para la implementación de agentesUn frámework agil para la implementación de agentes
ParaParaPermitir la adopción de modelos asincrónicos de computación a Permitir la adopción de modelos asincrónicos de computación a la comunidad de desarrolladores y arquitectos.la comunidad de desarrolladores y arquitectos.
Mejorar el camino hacia Indigo para la comunidad .Net.Mejorar el camino hacia Indigo para la comunidad .Net.
Desarrollado porDesarrollado porArvindra Sehmi, MS EMEA, DPE – Project LeadArvindra Sehmi, MS EMEA, DPE – Project Lead
Clemens Vasters, newtelligence AG – Architect LeadClemens Vasters, newtelligence AG – Architect Lead
Eugenio Pace, MS Argentina, MCS – Development LeadEugenio Pace, MS Argentina, MCS – Development Lead
Mas informaciónMas informaciónSOASOA
http://msdn.microsoft.com/architecturehttp://msdn.microsoft.com/architecturehttp://msdn.microsoft.com/practiceshttp://msdn.microsoft.com/practiceshttp://msdn.microsoft.com/webserviceshttp://msdn.microsoft.com/webservices
EDRA (Shadowfax)EDRA (Shadowfax)http://workspaces.gotdotnet.com/shadowfxhttp://workspaces.gotdotnet.com/shadowfxhttp://channel9.msdn.com/wiki/default.aspx/http://channel9.msdn.com/wiki/default.aspx/Channel9.ShadowfaxWikiChannel9.ShadowfaxWiki
MBI 3.0MBI 3.0http://www.gotdotnet.com/Community/http://www.gotdotnet.com/Community/Workspaces/workspace.aspx?id=49485933-Workspaces/workspace.aspx?id=49485933-6169-4571-987f-7865087b09c66169-4571-987f-7865087b09c6
Shadowfax + MBI 3.0Shadowfax + MBI 3.0http://weblogs.asp.net/hernandlhttp://weblogs.asp.net/hernandl