Una SOA es un estilo de arquitectura basado en la definición de servicios reutilizables con interfaces públicas bien definidas que exponen las funcionalidades requeridas. Existen proveedores de servicios y consumidores de servicios que interactúan en forma desacoplada para realizar los procesos del Negocio identificados.
Una SOA está basada en cuatro abstracciones básicas: application frontend, servicios, repositorio de servicios y bus de servicios. Como primer acercamiento a estos conceptos se puede decir que las application frontend son dueñas de los procesos del Negocio, y los servicios proveen funcionalidad del Negocio para que las application frontend y otros servicios las utilicen.
Un servicio consiste en una implementación que provee lógica del Negocio y datos, un contrato de servicio que especifica la funcionalidad, el uso y las restricciones para un cliente del servicio, y una interface del servicio que expone fisicamente la funcionalidad. Por último, el repositorio de servicios almacena los contratos de servicio de los servicios individuales de una SOA, y el bus de servicios interconecta las application frontend y los servicios.
Los servicios representan grupos lógicos de operaciones relacionadas con algún concepto del Negocio, y los procesos del Negocio se realizan en secuencias definidas de invocaciones a servicios mediante "orquestación de servicios" o "coreografías de servicios" según si el control del proceso de Negocio se encuentra en la propia Organización o es compartido por varias Organizaciones que acuerdan sobre la realización de dicho proceso. Un Business Process Management System (BPMS) es el aliado ideal para definir esta secuencia en un workflow desde el cual invocar los distintos servicios necesarios para cumplir con el proceso establecido.
Los problemas de heterogeneidad, interoperabilidad y requerimientos cambiantes, son solucionados por una SOA que provee una plataforma para la construcción de aplicaciones basadas en servicios con las características de bajo acoplamiento, ubicación transparente de servicios e independencia de protocolos. Un consumidor de servicios no debe preocuparse por un servicio particular con el que comunicarse debido a que la infraestructura por debajo, el bus de servicios, puede hacer la elección en representación del consumidor. La infraestructura esconde la mayor cantidad de detalles técnicos posible al consumidor, y diferentes tecnologías de implementación como J2EE o .NET no afectan a los usuarios de una SOA. También debe ser posible sustituir una implementación de un servicio por una mejor si la hay disponible, con mejores características de calidad de servicio.
|