|
Últimamente estamos escuchando palabras esotéricas y misteriosas como SOA, WebServices, WSDL o ESB. Aunque no lo parezca estamos en una pequeña revolución, cambio de paradigma, salto cualitativo o como queráis llamarlo. Pensemos en un conjunto de aplicaciones creadas por nuestra fundación y por otras empresas. Todas ellas en sistemas operativos distintos, modelos de datos diferentes, protocolos propios y lenguajes de programación variopintos. ¿Cómo podemos integrar todas estas aplicaciones? Y lo más importante: ¿cuanta pasta nos va a costar?
Como ya sabemos, añadir nuevas extensiones a aplicaciones existentes suele suponer un gran coste de tiempo y dinero, más aún si se desean añadir aplicaciones de terceros. Una aplicación que desee crecer en un futuro debería obviar características restrictivas y partir de un buen diseño que permita la extensibilidad y la comunicación con el mayor nivel de abstracción posible. El desarrollo en capas permite una separación lógica entre varios modelos abstractos (datos, negocio, presentación) permitiendo que el desarrollo de las capas se pueda realizar de manera independiente, permitiendo por ejemplo, evitar la mezcla de código. La separación en capas permite realizar cambios importantes en cada una de las capas sin modificar las otras. Sin embargo, esta arquitectura tiene el inconveniente de que la integración entre aplicaciones diferentes puede ser difícil y costosa. Debido al auge de Internet y a la separación física (en máquinas diferentes) de aplicaciones en sistemas operativos diversos y con distintas maneras de comunicación se hace complicado que esas aplicaciones puedan trabajar juntas. La manera para integrar todas estas aplicaciones entre sí es crear servicios que puedan interoperar entre ellas. Decimos que existe alta acoplación cuando los sistemas dependen entre sí (tienen que tener los mismos formatos, mismo lenguaje de programación, mismo sistema operativo...) y al contrario, hablamos de baja acoplación cuando existe más independencia entre estos elementos. Se hace necesario, pues, definir una arquitectura que tenga las ventajas de la baja acoplación y así poder integrar muchos sistemas en uno sólo. La arquitectura en capas se complementa entonces con la arquitectura orientada a servicios (SOA), ya que se hace necesaria una forma de comunicación eficiente y escalable, independientemente del lenguaje de programación y plataforma de cada una de las aplicaciones. Es necesario entonces desarrollar los servicios que se presentan y son utilizados. Un servicio es una función que acepta una llamada y devuelve una respuesta mediante una interfaz bien definida. La manera en la que un servicio procesa internamente la llamada para producir la respuesta es independiente de la definición del servicio. La arquitectura orientada a servicios proporciona, además, la posibilidad de orquestación de los servicios, esto es, secuenciación, orden y control de los servicios, añadiendo la lógica de datos necesaria para el proceso. Los elementos básicos que conforman SOA son: 1. Proveedores de servicios 2. Consumidores de servicios 3. Bus de Servicios Empresariales. Y como en toda buena serie de televisión, os dejamos con la miel en los labios. Ahora empieza lo interesante, y os lo iremos contando en próximos posts. Como pequeña conclusión personal pensad que SOA no es un conjunto de palabros raros inventados por señores serios con corbata. SOA ha venido aquí para quedarse, y no os convendría quedaros atrás. Y sí, suena a topicazo. Pero no lo es. Lo juro.
|