Blog de Miguel Llopis

SOA y la metáfora del elefante hindú

Hoy voy a hablaros sobre mi humilde proyecto final de carrera, como me encuentro en la recta final del desarrollo del mismo, necesito llorarle un poco a alguien sobre el tema... En colaboración con Roberto Rodes, gran compañero y amigo de la carrera, estamos realizando un proyecto dedicado a monitorizar y gestionar dispositivos domóticos bajo el protocolo UPnP.

La arquitectura que estamos desarrollando sigue un esquema de 3 capas, que serían las siguientes:

  1. Capa de acceso al medio: Módulo de control de la red UPnP, se encarga de explorar la red en busca de dispositivos y su estado, transmitiendo dicha información a las capas superiores.
  2. Pasarela residencial de servicios: Fachada de servicios implementada en WCF que sirve como pasarela residencial de acceso a todos los servicios ofrecidos por los dispositivos domóticos de la red del hogar. Implementa el sistema de permisos y perfiles de usuario que necesitamos, de forma que distintos usuarios tengan niveles de control diversos. Por ejemplo: Un niño puede tener acceso al control de luces, pero no al de cámaras de seguridad, o tal vez tampoco al servidor de Media si los contenidos almacenados en este último no son aptos... De igual forma, distingue entre el acceso a la fachada realizado desde dentro de la red (equipos de control situados dentro de la vivienda) con el acceso realizado desde fuera de la red (a través del móvil del propietario de la casa, a través de la empresa de seguridad que accede a nuestro sistema de alarmas... sin embargo, nunca un desconocido debería poder acceder a nuestro sistema de alarmas, obvio, verdad?) :-)
  3. Capa de presentación: Diversos clientes para dispositivos variados (cliente WPF, cliente web, cliente Mobile, cliente Windows Media Center...)

Dialogando con varios profesores y compañeros de universidad el otro día, surgió el tema de conversación de nuestro proyecto y, al mencionar por mi parte que seguía la filosofía de SOA, hubo cierta controversia... ¿Qué es SOA?

  • Una nueva tecnología...
  • Una nueva metodología...
  • Un modelo de gestión de procesos de negocio...
  • Una arquitectura...

Sin duda, el lector que ya esté familiarizado con el concepto de SOA, se habrá dado cuenta a estas alturas de que las tres primeras respuestas son mitos, y la cuarta es una vaga aproximación al concepto... Es cierto, el clima primaveral alicantino y las cañas a la hora del aperitivo en la terraza del club social hacen a uno hablar de ciertos temas de una forma más distendida... :-)

La definición académica que yo daría es:

"Una arquitectura débilmente acoplada diseñada para resolver las necesidades del proceso de negocio (BPM) de una empresa"

No obstante, el debate allí surgido fue de lo más interesante y acalorado (no sólo por los 26º y clima soleado que nos acompañaban). Debo decir que algunas de las mentes más brillantes que he conocido en mi paso por la Universidad de Alicante estaban sentadas alrededor de aquella mesa.

Esto me hizo concluír que, si bien es posible unificar criterios, cada persona tiende a enfocar una definición hacia la perspectiva desde la cuál ha llegado a ella. Cabe citar también que en dicha conversación no sólo participamos estudiantes de informática, también profesores de informática, algún que otro doctor en ciencias de la computación e incluso gente dedicada a la docencia sobre metologías de negocio, economía financiera, marketing y e-business.

Todo ello me lleva a recordar la archiconocida metáfora del Elefante Hindú, ejemplo muy frecuente a la hora de hablar de la controversia o variedad de puntos de vista que suscita SOA. Imagino que todos la conocéis:

Seis hombres ciegos de la península Indica caminan juntos y se encuentran un elefante. La forma de detectar el elefante para cada uno de ellos es táctil. Cada uno de ellos describe o percibe al elefante de una forma distinta, en función de su experiencia individual:

  1. El hombre que le ha tocado la trompa, piensa que es una serpiente en lugar de un elefante.
  2. El hombre que le toca la oreja, piensa que en lugar de un elefante tiene ante sí un abanico.
  3. El hombre que ha tocado uno de sus colmillos, piensa que es una lanza.
  4. El que le tocó el lomo, piensa que se ha encontrado con un muro.
  5. Aquél que le tocó la cola, piensa que es una cuerda.
  6. Por último, quien le tocó las piernas, pensaba que tan sólo eran cuatro árboles.

