Arquitecturas Orientadas a Servicios (SOA) TEMA III: Arquitecturas Orientadas a Servicios Tema 3 Concepto y Estndares 1 2 Una Arquitectura Orientada a Servicios (Service-oriented Architecture - SOA) proporciona mtodos, integracin, infraestructura para desarrollar aplicaciones inter-operables basadas en servicios (Web) y en procesos de negocio. Concepto y Ejemplos de SOA Las piezas b Las piezas b sicas son los servicios sicas son los servicios Servicio: funci Servicio: funci n en la red bien definida que consta de una n en la red bien definida que consta de una interfaz procesable y cuya implementaci interfaz procesable y cuya implementaci n es n es reemplazable reemplazable Para buscar un servicio con el cual conectarse, se puede Para buscar un servicio con el cual conectarse, se puede consultar a otro servicio bien conocido que contiene consultar a otro servicio bien conocido que contiene interfaces interfaces Los protocolos de acceso a los servicios usan protocolos Los protocolos de acceso a los servicios usan protocolos abiertos y estandarizados (HTTP, TCP/IP) como abiertos y estandarizados (HTTP, TCP/IP) como transporte (para servicios de Internet) transporte (para servicios de Internet) Mejora el modelo cliente Mejora el modelo cliente- -servidor en sistemas distribuidos servidor en sistemas distribuidos para facilitar la interoperabilidad para facilitar la interoperabilidad Concepto y Ejemplos de SOA 3 Concepto y Ejemplos de SOA 4 WS-Security WS-ReliableMessaging WS-Coordination, WS-AtomicTransaction, WS-BusinessActivity Source: [Ferguson] Pila de servicios Web Concepto y Ejemplos de SOA 5 Principios de diseo tcnico de SOA Cada servicio implementa una funcin de negocio discreta Los servicios y sus implementaciones deben ser reutilizables Los servicios comparten un contrato formal: interfaz de servicio (SLA) Los servicios estn poco acoplados entre ellos Composicin: se pueden ensamblar servicios para obtener otros ms complejos Autnomos: cada servicio debe ser capaz de funcionar de forma independiente Sin estado: el uso de un servicio no debe depender de usos previos Transparentes de localizacin: funcionan independientemente de quin y dnde los usan Concepto y Ejemplos de SOA 6 Definicin de Arquitectura Orientada a Servicios Entorno de aplicaciones capaz de descomponer aplicaciones comunes de negocio y dividirlas en funciones individuales y procesos servicios. SOA permite construir, desplegar e integrar estos servicios independientemente de las aplicaciones y plataformas sobre las que se ejecutan. IBM Enfoque de organizar la tecnologa de informacin en el que los datos, lgica y recursos de infraestructura se acceden mediante mensajes entre interfaces de red. MS Conjunto de componentes que pueden ser invocados, cuyos descripciones de interfaces pueden publicarse y descubrirse. W3C Concepto y Ejemplos de SOA 7 Atributos de calidad para SOA Interoperabilidad: Web-Services Interoperability Organization WS-I Fiabilidad: WS-Reliability, WS-ReliableMessaging Disponibilidad: Service Level Agreement (SLA) Usabilidad Seguridad: WS-Trust, WS-Federation Rendimiento Escalabilidad: distribucin de carga en servidores Extensibilidad: aadir servicios adicionales Adaptabilidad: diferentes configuraciones Contabilidad Facilidad de operacin y despliegue: automatizacin de operaciones Concepto y Ejemplos de SOA 8 Arquitectura corporativa SOA Nivel de infraestructura de servicios: funciones de uso general Nivel de servicios de negocio: workflow Composiciones de servicios: tareas de negocio en pasos simples Nivel de orquestacin o nivel de procesos de negocio: BPEL Registro de servicios Nivel de mensajera: ESB, soporte para mensajes Gestin de servicios: polticas de carga, seguridad, rendimiento Concepto y Ejemplos de SOA 9 Fuente: JavaWorld SOA Genrico Concepto y Ejemplos de SOA 10 Concepto y Ejemplos de SOA 11 De BPM y EA a SOAD Los mtodos clsicos (BPM, EA, OOAD) no son suficientes para modelar: Servicios,Flujos, Componentes realizando servicios. BPM carece de semntica (no como BPEL). EA clsicos (TOGAF) no proporcionan vista de procesos y/o servicios. Concepto y Ejemplos de SOA 12 OOAD versus SOAD El nivel de granularidad es distinto en OOAD (nivel de clase) y SOAD (nivel de servicio). La herencia OO crea dependencias muy fuertes comparadas con el bajo acoplamiento de los servicios Web. No hay soporte para herencia a travs de plataformas. Concepto y Ejemplos de SOA 13 Jerarqua y elementos SOAD Servicios diferentes colaborando (orquestration). SOAD proporciona procesos de negocio y notacin para dichos procesos. SOAD proporciona roles (arquitecto, analista). SOAD proporciona principios y factores de calidad (flexibilidad, bajo acoplamiento, stateless). SOAD debe proporcionar servicios reutilizables. Concepto y Ejemplos de SOA 14 Ejemplo de proceso de negocio (orden de trabajo en automocin) SERVICIOS FLUJO DE TRABAJO Concepto y Ejemplos de SOA 15 SOMA (Service-oriented modeling and architecture) El modelo conceptual de la figura define la interaccin entre 3 entidades: el proveedor de servicios, el consumidor del servicio y el broker del servicio el cual mantiene su registro. Concepto y Ejemplos de SOA 16 SOMA (Service-oriented modeling and architecture) Los estilos arquitectnicos que definen una SOA se basan en bajo acoplamiento, servicios centrados en aspectos de negocio, flexibilidad, y separacin entre descripcin, implementacin y biding. SOA es una arquitectura IT corporativa y escalable para soportar recursos bajo demanda que proporcionen valor de negocio. Concepto y Ejemplos de SOA 17 SOMA (Service-oriented modeling and architecture) Arquitectura SOA en niveles para servicios compuestos y procesos de negocio. La relacin entre servicios y componentes es tal que los componentes de negocio de grano grueso hacen que los servicios sean responsable de proporcionar tal funcionalidad y de mantener la calidad del servicio. La comunicacin y la integracin de la arquitectura se realiza mediante un Enterprise Service Bus (ESB) (Jazz.net, IBM) Concepto y Ejemplos de SOA 18 SOMA (Service-oriented modeling and architecture) Identificacin de servicios en componentes antiguos Decisiones de diseo arquitectnicas en cada nivel de la SOA deben reflejar el uso de servicios y su composicin. Mayor funcionalidad para servicios compuestos y pequea funcionalidad para servicios individuales. SOA es ms estratgico y centrado en el negocio mientras que el uso de servicios Web es ms tctico. Concepto y Ejemplos de SOA 19 Mtodo SOMA (Service-oriented modeling and architecture) Identificacin de servicios: Identificar servicios de negocio en reas funcionales, subsistemas y procesos (top-down), mientras que la solucin bottom-up examina legacy assets como potenciales servicios candidatos. Clasificacin de servicios: Los servicios identificados se organizan en una jerarqua para determinar servicios compuestos y en que nivel o capa acta cada servicio. Asignacin de servicios: Que servicios van a que subsistema y a cada capa de la arquitectura SOA. Realizacin de servicios: Implementacin del servicio, wrapper de legacy, o externalizacin Concepto y Ejemplos de SOA 20 Arquitectura de integracin de Jazz (JIA) JIA define un conjunto de servicios denominados Jazz Foundation Services (JFS), herramientas para utilizarlos y para crear servicios propios y utilizando interfaz RESTful. JIA es una arquitectura de referencia, un API, servicios comunes y herramientas para componer elementos. A nivel de implementacin, el ncleo de JIA es el Jazz Team Server (JST) el cual implementa los JFS descritos en JIA. Herramientas para exponer datos y servicios. Un API REST que proporciona: URLs estables para los recursos de datos, representaciones documentadas de los recursos de datos, un protocolo y operaciones basados en mtodos del protocolo HTTP para manipular los datos. Servicios Web orientados a recursos mediante mtodos POST y GET entre otros. Concepto y Ejemplos de SOA 21 Arquitectura de integracin de Jazz (JIA) Cada Jazz Team Server proporciona Foundation Services que permiten a un conjunto de herramientas trabajar de forma conjunta como si fueran un nico servidor lgico. JTS utiliza servicios Web RESTful y las interacciones se realizan mediante el API REST. JIA permite a nico JTS tener mltiples servidores trabajando con clientes, donde cada servidor es responsable de administrar sus propias URLs y responder a las peticiones de los clientes. Concepto y Ejemplos de SOA 22 Arquitectura de integracin de Jazz (JIA) Un nico JTS puede consistir en uno o varios servidores que actan de manera conjunta. Los JFS suelen alojarse en un nico servidor. Las extensiones se suelen implementar como aplicaciones Web (ficheros WAR empaquetados) y posteriormente desplegados. Algunas extensiones JTS pueden requerir su propio servidor de manera separada (herramientas de Rational que aaden funcionalidad extra). Concepto y Ejemplos de SOA 23 Caractersticas de un ESB Comunicacin mediante mensajes sobre el cual se define una capa de abstraccin para integrar y proporcionar servicios Un ESB no es una SOA pero proporcionan caractersticas para implementarla Componente HTTP Herramientas de control de flujo BPEL (Business Process Execution Language) Scripting Herramientas de transformacin XML XSLT (eXtensible Stylesheet Language Transformations) Integracin con servidores J2EE Concepto y Ejemplos de SOA 24 Integracin de elementos en SOA Concepto y Ejemplos de SOA 25 ESB Concepto y Ejemplos de SOA 26 SAP NetWeaver BPM: Configuracin SOA para invocar servicios Web que se publican en un Service Registry y simplificar la configuracin y uso de WS. Los WS se importan dentro del SAP NetWear Developer Studio antes de ser registrados. 27 Middleware para SOA Ejemplo con SAP NetWeaver BPM 28 Middleware para SOA Oracle/SOA Service Oriented Architecture Application Server Enterprise (BPEL Process Manager, Business Activity Monitoring, XML Publisher , Service Registry, SOA Suite for Oracle Middleware) ORACLE SOA Suite Web Center (Oracle Web Logic Server, soporte BPEL for long-running processes, Capa intermedia con Oracle B2B, XML, Enterprise Service Bus, etc.) 29 Middleware para SOA ORACLE Composite Editor de un proyecto SOA 30 Middleware para SOA IBM WebSphere Application Server Soporte para: Java 2 EE 5 Servicios Web Web 2.0 BPEL WS-Security Enterprise Architect kit para SOA Enterprise service Bus para virtualizar servicios Conectividad a servicios de terceros Interoperabilidad con SOAP 31 Middleware para SOA 32 Arquitecturas Cloud Es un paradigma que permite ofrecer servicios de computacin en la red. A diferencia del Grid computing, ms enfocado a compartir recursos, Cloud computing comparte servicios y en los que los recursos hardware se encuentran virtualizados. La virtualizacin de recursos fsicos es uno de los puntos fuertes de la filosofa Cloud para ofrecer stos bajo demanda. Puede existir un pago por uso de servicios. 33 Arquitecturas Cloud Tipos de Cloud (modelos de despliegue) Cloud pblico: Un proveedor de servicios ofrece recursos sobre Internet como por ejemplo aplicaciones y almacenamiento. Cloud privado: Es una infraestructura Cloud administrada por un organizacin pero los recursos pueden pertenecer a la propia organizacin o externos. Cloud comunitario: Comparten infraestructuras entre diferentes organizaciones pertenecientes a una comunidad especfica y administradas Internamente o por un tercero. Cloud hbrido: Es una composicin de dos o ms Cloud de los tipos anteriores que constituyen una entidad nica. 34 Arquitecturas Cloud Capas en Cloud 35 Arquitecturas Cloud Software para Cloud 36 Arquitecturas Cloud SOCCA (Service-oriented Cloud Computing Architecture) Capa 1 Capa 2 Capa 3 Capa 4 37 Arquitecturas Cloud SCA: Service Component Architecture SCA es un modelo de programacin para abstraer funciones de negocio como si fueran componentes y utilizarlos para ensamblar soluciones de negocio. Los componentes SCA ofrecen servicios y como interactan entre si. Una aplicacin SCA se construye con uno o varios componentes. Los componentes SCA se pueden programar en diferentes lenguajes. SCA fomenta la prctica de SOA para crear aplicaciones Cloud. Plataforma Apache Tuscany (OASIS Open SCA) 38 Arquitecturas Cloud 39 Arquitecturas Cloud <composite name="ExampleComposite" ...> <component name="Component1"> ... </component> <component name="Component2"> ... </component> <component name="Component3"> ... </component> </composite> El Service Component Definition Language (SCDL) es un fichero XML que define una composicin SCA, a modo de fichero de configuracin para describir los componentes y como se interrelacionan 40 Arquitecturas Cloud Cada componente implementa una lgica que se expone como uno o ms servicios. Un servicio (cheurn verde) ofrece una serie de operaciones que son accesibles por el cliente. Un componente puede usar servicios de otros componentes (cheurn morado) que pertenecen a su dominio o a otro y se denominan referencias. Una referencia es una interfaz a operaciones que el componente necesita. Un componente puede definir una o varias propiedades (cuadrado amarillo) que contienen un valor que debe ser ledo por el componente desde el fichero SCDL. Los servicios y las referencias comunican un componente SCA con otro software (binding). Componente SCA Componente SCA Aplicacin no SCA 41 Arquitecturas Cloud <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="http://helloworld" xmlns:hw="http://helloworld" name="helloworldws"> <component name="HelloWorldServiceComponent"> <implementation.java class="helloworld.HelloWorldImpl" /> <reference name="compo1Service" target="ComponentOne" /> <reference name="compo2Service" target="ComponentTwo" /> <service name="HelloWorldService"> <interface.wsdl interface="http://helloworld#wsdl.interface(HelloWorld)" /> <binding.ws uri="http://localhost:8085/HelloWorldService"/> </service> </component> <component name="ComponentOne"> <implementation.java class="helloworld.Compo1Impl"/> </component> <component name="ComponentTwo"> <implementation.java class="helloworld.Compo2Impl"/> </component> </composite> OSGi Alliance: http://www.osgi.org Consorcio para la interoperabilidad de aplicaciones y servicios basados en una plataforma de integracin de componentes. OSGi (Open Services Gateway initiative) proporciona: Especificaciones Implementaciones de referencia Suites para testing Certificacin La adopcin de plataformas basadas en componentes reduce el time-to-market y los costes de desarrollo ya que permite la integracin de mdulos pre-construidos y pre-testeados. 42 OSGi OSGi Framework El OSGi framework se divide en niveles L0. Entorno de ejecucin: Especificacin en Java 2. L1: Mdulos: Define las polticas de carga de clases sobre Java. Aade modularizacin y facilita el despliegue de sistemas. L2: Ciclo de vida: Aade wrappers que pueden ser instalados dinmicamente y manejar mdulos en runtime. L3: Registro de servicios: Esta capa aade un registro de servicios para proporcionar cooperacin entre los wrappers en ejecucin. Seguridad Java 2 43 OSGi Servicios del OSGi Framework Servicios estndar: Definidos encima del Framework OSGi Alliance soporta diversos servicios que se ofrecen mediante interfaces Java. La interfaz se puede describir con los wrappers (bundles) y registrar con el Service Registry. Este concepto es similar a las arquitecturas SOA, pero la diferencia principal es que los servicios Web requieren una capa de transporte que suele ser ms lenta que las invocaciones directas en OSGi. Servicios del framework: Proporcionan servicios para administracin y permisos, gestin de paquetes, inicializacin y soporte para URL. Servicios del sistema: Proporcionan funcionalidad horizontal necesaria en cualquier sistema, como son: Logs, configuracin, gestin de dispositivos, gestin de usuarios, componentes en ejecucin, despliegue, etc. 44 OSGi Servicios de protocolos: Define un nmero de servicios que mapean a protocolos externos al OSGi service, como son: HTTP, Universal plug and play (UPnP) y DMT admin (Device Management Tree) para especificar la gestin de dispositivos mviles y proporcionada por el Open Mobile Alliance (OMA). Servicios miscelneos: Wire admin service: Conecta diferentes servicios definidos en ficheros de conf. XML parser service: compatible con JAXP Initial provisioning Foreign application access Servicios del OSGi Framework 45 OSGi Arquitectura OSGi Bundles: Componentes implementados por desarrolladores Services: Conecta los bundles dinmicamente y ofrece un modelo publish-find-bind para plain old Java objects (POJO) Life-Cycle: API para instalar y actualizar bundles Modules: Define como un bundle importa y exporta cdigo Security: Soporta los aspectos de seguridad Execution Environment: Define los mtodos y clases disponibles para una plataforma especfica. 46 OSGi Software para OSGi Apache Felix (Implementa la plataforma de servicios OSGi R44) http://felix.apache.org/site/index.html Eclipse Equinox: http://www.eclipse.org/equinox/ Knopflerfish OSGi (Plataforma OSS): http://www.knopflerfish.org/ AQute Snippets (Snippets: ejemplos de codigo OSGi): http://www.aqute.biz/Snippets/HomePage 47 OSGi http://en.wikipedia.org/wiki/Service-oriented_architecture http://www.soapatterns.org/ http://www.ibm.com/developerworks/library/ar-archtemp/ http://www.ibm.com/developerworks/library/ws-soa-design1/ http://www.bpmi.org/ http://www.opengroup.org/architecture/togaf/ http://www.ibm.com/developerworks/webservices/library/ws-soad1/ http://www.webservices.org/ http://jazz.net/about/about-jazz-architecture.jsp http://es.wikipedia.org/wiki/Java_Business_Integration#Implementaciones_JBI http://www.osgi.org/About/HowOSGi Web Services Architecture http://www.w3.org/TR/2002/WD-ws-arch-20021114/ NexOF-RA http://www.nexof-ra.eu/ Cloud http://www.keithpij.com/Home/tabid/36/EntryID/27/Default.aspx Referencias