Cada cierto tiempo, en las ciencias de la informática aparecen conceptos, muchas veces encapsulados en una aplicación, que tienen tanto sentido que son capaces de cambiar la forma en que hacemos los negocios. SOA, o Arquitectura Orientada a Servicios, es un concepto con las características mencionadas, que por años fue impracticable debido a las limitaciones de las tecnologías existentes.
Para poder comprender los alcances de SOA, debemos clarificar primero qué entendemos por el concepto de servicio: un servicio es un conjunto de funcionalidad accesible a través del intercambio de mensajes basados en protocolos de comunicación, los cuales corresponden a lo que en informática se conoce como protocolos abiertos, esto es, utilizables por distintos proveedores de tecnología. SOA es un diseño que guía la creación y uso de servicios de negocios y es, a la vez, la infraestructura que facilita el intercambio de datos y procesos, independientemente del lenguaje de programación o sistema operativo usados.
Pensemos por ejemplo, en una funcionalidad muy común en las empresas: la validación del RUT. En algunas aplicaciones, este algoritmo está escrito múltiples veces y en lenguaje de programación, dentro del código de las aplicaciones (‘hardcoded’), debiendo reescribirse las veces que sea necesario; en otras, el algoritmo está incorporado en la aplicación en forma estática, desde una biblioteca o ‘library’. En el mundo de SOA, la aplicación se comunica con el servicio de validación del RUT en forma dinámica. Esto significa que el servicio no existe dentro de una librería o del código de la aplicación, sino que en forma independiente y accesible a través de distintos mecanismos, tales como Internet.
SOA es una herramienta clave en el momento en que una compañía decide readaptar o modificar sus procesos de negocios. Por ejemplo, ¿qué pasaría si el Estado decide cambiar el algoritmo de validación de RUT, creando por ejemplo, un nuevo número universal para los ciudadanos del Mercosur?
Muchos programadores de aplicaciones pre-SOA gastarían muchísimo tiempo y dinero recodificando o recomponiendo aplicaciones. Mientras, en el mundo de SOA basta que el dueño del servicio de validación de RUT cambie el algoritmo para que todas las aplicaciones que lo usan ya estén modificadas a través de los web servers. Este concepto es algo muy sutil pero muy poderoso: con SOA podemos escribir aplicaciones que usan funcionalidades entregadas como servicios, pero que a su vez no sean dependientes de cómo están implementadas dichas funcionalidades. Esto se traduce en: aplicaciones dinámicas, flexibles y adaptables para resistir cambios.
Una Arquitectura Orientada a Servicios bien creada debería permitir descomponer las funcionalidades o pasos de los procesos de las empresas, para que sea más fácil adaptarse a las nuevas formas de hacer negocios. Y justamente ése es uno de los desafíos que tienen los gerentes de informática hoy en día. Después de haber invertido en las diferentes aplicaciones de negocios (ERP, CRM, SCM, sistemas de nicho o hechos en casa u otras), ellos se dan cuenta de que los procesos actuales de las organizaciones se extienden más allá de los límites naturales de dichas aplicaciones.
Es este enfoque hacia los procesos una de las razones por las cuales SOA está generando tanto interés. Los conceptos ‘análisis’, ‘optimización’ y ‘gestión de procesos de negocios’ (Business Process Management o BPM) van de la mano de SOA. El primer paso es describir y formalizar los procesos, sobre todo aquéllos que se comunican entre un sistema y otro, y los que tienen pasos manuales. Luego, éstos se analizan para ser optimizados.
¿Cuál es el camino a SOA?
SOA es una nueva forma de mirar la relación entre procesos de negocios y aplicaciones.
Los dueños de los procesos siempre van a ser los expertos de las áreas funcionales y los ejecutivos de TI los dueños de las aplicaciones.
Por esto, es muy importante educar a los expertos de las áreas funcionales y de TI, del potencial impacto de SOA en la forma en que la empresa hace los negocios, y en las aplicaciones que soportan dichos procesos.
Es necesario fomentar una estructura organizacional que permita una conversación fluida entre los expertos funcionales y los ejecutivos de TI, además de formalizar los procesos de gestión de cambios o ‘change management’.
Otro tema no menor en una arquitectura basada en servicios, es la necesidad de contar con datos consistentes a través de todas las aplicaciones o, por lo menos, tener una forma para relacionar datos.
Por ejemplo, ¿qué pasa cuando el artículo tiene un código ABC1 en un sistema y XYZ9 en otro? ¿Cómo el servicio sabrá que ABC1 es idéntico a XYZ9? La gestión de datos maestros será otra pieza fundamental en la arquitectura.
La implementación de SOA no es algo que se hace de un día para el otro. Se tiene que planificar bien.
Algunos de los criterios de implementación deberían ser buscar procesos con un tiempo o costo de ejecución muy alta, que cambien con regularidad, y procesos donde haya mucha intervención del ser humano, simplemente para pasar datos de un sistema a otro.
La arquitectura orientada a servicios ya es un hecho.
En una encuesta realizada por el Centro de Estudios de Tecnologías de Información de la Universidad Católica (CETI UC), se concluye que SOA es la tecnología con más prioridad para los gerentes de tecnología en Chile.
A nivel mundial, las empresas están preparando sus sistemas y a su gente para esta nueva ola tecnológica que promete transformar al mundo de TI en un generador de innovación. Innovación al servicio del negocio.