Tras esto, los seis hombres comenzaron una larga discusión en la que cada uno aportaba sus argumentos y puntos de vista particulares sobre qué era en realidad ese elefante... Como bien concluyó John Godfrey Saxe, autor de la metáfora, "Cada uno tenía parte de razón pero, en el fondo, todos estaban equivocados"...

De igual forma, nosotros debemos vigilar especialmente no convertirnos en ciegos a la hora de evaluar este amplio concepto en todo su esplendor. Analistas, eruditos, bloggers, periodistas... Todos se animan a participar en dicho debate... ¿Qué es SOA? Al igual que los seis ciegos del poema de Saxe, cada uno de nosotros ha sido capaz de identificar correctamente algunas de las características de SOA, pero claramente fracasamos a la hora de explicar el concepto como un todo. El debate ha adquirido un nivel de relevancia actual tan grande que multitud de asociaciones se han puesto manos a la obra para lanzar una definición "universal" sobre ello.

Y para ti, WTF is SOA??? :-P

Posted: 25/4/2008 16:50 por Miguel LLopis | con 6 comment(s) |
Archivado en: ,,
Comparte este post:

Comentarios

Jorge Serrano ha opinado:

Muy buena entrada Miguel, quizás de las mejores tuyas que he leído.

Enhorabuena porque me ha gustado mucho como enfocas el tema y es exactamente como lo "veo" (o lo "toco") yo también.

De todos los modos, la metáfora de John, la cual no conocía, es aplicable en muchísimas cosas de la vida por no decir prácticamente todas. Aún y así, yo no suelo hablar mucho aún sobre SOA porque no he visto a nadie aún, dar una definición completamente clara sobre el tema.

Todos sabemos más o menos lo que es SOA, pero no sabemos explicarlo de forma aceptable para que todos demos por buena la explicación. :-)

A cuidarse y a disfrutar del calor Alicantino... y... ¡suerte con el proyecto!.

# April 25, 2008 11:32 PM

Miguel LLopis ha opinado:

Gracias por tus palabras, Jorge.

Tienes mucha razón en eso de que por ahora nadie ha dado una definición totalmente aceptable sobre SOA; no obstante, como bien dice el refrán, "todo en esta vida es ponerse, no?" ;-)

Un abrazo crack!

# April 26, 2008 8:38 PM

Carlos ha opinado:

Buenas! Enhorabuena Miguel, me ha gustado mucho este post sobre todo por q tocas temas q son realmente interesantes y

no sacar temas del tipo "How to". Sobre tu definición de SOA me suena algo parecido a IoC no?

# April 28, 2008 3:15 PM

Miguel LLopis ha opinado:

Buenas Carlos,

Interesante comparación! En cierto modo se asemejan, pero habría una diferencia capital entre ambos: mientras que IoC implica un cambio de paradigma como sería la adopción de una programación orientada a eventos, la adopción de conceptos como la programación por contrato y la interacción entre distintas librerías y/o módulos, lo que pretende SOA es una integración en un entorno distribuido entre diferentes sistemas.

Esto guarda una estrecha relación con los procesos de negocio que se intenten satisfacer en cada caso concreto. Por ejemplo, imagina la interacción entre el ERP de una empresa, que poría ser SAP, y el CRM de la misma que podría ser Dynamics. Por otro lado, podría haber necesidad de un tercer flujo que interoperara con datos de un proveedor, cuyo sistema podría ser distinto a los anteriores. Hablando en términos prácticos, este sistema podría corresponder con una política en la que, ante un pedido de un determinado cliente (operación realizada en nuestro ERP), si dicho cliente tiene un historial previo de fidelidad con nuestra empresa (operación realizada a nivel CRM), se podría exigir que los suministros que necesitemos pedir al proveedor para satisfacer el pedido de dicho cliente tengan una prioridad mayor (integración con nuestros proveedores a través del sistema SCM que empleemos).

En cierto modo, podría considerarse que SOA toma ciertos conceptos del patrón IoC, aunque como ves se trata de un contexto diferente.

Tengo pendiente un nuevo post acerca de la evolución histórica de SOA en el que espero aclarar un poco mejor este tipo de dudas.

Un saludo

# April 28, 2008 4:44 PM

Carlos ha opinado:

Si si, perdona me he explicado mal :)

# April 28, 2008 7:24 PM

wilfredo ha opinado:

que horrendas fotos

# March 24, 2009 9:46 PM