school

Me gusta alternar en el blog entradas sobre lo que podríamos denominar la “teoría” de SOA con otras de reflexión personal sobre SOA y la arquitectura. Como la anterior fue del tipo personal, hoy voy con una de las de teoría, de principios y definiciones de SOA. A muchos de vosotros, que os interesáis por este tema, os serán familiares. Sin embargo, creo que no está demás que la veamos, sobre todo, es útil para explicarle a otras personas qué es esto de SOA y que beneficio tiene.

Así repasemos los conceptos básicos en los que incide el bueno de Thomas Erl para “entender” lo que es SOA.

Definición del término Arquitectura Orientada a Servicios

SOA representa un modelo que persigue mejorar la agilidad y los costes de una empresa reduciendo la carga de T.I de la organización. Esto se logra posicionando los servicios como la forma de representar la lógica de negocio.
SOA es un modelo de arquitectura distribuida con características diferenciales en la realización de la orientación a servicios. Estas características son las siguientes:

  • business driven
  • vendor neutral
  • enterprise centric
  • composition centric

Características del business driven

Las arquitectura tradicionales se hacen normalmente para soportar el estado actual del negocio pero son incapaces de evolucionar cuando el negocio evoluciona.
Si el negocio y la tecnología son divergentes (no es tan sincronizadas), la respuesta a los requisitos de negocio decrece.
En este punto es cuando se necesita una nueva arquitectura y para ello es necesario aplicar una estrategia business-driven, es decir, dirigida por el negocio, a la arquitectura tecnológica con el fin de mantenerlas constantemente sincronizadas y evolucionar con el negocio a por largo del tiempo.

Neutralidad respecto al vendedor (vendor neutral)
La dependencia del vendedor de la plataforma tecnológica reduce las oportunidades de innovación y puede provocar la necesidad de un cambio de la implementación por completo.
Si el modelo de arquitectura está diseñado para ser neutral respecto al vendedor, mantendrá  la libertad de diversificar su implementación pudiendo aprovechar la innovación de múltiples vendedores.
Esto incrementa la vida de la arquitectura y permite evolucionar en respuesta a los requerimientos cambiantes a lo largo del tiempo.

Enterprise-centric
SOA es enterprise-centric porque fomenta la creación y reutilización de la lógica a través de diferentes lógicas de negocio y procesos.
Para que un servicio sea verdaderamente reutilizable, debe ser capaz de participar en diferentes soluciones de arquitectural distribuidas o composiciones de servicios

Service composition architecture
La característica de composición o “compatibilidad” de un servicio permite, al menos en teoría, que un mismo servicio pueda dar respuesta a nuevos requerimientos de negocio combinándolos de otra manera.
En este tipo de arquitectura únicamente se publica el contrato del servicio y sus SLA (acuerdos de nivel de servicio) a los que se “compromete” este servicio como el tiempo de respuesta, la disponibilidad, etc. No se incluyen otro tipo de detalles internos.
Si una composición de servicios es parte de otra composición (composición padre), ésta puede ser reverenciada desde la del hijo.
El diseño de la composición también incluye caminos alternativos, como los de error, que puede introducir nuevos servicios dentro de la composición.

Y como digo siempre que trato los principios de SOA ¿hay alguien que esté en contra de estos principios?