gotas

Nunca está de más volver a tratar los principios o los objetivos de SOA. Muchas veces nos ofuscamos un poco con tanta especificación, protocolos, WSDL y demás parafernalia.

Además, aplicar SOA en una empresa no es fácil y muchas veces, ante el poco avance de esta adopción o al no obtener los resultados esperados caemos en el recurso fácil de decir que SOA no sirve.

Repasemos entonces los 7 objetivos estratégicos que busca la adopción de SOA de la empresa. Podremos estar de acuerdo o no en cuanto a cómo aplicarlos o si los resultados no acompañan, pero ¿Hay alguien que no esté de acuerdo con estos objetivos?.

  1. Incrementar la interoperabilidad
    Si hay algo con lo que hay que contar en una gran empresa es la infinita cantidad de aplicaciones y sistemas heterogéneos con los que hay que trabajar. Una buena práctica sin duda, es intentar aplicar un estilo de diseño de software que fomente la interoperabilidad de los diferentes programas o componentes para que simplemente se puedan invocar entre sí. No hay nada más frustrante que tener unos activos software y no poder utilizarlos por ser incompatibles.
  2. Incrementar la federación
    La federación se refiere a la unión de entornos diferentes manteniendo una gestión independiente. SOA fomenta el establecer una perspectiva federada de la empresa a través de los servicios compuestos (ofrecen un interfaz estándar hacia el cliente uniendo servicios de diferente tecnología y sistemas).
    Lo importante aquí es que este servicio compuesto es totalmente estándar y no depende de la casuística de los sistemas que tiene por debajo y de los que depende. Por ejemplo, no utiliza la nomenclatura de campos específica el backend al que accede (por poner un ejemplo muy habitual).
  3. Incrementar el alineamiento entre negocio y tecnología
    Es la esencia misma de SOA. Desde el punto de vista de negocio se debe ver el software de la empresa como un conjunto de servicios de alto nivel que responden a una necesidad concreta de negocio como “dar de alta cliente” o “calcular tarifa del producto X”. Estos servicios los podré combinar para dar lugar a nuevos servicios, apoyar a un proceso de negocio, etc.
    Desde el punto de vista de tecnología, los servicios son la encapsulación de cierta lógica de negocio en un sistema concreto. Una abstracción de un concepto de negocio. Con estos servicios de negocio, con un contrato bien definido y lo más desacoplado posible del resto de servicios se podrá responder con agilidad a los continuas peticiones de Negocio.
  4. Incrementar las opciones de diversificación de fabricantes y vendedores de software
    Representa la opción de cambiar una parte de T.I. o añadir una nueva con nuevas tecnologías y productos del mercado sin estar atados a un vendedor en concreto.
    Esto se consigue diseñando SOA para que sea neutral respecto a las plataformas de los vendedores, usando estándares para la definición del contrato del servicio y la forma de invocarlo desde el cliente, dejando el servicio como una caja negra (con la implementación dependiente del vendedor).
    Dependiendo del caso, puede interesar para la empresa tener diversificado su cartera de proveedores o no. Sin embargo, deberíamos tener siempre esta opción para no estar “cautivos” y al arbitrio de las exigencias de un proveedor.
  5. Incrementar el ROI
    El ROI representa la recuperación del dinero invertido en la adopción de SOA, ya sea como nuevas ganancias, como ahorro de costes o las dos cosas a la vez.
    Esto se logra en primer lugar con lo reutilización de los servicios. Si hacemos un servicio y lo usamos n veces, estaremos reduciendo significativamente el coste total.
  6. Incrementar la agilidad de la organización
    La agilidad en implementar nuevos servicios y soluciones de negocio, ya que la empresa podrá poner el producto más rápido en el mercado minimizando el coste de oportunidad de estar meses esperando por un desarrollo de software y que se adelante la competencia, no pueda vender su producto, etc. etc.
    También representa la capacidad de cambiar una solución T.I. rápidamente, por ejemplo, cambiar un módulo de gestión de clientes por otro. Si el desacoplamiento que proclama SOA, esto será imposible, y al cabo de los años tendremos una T.I. esclerótica, incapaz de hacer ningún cambio.
  7. Reducir la carga de T.I.
    Esto tiene varias vertientes: reducir el gasto y la redundancia de programas y aplicaciones, reducción del coste operacional. En definitiva, hacer del desarrollo de software algo más racional y eficiente.

En fin, como conclusión a todo esto, diría que quizás haya alguien que esté en contra de SOA… pero ¿se puede estar en contra de estos servicios?, ¿Cómo se podrían conseguir entonces sin los principios que proclama SOA?

Foto: Pedro J. Ferreira