La arquitectura orientada a servicios de cliente (en inglés Service Oriented Architecture), es un concepto de arquitectura de software que define la utilización de servicios para dar soporte a los requisitos del negocio.
La integración de las distintas herramientas de la compañía, conlleva la definición clara de los servicios para dar soporte a las aplicaciones entre sí, brindando una forma clara de hacerlo.
SOA proporciona una metodología y un marco de trabajo para documentar las capacidades de negocio y puede dar soporte a las actividades de integración y consolidación.
Por lo tanto, si tenemos generada una arquitectura SOA, lo que nos plantea es la posibilidad de facilitar la integración entre las distintas aplicaciones para conseguir maximizar el beneficio obtenido con nuestra infraestructura.
Para poder llegar a la evolución completa, se requiere de un diseño estructurado que permita a pequeños servicios, ofertados por individuos, coordinarse para ofrecer un servicio conjunto y de mayor envergadura.
Así, en un trabajo de manufactura, muchas veces no interviene una única persona, sino que por ejemplo si hablamos de una silla de madera, entrará quien tale el árbol, quien extraiga la madera, quien la corte para prepararla, quien realice el encolado y quien la barnice. Todos ellos están realizando un servicio, pero al hacerlo de forma conjunta nos ofrecen un servicio mayor o más completo, como será la fabricación de una silla.
Para que todos estos pasos o servicios puedan dar lugar a un servicio o producto final se requiere de ese diseño estructurado en el que cada uno sabe qué tarea ha de realizar y que parámetros de salida son necesarios y válidos.
Por lo tanto, el diseño de esa arquitectura orientada a servicios es uno de los elementos principales en cualquier estructura orientada a servicios.
La computación orientada a servicios representa una nueva generación de sistemas que utilizan una plataforma de desarrollo que involucra múltiples componentes, pero que tiene sus propios elementos de diseño, con patrones de lenguajes, diseños de arquitectura, conceptos, tecnologías y entornos de relación de los sistemas.
SOA o arquitectura orientada a servicios establece un modelo de arquitectura que ayuda a mejorar la eficiencia, efectividad y productividad de una empresa, posicionando los servicios como lo primero que debemos de tener en cuenta cuando queremos presentar una lógica de solución de un problema, o para la consecución de los objetivos estratégicos de la compañía, asociado a la programación orientada a servicios.
Dentro de esta arquitectura por lo tanto podemos decir que SOA estará formada por la combinación de tecnologías, productos, API’s (Interfaces relacionales de aplicaciones) extensiones de la tecnología de soporte y otras partes varias.
Sin embargo, muchas veces el SOA viene asociado a la introducción de nuevas herramientas o tecnologías dentro de la empresa que den soporte a la creación, ejecución, y evolución de las soluciones dentro de la misma.
Por lo tanto, una solución orientada a servicios dentro de una empresa dará como resultado una arquitectura orientada a servicios, basándose en unos principios de diseño orientado al servicio.
Cada servicio tendrá su propio conjunto de capacidades de acuerdo al entorno donde se encuentre. Estas capacidades serán susceptibles de ser invocadas desde fuera (por otros servicios) para lo que se deberán de publicitar de manera expresa la manera de invocar estas capacidades, esto se puede hacer de manera equivalente a lo que sería una API.
El SOA hace un especial hincapié en la reutilización de sus componentes, la idea que tenemos detrás de estas arquitecturas o tecnologías orientadas a servicios es que podamos reaprovechar los desarrollos de servicios que se realizan en un momento dado para la creación de otros servicios y por tanto tener mayores servicios.
Los servicios que creamos o desarrollamos deben seguir una serie de premisas, o estar desarrollado de una forma tal que seamos capaces de identificar quién y cómo podrá acceder a los mismos, para que así nuestro catálogo sea comprensible y reutilizable.
La consecuencia por lo tanto es que tendemos a alejarnos de las infraestructuras basadas en silos, en entornos únicos que funcionaban de manera completamente independiente y nos movemos a los sistemas que están formados por la suma de múltiples servicios que dan como resultado un servicio final que nos permita dar respuesta a las necesidades de la empresa en cuestión.
A medida que crezcamos sobre este método de creación e implantación de sistemas, los anteriores conceptos basados en aplicaciones y en entornos de silos que funcionan de manera independiente irán poco a poco desapareciendo para dar paso a arquitecturas basadas en servicios.
Las aplicaciones en los entornos de SOA carecen de sentido individual, ya que o bien es un conjunto de servicios, o bien es en sí mismo un servicio para otro sistema mayor.
Si llegamos a una compañía que ha ido creciendo de forma clásica a través tanto del crecimiento orgánico de la misma como por la adquisición de diferentes compañías, en multitud de ocasiones nos podemos encontrar entornos complejos de manejar.
Así, si vemos una estructura en la cual priman aplicaciones propietarias, diseñadas en un momento dado para dar respuesta a los problemas de la compañía en ese momento, sumado a múltiples cambios o adquisiciones de diferentes compañías a lo largo de la historia (podemos pensar en un gran banco, que crece de manera propia y al mismo tiempo por la adquisición de otros bancos en otros países).
Si planteamos su situación en un momento dado, tendremos un conjunto de aplicaciones y sistemas, que, si bien dan servicio puntual a cada unidad en el momento de su creación, en el momento de pasar por la integración con otros sistemas, perdemos esta facilidad.
En estos casos, si no disponemos de una arquitectura orientada a servicio, cada vez que se quiera ofertar un nuevo servicio, se ha de desarrollar una aplicación a medida para cada servicio, con los costes que ello tiene, no solo desde el punto de vista económico para el desarrollo, sino desde el punto de vista estratégico por el tiempo necesario para llevar a cabo este desarrollo.
Si por el otro lado, nos encontramos en una empresa con una estructura y arquitectura orientada a servicios, donde los desarrollos de cada servicio, sistema o aplicación se ha realizado pensando que este se debe de integrar con otros, por ejemplo, siguiendo en el entorno bancario, con las aplicaciones prexistentes, con herramientas de uso, con los diferentes departamentos, etc.
Tendremos distintos módulos que podremos reutilizar para lanzar el nuevo servicio, pues en muchos aspectos tendrá elementos comunes con los servicios ya existentes dentro del sistema.
Si lo que hablamos es de integrar otra entidad recién adquirida, en el caso de la primera adquisición, posiblemente deberemos desarrollar una aplicación a medida para poder acceder a los datos del sistema, pero según vamos reutilizando la entrada de datos a nuestros entornos será siempre igual, por lo que lo único que deberíamos rehacer será la conexión con los datos antiguos.
Esto cada vez nos dará más servicios a reutilizar y por lo tanto menos entornos a desarrollar, por lo que podremos necesitar menos tiempo en la integración o creación de nuevos servicios y tendremos mayores beneficios.
Estos cambios estructurales pueden ayudar nuevamente a cambiar la sensación que existe en muchas organizaciones de que los departamentos de TI son frenos para las compañías y muchas veces un gasto necesario, para ser ayuda en transformar el departamento en motores de innovación y de desarrollo dentro de la compañía al ser capaces de realizar y ofrecer servicios cada vez con mayor rapidez.
Puede interesarte: Gestión de servicios en los sistemas de información
Suscríbete a nuestro Magazine
Recibe Artículos, Conferencias
y Master Class
Tecnología
Tecnología
Tecnología
Comentarios