Arquitectura Orientada a Servicios (SOA)
Definición El acrónimo SOA proviene del inglés Service-Oriented Architecture. Se trata de un modelo de arquitectura que caracteriza el procedimiento para crear y usar los diversos procesos, reunidos en forma de servicios, que configuran un determinado Proceso de Negocio (Un proceso de negocio se puede ver como un conjunto estructurado de tareas, que contribuyen colectivamente a lograr los objetivos de una organización).
Sus funcionalidades están implementadas como servicios reutilizables, independientes y con un grado mínimo de acople. Estos servicios serán invocados mediante interfaces previamente definidas, que deben ser independientes del hardware, del sistema operativo y del lenguaje de programación. Asimismo, la información es habilitada por medio de componentes atómicos e independientes, cuya comunicación se da gracias a mecanismos estandarizados.
Elementos del SOA más importantes para su éxito   Flexibilidad : Se puede reemplazar un servicio sin tener que preocuparse por la tecnología fundamental; la interfaz es lo que importa, y está definida en un estándar universal en servicios Web y XML. Esto es flexibilidad a través de la interoperabilidad. También es la habilidad de asegurar los activos existentes, aplicaciones y bases de datos legales y hacerlos parte de las soluciones empresariales extendiéndolos al SOA en vez de reemplazarlos.
Relevancia para el negocio : SOA es TI expresada a un nivel que tiene un significado importante para la colaboración del negocio y profesionales del área. Sus servicios actuales pueden coordinar unidades de trabajo muy cercanas a las actividades del negocio. Los negocios y las TI se enfocan en la lógica del negocio y la comunicación; finalmente comparten el lenguaje de servicios.
Barreras a vencer para obtener el éxito de SOA Administración : Servicios compartidos es lo principal para utilizar SOA. La habilidad para ensamblar rápidamente aplicaciones o procesos está basada en la disponibilidad de algunos servicios que pueden ser compartidos. Hacer esto, por definición, requiere administración.
Desarrollo cultural : Al utilizar SOA se requiere un cambio significativo en el estilo de programar. Muchos desarrolladores utilizan equipos diferentes para resolver problemas de manera independiente para cada aplicación. En SOA necesitarán escribir aplicaciones para ser reutilizadas en mente, usando códigos existentes, a los cuales se podrá tener acceso constantemente.
Elementos de SOA Esta arquitectura presenta un modelo de construcción sistemas distribuidos en el que la funcionalidad demandada será entregada a la aplicación a través de servicios.
Elementos de SOA: Funciones Transporte : es el mecanismo utilizado para llevar las demandas de servicio desde un consumidor de servicio hacia un proveedor de servicio, y las respuestas desde el proveedor hacia el consumidor. Protocolo de comunicación de servicios : es un mecanismo acordado a través del cual un proveedor de servicios y un consumidor de servicios comunican qué está siendo solicitado y qué está siendo respondido. Descripción de servicio : es un esquema acordado para describir qué es el servicio, cómo debe invocarse, y qué datos requiere el servicio para invocarse con éxito.
Elementos de SOA: Funciones Servicio : describe un servicio actual que está disponible para utilizar. Procesos de Negocio : es una colección de servicios, invocados en una secuencia particular con un conjunto específico de reglas, para satisfacer un requisito de negocio. Registro de Servicios : es un repositorio de descripciones de servicios y datos que pueden utilizar los proveedores de servicios para publicar sus servicios, así como los consumidores de servicios para descubrir o hallar servicios disponibles.
Elementos de SOA: Calidad de servicio Política : es un conjunto de condiciones o reglas bajo las cuales un proveedor de servicio hace el servicio disponible para consumidores. Seguridad : es un conjunto de reglas que pueden aplicarse para la identificación, autorización y control de acceso a consumidores de servicios. Transacciones : es el conjunto de atributos que podrían aplicarse a un grupo de servicios para entregar un resultado consistente. Administración : es el conjunto de atributos que podrían aplicarse para manejar los servicios proporcionados o consumidos.
Tipos de servicios Servicios controladores:  Son los encargados de recibir las peticiones de los clientes y realizar las llamadas necesarias a otros servicios (en la secuencia adecuada) para devolver una respuesta. Es decir, son los servicios encargados de coordinar al resto de servicios. Representan a los procesos de negocio que queremos implementar, ya que un proceso de negocio no es más que un conjunto de tareas ejecutadas en una determinada secuencia para obtener un objetivo.
Servicios de negocio:  Son los servicios que representan una tarea de negocio, y que forman parte de un proceso de negocio. Este tipo de servicios suelen ser poco reutilizables porque están orientados a resolver una tarea muy puntual.
Servicios de utilidad:  Son aquellos servicios que se caracterizan por representar una tarea altamente reutilizable. Existen dos tipos, los servicios orientados al negocio que representan una tarea de negocio altamente reutilizable entre aplicaciones y los servicios tecnológicos encargados de encapsular una determinada tecnología y por tanto altamente reutilizables (ej: servicio de acceso a bases de datos relacionales).
Una aplicación SOA la podemos dividir en tres capas: la capa de recepción de peticiones (servicios controladores),  la capa de tareas (servicios de negocio)  la capa de lógica  reutilizables (servicios   de utilidad)
Principios de la Orientación a Servicios  Estos Principios según Thomas Erl son: Los Servicios deben ser reusables:  Todo servicio debe ser diseñado y construido pensando en su reutilización dentro de la misma aplicación, dentro del dominio de aplicaciones de la empresa o incluso dentro del dominio público para su uso masivo.
Los Servicios deben proporcionar un contrato formal:  Todo servicio desarrollado, debe proporcionar un contrato en el cual figuren: el nombre del servicio, su forma de acceso, las funcionales que ofrece, los datos de entrada de cada una de las funcionalidades y los datos de salida. De esta manera, todo consumidor del servicio, accederá a este mediante el contrato, logrando así la independencia entre el consumidor y la implementación del propio servicio.
Los Servicios deben tener bajo acoplamiento:  Es decir, que los servicios tienen que ser independientes los unos de los otros.  Los Servicios deben permitir la composición:  Todo servicio debe ser construido de tal manera que pueda ser utilizado para construir servicios genéricos de más alto nivel, el cual estará compuesto de servicios de más bajo nivel.
Los Servicios deben de ser autónomos:  Todo Servicio debe tener su propio entorno de ejecución.  Los Servicios no deben tener estado:  Un servicio no debe guardar ningún tipo de información. Esto es así porque una aplicación está formada por un conjunto de servicios, lo que implica que si un servicio almacena algún tipo de información, se pueden producir problemas de inconsistencia de datos.
Los Servicios deben poder ser descubiertos:  Todo servicio debe poder ser descubierto de alguna forma para que pueda ser utilizado, consiguiendo así evitar la creación accidental de servicios que proporcionen las mismas funcionalidades.
Como se puede observar en el gráfico, el objetivo de la Orientación a Servicios es obtener software totalmente reutilizable a través de un conjunto de técnicas y principios como los descritos anteriormente.
Beneficios desde la perspectiva de tecnología Una arquitectura más flexible y robusta. Mejor integración de aplicaciones existentes. Mejora en la integración de datos. Soporte para la gestión de procesos de negocio.  Facilidades para las iniciativas de desarrollo de portales. Aceleración en los tiempos de desarrollo de aplicaciones.
Beneficios desde la perspectiva del negocio Mayor efectividad en la integración con socios de negocio a través del acceso a sus servicios de forma estándar e integración con los propios. Soporte para iniciativas de servicios de usuarios. Modernización de la cadena de suministros. Un uso más efectivo de los servicios de proveedores. Se facilita la contratación externa y la compra de productos a proveedores. Mejor respuesta a cambios en el mercado, a través de una mayor agilidad en el desarrollo y configuración de aplicaciones que soporten el negocio.

