Últimamente se habla mucho en el ámbito de la informática sobre SOA. Todos sabemos buscar en Internet y ver qué significan estas siglas: es la traducción del inglés de Arquitectura Orientada a Servicios (Service Oriented Architecture). ¿Pero qué es realmente SOA?
Antes de intentar dar una versión más clara de lo que significa este concepto, profundicemos un poco más en la definición de estas siglas. Desde un punto de vista técnico se trata de una visión de arquitectura software que define la utilización de servicios para dar soporte a los requerimientos del usuario, entendiendo como servicio cualquier función auto-contenida, que acepta una serie de llamadas y devuelve un conjunto de respuestas, ajustadas a una interfaz bien definida. Los servicios pueden también ejecutar unidades discretas de trabajo, como editar y procesar una transacción. Los servicios no dependen del estado de otras funciones o procesos, es decir, son "entes" que no dependen de ningún otro y por ello son altamente reutilizables por nuestro sistema, y quizás lo más importante, por cualquier otro sistema que en principio nada tenga que ver con el nuestro.
También se fomenta la compartición de funciones de aplicación invocables de manera remota a través de las redes.
Otra característica propia de esta filosofía de desarrollo de software es la capacidad de generar información que sea fácilmente explotable por otros entornos de desarrollo distintos, así como la posibilidad de acceder a ella a través de diferentes tecnologías. La inmensa mayoría piensa que a la hora de aprovechar la información que se puede producir con este tipo de arquitectura, se debe hacer uso de la misma a través de servicios Web, pero con esto nos estaríamos limitando, ya que la propia naturaleza de este enfoque de desarrollo permite abstraernos de la tecnología que podamos usar para definir un interfaz que sea fácil de usar por el usuario y que además permita dar la mayor capacidad posible al mismo, es decir, perfectamente podríamos recurrir a Swing (Parte cliente de J2EE), como a .NET, o elegir entre muchas otras. Todo esto es posible porque SOA propone o recomienda el uso de estándares a la hora de generar información, como por ejemplo XML.
Ejemplos de soluciones que utilizan este tipo de arquitectura son Java Enterprise System de Sun Microsystems y Connected Services Framework de Microsoft. Cualquier ventaja de lo expuesto hasta ahora nos da una idea de la potencia que presenta un sistema desarrollado usando esta arquitectura, con respecto a otras metodologías como pueden ser la reutilización, productividad, etc. Aunque quizá la mayor ventaja, según los "gurús" del ámbito informático y empresarial, sea la flexibilidad que conduce a la interoperabilidad entre sistemas con una mayor simplicidad.
Dadas las necesidades de los nuevos sistemas de negocio tan cambiantes, así como la naturaleza de las organizaciones, cada vez más dinámicas y flexibles, los expertos predicen que este tipo de metodología sea quizá (junto con otras), el futuro de las empresas que se dedican al desarrollo de software, tal y como lo expresa Christopher Crowhurst (Vicepresidente y arquitecto principal de Thomson Learning): "No puedo garantizar que sea la manera más barata de construir su próximo producto, pero sí que no existe ninguna manera más económica de construir sus próximos 20 productos". Ésta quizá sea la razón que más mueva a las empresas (abaratamiento de costes, ahorro en definitiva), pero también existen otras como un menor tiempo de desarrollo debido a las ventajas anteriormente expuestas, de la reutilización de código, así como de otros servicios expuestos en la red.
Esto no significa que apostando por este tipo metodología se solucionen todos los problemas que se pueden presentar en nuestra empresa, todo dependerá de las necesidades que debamos cubrir, pero aplicando este tipo de arquitectura se facilitaría la interoperabilidad entre sistemas y más en un ámbito como en el de la Administración Pública, en la que podemos encontrar infinidad de productos para las diversas tareas que se deben acometer en la Administración. Es decir, podríamos usar distintas soluciones para cada área y a la vez, explotar la información generada en una para usarla en otra sin una complicación excesiva. Esto último es lo que proponemos a través de nuestras soluciones basadas en tecnología Java y a través de la generación de información en XML, que permiten una gran facilidad a la hora de poder hacer uso de la misma de una manera flexible y sencilla, siendo compatibles con otros sistemas del mercado sin una excesiva labor de integración.
Finalmente, se puede resumir que lo que se busca con esta arquitectura es básicamente, aumentar la reutilización de los servicios expuestos en la red, así como una explotación más flexible de la información generada con nuestro sistemas, además de una mayor integración entre distintos sistemas (incluso de distintos proveedores) que podemos encontrar en nuestra organización. |