fds arquitectura soa

14
FUNDAMENTOS DE DESARROLLO DE SOFTWARE CARRERA DE INGENIERÍA EMPRESARIAL Y DE SISTEMAS Arquitectura de Aplicaciones Orientada a Servicios (SOA) FUNDAMENTOS DE DESARROLLO DE SOFTWARE

Upload: ronald-edgar-paucar-perez

Post on 09-Nov-2015

240 views

Category:

Documents


1 download

DESCRIPTION

Desarrollo de Software

TRANSCRIPT

arquitecturaCARRERA DE INGENIERÍA EMPRESARIAL Y DE SISTEMAS
Arquitectura de Aplicaciones Orientada a Servicios (SOA)
FUNDAMENTOS DE DESARROLLO
CARRERA DE INGENIERÍA EMPRESARIAL Y DE SISTEMAS
Introduccion a SOA
Fue mencionada por primera vez por Gartner en 1996.
Empieza a sonar en el mercado en el año 2000.
Gartner describe la arquitectura orientada a servicios por primera vez en el 1996, pero el interes en la misma se vio aumentado por la aparicion de los Servicios Web. Aunque necesariamente los Servicios Web no significan SOA y no todas las SOAs estan basadas en Servicios Web la relacion entre las dos es muy importante y se potencian mutuamente. En el 2003, SOA entra al mundo de las TI Empresariales, a traves de los Servicios Web.
Las empresas líderes se enfrentan a la complejidad de sus entornos de IT y de sus aplicaciones con la Arquitectura Orientada a Servicios (SOA), que facilita el desarrollo de servicios comerciales que pueden integrarse y reutilizarse fácilmente—creando una infraestructura de IT verdaderamente flexible y adaptable.
Ademas como todos sabemos las empresas demandan aplicaciones más complejas, que deben ser implantadas en el menor tiempo posible y siempre con el menor coste. Crear estas nuevas aplicaciones en la mayoría de los casos va a requerir funcionalidad ya implementada anteriormente en otros sistemas.
Por este motivo los diseñadores tienen 2 opciones:
Por un lado reutilizar la funcionalidad ya implementada. Lo cual reduce el tiempo de desarrollo pero puede llegar a ser bastante complejo, puesto que cada una se diseñó para integrarse en plataformas y/o tecnologías heterogéneas y en muchos casos incompatibles.
*
CARRERA DE INGENIERÍA EMPRESARIAL Y DE SISTEMAS
Contexto de situación y antecedentes
Evolución de la arquitectura:
Servicios
Abstracción
Vertical
Horizontal
Ecosistema
*
CARRERA DE INGENIERÍA EMPRESARIAL Y DE SISTEMAS
De Objetos a Servicios
1990s
Orientado a Objetos
Orientado a Servicios
Orientado a Componentes
De alguna manera, no es un concepto nuevo si se tiene presente que por alrededor de dos décadas se han construido aplicaciones distribuidas, y el desarrollo de software ha evolucionado significativamente ante la necesidad de bajar costos, reducir tiempos de respuesta y hacer frente a una sociedad globalizada que está conectada a través de la red.
Con respecto a este grafico podemos observar el cambio que se logra con SOA al tener una alta interoperabilidad logramos comunicar, mediante estandares, sistemas heterogeneos, permitiendole a los usuarios un acceso completo a la informacion disponible. Algo que tambien que podemos agregar es a diferencia de la AOO, SOA esta formada por servicios debilmente acoplados y de alta interoperatibilidad y que para comunicarse entre si, estos servicios se basan en una definicion formal independiente de la plataforma y del lenguaje de programacion.
*
CARRERA DE INGENIERÍA EMPRESARIAL Y DE SISTEMAS
SOA - Definiciones
“Infraestructura de alto nivel basada en best practices y patrones para crear soluciones basadas en servicios, de alta cohesión y bajo acoplamiento” (Geniant®).
“Estilo arquitectónico apto para implementar bajo acoplamiento entre agentes. Los agentes son proveedores y consumidores de servicios, que son la unidad de trabajo”. (Hao He).
“Una arquitectura de aplicación en la cual todas las funciones se definen como servicios independientes con interfaces invocables bien definidas, que pueden ser llamadas en secuencias definidas para formar procesos de negocios” (IBM).
*
CARRERA DE INGENIERÍA EMPRESARIAL Y DE SISTEMAS
SOA como Estilo de Arquitectura
Componente: Servicio
Configuración: Distribuido
Constraint: Bajo acoplamiento, independencia de modelo de programación, independencia de plataforma, transporte, interfases basicas y protocolo por acuerdo de industria
*
CARRERA DE INGENIERÍA EMPRESARIAL Y DE SISTEMAS
Principales conceptos
Mensajes
Durante el desarrollo de sistema con arquitectura SOA nos encontraremos con ciertos conceptos basicos que debemos conocer.
Servicio: En SOA un Servicio es un componente con el que interactuamos intercambiando mensajes. En SOA un Sistema equivale a un conjunto de Servicios operando conjuntamente con algun fin especifico.
Proveedores y Consumidores: Abstraccion muy comun en escenarios MOM(Message Oriented Middleware) que en SOA se presenta como un concepto fundamental.
Contrato de Uso: Las operaciones que expone (OperationContract). Los datos que recibe y que retorna cada operacion (Data Contract). El contrato de datos NO es compatible con conceptos del mundo OO. Solo intercambiamos datos (NO comportamiento). No podemos aplicar polimorfismo.
Mensajes: Representan el mecanismo de comunicacion con el servicio.
*
CARRERA DE INGENIERÍA EMPRESARIAL Y DE SISTEMAS
Componentes de SOA
En este slide vemos las partes principales que conforman SOA.
Servicios: Entidades lógicas - Contratos definidos por una o más interfaces públicas. Son autocontenidos e independientes entre si, con una tarea claramente definida.
Service Provider: Entidad de software que implementa una especificación de servicio.
Service Consumer: Entidad de software que llama a un service provider. Tradicionalmente se lo llama “cliente”. Puede ser una aplicación final u otro servicio.
Service Locator: Tipo específico de service provider que actúa como registry y permite buscar interfaces de service providers y sus ubicaciones.
*
CARRERA DE INGENIERÍA EMPRESARIAL Y DE SISTEMAS
Principios de SOA
Composicion
Autonomia
Un problema con el que nos podemos encontrar a la hora de construir una aplicación SOA es si la aplicación construida realmente es una aplicación "SOA Compliant". Para comprobar si una aplicación lo es, la mejor forma de hacerlo es chequeando que la aplicación cumpla con los Principios de la Orientación a Servicios
Contrato Formal: Todo servicio debe proporcionar un contrato en el cual figuren: el nombre del servicio, su forma de acceso, las funcionalidades que ofrece, los datos de entrada de cada una de las funcionalidades y los datos de salida. De esta manera, todo consumidor del servicio accedera a este mediante al contrato, logrando asi la independencia entre el consumidor y la implementacion del propio servicio.
Bajo Acoplamiento: Minimiza la dependencia, es decir que los servicios tienen que ser independientes los unos de los otros. Para lograrlo es que cada vez que se vaya a ejecutar un servicio, se accedera a el a traves del contrato, logrando asi la independencia entre el servicio que se va ejecutar y el que lo llama. Si conseguimos este bajo acoplamiento, entonces los servicios podran ser totalmente reutilizables.
Composicion: Todo servicio debe ser construido de tal manera que pueda ser utilizado para construir servicios genericos de mas alto nivel, el cual estara compuesto de servicios de mas bajo nivel.
Autonomia: Proporciona la independencia del servicio y por lo tanto debe tener su propio motor de ejecucion y asi nos podemos asegurar que podra ser reutilizable desde el punto de vista de la plataforma de la ejecucion.
Sin Estado: Un servicio no debe guardar ningun tipo de informacion, debido a que puede producirse problemas de inconsistencia de datos. Un servicio solo debe contener logica y que toda la informacion este almacenada en algun sistema de informacion del tipo que sea.
Descubrimiento: Evita duplicidades de servicios que proporcionen las mismas funcionalidades.
Reusabilidad: Todo servicio debe ser disenado y construido pensando en su reutilizacion dentro de la misma aplicacion, dentro del dominio de aplicaciones de la empresa o incluso dentro del dominio publico para uso masivo.
*
CARRERA DE INGENIERÍA EMPRESARIAL Y DE SISTEMAS
Visión de Arquitectura Orientada a Servicios (SOA)
Requerimientos
Arquitectónicos
Heterogeneidad
Escalabilidad
Disponibilidad
Distribución
Cluster de
Servidores de
CARRERA DE INGENIERÍA EMPRESARIAL Y DE SISTEMAS
Relaciones de SOA con Web Services
Web services: Diferentes definiciones en W3C Web Services Architecture Working Group
W3C: “Una aplicación identificada por un URI, cuyas interfaces y binding se pueden definir, describir y descubrir mediante artefactos XML, que soporta interacciones usando mensajes basados en XML via protocolos de web”
SOA es históricamente anterior (no por mucho)
Un web service es SOA si:
Las interfaces se basan en protocolos de web (HTTP, SMTP, FTP)
A excepción de los attachments, los mensajes se basan en XML
*
CARRERA DE INGENIERÍA EMPRESARIAL Y DE SISTEMAS
Relaciones de SOA con Web Services
SOA es más amplio. Los web services son sólo una interface programática en conformidad con los protocolos WS-*
Puede haber SOA sin WS
Los web services proporcionan independencia de plataforma, bajo acoplamiento, auto-descripción y descubrimiento
*
CARRERA DE INGENIERÍA EMPRESARIAL Y DE SISTEMAS
Beneficios de SOA
Mas flexible
Mas escalable
Mas agil
Reduccion de riesgos
Reducción del tiempo de desarrollo: Los servicios SOA son fácilmente reusables y pueden ser ensamblados rápidamente. Gracias a la reusabilidad los tiempos de desarrollo de las aplicaciones se reducen drásticamente. Puesto que generalmente en las empresas la mayor parte de procesos de negocio ya estaban implementados, es mucho más rápido reutilizarlos que volver a crearlos.
Reducción del costos de desarrollo y mantenimiento: La reducción del tiempo de desarrollo lleva consigo la reducción del coste de desarrollo. Además los Servicios reducen la complejidad interna de las aplicaciones ya que la funcionalidad está separada en bloques independientes más pequeños, por ende el tiempo de mantenimiento se reduce así como los costos.
Más flexible y escalable: El crecimiento de la empresa ya no afecta a toda la aplicación, basta con añadir o modificar los módulos de funcionalidad (servicios) necesarios.
Más ágil: Debido al débil acoplamiento entre las interfaces de los distintos servicios se consiguen aplicaciones más ágiles debido al entorno en continuo cambio en el que están inmersas las empresas. Teniendo asi la capacidad de sobrevivir a cambios evolutivos en la estructura e implementación de las partes internas de cada servicio que compone toda la aplicación.
Mayor calidad en los servicios y reducción de riesgos: La reutilización de servicios es segura y fiable puesto que ya han sido probados a través de numerosos clientes que acceden a ellos y en muchos casos mejorados. Con lo que se aumenta la calidad del servicio y se reducen los riesgos.
*
CARRERA DE INGENIERÍA EMPRESARIAL Y DE SISTEMAS
Conclusiones
SOA – El estilo de arquitectura más importante del momento, en desarrollo simultáneo en la academia y la industria
Cambio histórico en modelo de diseño, de programación y de despliegue
Cambios sustanciales en modelo de negocios
Empresas ofrecen servicios a sus competidores
ISV ofrecen servicios a otros ISVs
Adoptar SOA NO es dificil…si aplicamos los conceptos y las practicas correctas.
Recuerden: SOA es un estilo de arquitectura
*