SOA

  • 1.
    Arquitectura Orientada aServicios (SOA)
  • 2.
    Definición El acrónimoSOA proviene del inglés Service-Oriented Architecture. Se trata de un modelo de arquitectura que caracteriza el procedimiento para crear y usar los diversos procesos, reunidos en forma de servicios, que configuran un determinado Proceso de Negocio (Un proceso de negocio se puede ver como un conjunto estructurado de tareas, que contribuyen colectivamente a lograr los objetivos de una organización).
  • 3.
    Sus funcionalidades estánimplementadas como servicios reutilizables, independientes y con un grado mínimo de acople. Estos servicios serán invocados mediante interfaces previamente definidas, que deben ser independientes del hardware, del sistema operativo y del lenguaje de programación. Asimismo, la información es habilitada por medio de componentes atómicos e independientes, cuya comunicación se da gracias a mecanismos estandarizados.
  • 4.
    Elementos del SOAmás importantes para su éxito   Flexibilidad : Se puede reemplazar un servicio sin tener que preocuparse por la tecnología fundamental; la interfaz es lo que importa, y está definida en un estándar universal en servicios Web y XML. Esto es flexibilidad a través de la interoperabilidad. También es la habilidad de asegurar los activos existentes, aplicaciones y bases de datos legales y hacerlos parte de las soluciones empresariales extendiéndolos al SOA en vez de reemplazarlos.
  • 5.
    Relevancia para elnegocio : SOA es TI expresada a un nivel que tiene un significado importante para la colaboración del negocio y profesionales del área. Sus servicios actuales pueden coordinar unidades de trabajo muy cercanas a las actividades del negocio. Los negocios y las TI se enfocan en la lógica del negocio y la comunicación; finalmente comparten el lenguaje de servicios.
  • 6.
    Barreras a vencerpara obtener el éxito de SOA Administración : Servicios compartidos es lo principal para utilizar SOA. La habilidad para ensamblar rápidamente aplicaciones o procesos está basada en la disponibilidad de algunos servicios que pueden ser compartidos. Hacer esto, por definición, requiere administración.
  • 7.
    Desarrollo cultural :Al utilizar SOA se requiere un cambio significativo en el estilo de programar. Muchos desarrolladores utilizan equipos diferentes para resolver problemas de manera independiente para cada aplicación. En SOA necesitarán escribir aplicaciones para ser reutilizadas en mente, usando códigos existentes, a los cuales se podrá tener acceso constantemente.
  • 8.
    Elementos de SOAEsta arquitectura presenta un modelo de construcción sistemas distribuidos en el que la funcionalidad demandada será entregada a la aplicación a través de servicios.
  • 9.
    Elementos de SOA:Funciones Transporte : es el mecanismo utilizado para llevar las demandas de servicio desde un consumidor de servicio hacia un proveedor de servicio, y las respuestas desde el proveedor hacia el consumidor. Protocolo de comunicación de servicios : es un mecanismo acordado a través del cual un proveedor de servicios y un consumidor de servicios comunican qué está siendo solicitado y qué está siendo respondido. Descripción de servicio : es un esquema acordado para describir qué es el servicio, cómo debe invocarse, y qué datos requiere el servicio para invocarse con éxito.
  • 10.
    Elementos de SOA:Funciones Servicio : describe un servicio actual que está disponible para utilizar. Procesos de Negocio : es una colección de servicios, invocados en una secuencia particular con un conjunto específico de reglas, para satisfacer un requisito de negocio. Registro de Servicios : es un repositorio de descripciones de servicios y datos que pueden utilizar los proveedores de servicios para publicar sus servicios, así como los consumidores de servicios para descubrir o hallar servicios disponibles.
  • 11.
    Elementos de SOA:Calidad de servicio Política : es un conjunto de condiciones o reglas bajo las cuales un proveedor de servicio hace el servicio disponible para consumidores. Seguridad : es un conjunto de reglas que pueden aplicarse para la identificación, autorización y control de acceso a consumidores de servicios. Transacciones : es el conjunto de atributos que podrían aplicarse a un grupo de servicios para entregar un resultado consistente. Administración : es el conjunto de atributos que podrían aplicarse para manejar los servicios proporcionados o consumidos.
  • 12.
    Tipos de serviciosServicios controladores: Son los encargados de recibir las peticiones de los clientes y realizar las llamadas necesarias a otros servicios (en la secuencia adecuada) para devolver una respuesta. Es decir, son los servicios encargados de coordinar al resto de servicios. Representan a los procesos de negocio que queremos implementar, ya que un proceso de negocio no es más que un conjunto de tareas ejecutadas en una determinada secuencia para obtener un objetivo.
  • 13.
    Servicios de negocio: Son los servicios que representan una tarea de negocio, y que forman parte de un proceso de negocio. Este tipo de servicios suelen ser poco reutilizables porque están orientados a resolver una tarea muy puntual.
  • 14.
    Servicios de utilidad: Son aquellos servicios que se caracterizan por representar una tarea altamente reutilizable. Existen dos tipos, los servicios orientados al negocio que representan una tarea de negocio altamente reutilizable entre aplicaciones y los servicios tecnológicos encargados de encapsular una determinada tecnología y por tanto altamente reutilizables (ej: servicio de acceso a bases de datos relacionales).
  • 15.
    Una aplicación SOAla podemos dividir en tres capas: la capa de recepción de peticiones (servicios controladores), la capa de tareas (servicios de negocio) la capa de lógica reutilizables (servicios de utilidad)
  • 16.
    Principios de laOrientación a Servicios Estos Principios según Thomas Erl son: Los Servicios deben ser reusables: Todo servicio debe ser diseñado y construido pensando en su reutilización dentro de la misma aplicación, dentro del dominio de aplicaciones de la empresa o incluso dentro del dominio público para su uso masivo.
  • 17.
    Los Servicios debenproporcionar un contrato formal: Todo servicio desarrollado, debe proporcionar un contrato en el cual figuren: el nombre del servicio, su forma de acceso, las funcionales que ofrece, los datos de entrada de cada una de las funcionalidades y los datos de salida. De esta manera, todo consumidor del servicio, accederá a este mediante el contrato, logrando así la independencia entre el consumidor y la implementación del propio servicio.
  • 18.
    Los Servicios debentener bajo acoplamiento: Es decir, que los servicios tienen que ser independientes los unos de los otros. Los Servicios deben permitir la composición: Todo servicio debe ser construido de tal manera que pueda ser utilizado para construir servicios genéricos de más alto nivel, el cual estará compuesto de servicios de más bajo nivel.
  • 19.
    Los Servicios debende ser autónomos: Todo Servicio debe tener su propio entorno de ejecución. Los Servicios no deben tener estado: Un servicio no debe guardar ningún tipo de información. Esto es así porque una aplicación está formada por un conjunto de servicios, lo que implica que si un servicio almacena algún tipo de información, se pueden producir problemas de inconsistencia de datos.
  • 20.
    Los Servicios debenpoder ser descubiertos: Todo servicio debe poder ser descubierto de alguna forma para que pueda ser utilizado, consiguiendo así evitar la creación accidental de servicios que proporcionen las mismas funcionalidades.
  • 21.
    Como se puedeobservar en el gráfico, el objetivo de la Orientación a Servicios es obtener software totalmente reutilizable a través de un conjunto de técnicas y principios como los descritos anteriormente.
  • 22.
    Beneficios desde laperspectiva de tecnología Una arquitectura más flexible y robusta. Mejor integración de aplicaciones existentes. Mejora en la integración de datos. Soporte para la gestión de procesos de negocio. Facilidades para las iniciativas de desarrollo de portales. Aceleración en los tiempos de desarrollo de aplicaciones.
  • 23.
    Beneficios desde laperspectiva del negocio Mayor efectividad en la integración con socios de negocio a través del acceso a sus servicios de forma estándar e integración con los propios. Soporte para iniciativas de servicios de usuarios. Modernización de la cadena de suministros. Un uso más efectivo de los servicios de proveedores. Se facilita la contratación externa y la compra de productos a proveedores. Mejor respuesta a cambios en el mercado, a través de una mayor agilidad en el desarrollo y configuración de aplicaciones que soporten el negocio.