En la anterior entrada de este blog Principios de la Arquitectura Orientada a Servicios se trataron los principios de la arquitectura orientada a servicios (9 en total) recogidos originariamente en esta página SOA Principles y que son estos:

  1. Contratos de servicio estandarizados
  2. Servicios con bajo acoplamiento
  3. Abstracción
  4. Reusabilidad
  5. Autonomia
  6. Sin estado
  7. Capacidad de descubrimiento
  8. Composición
  9. Interoperabilidad

Por otra parte, como se puede leer en esta página, Garnet estima que son 5 los principios de SOA. Al margen del número, evidentemente no es de extrañar que básicamente ambas listas de principios sean prácticamente las mismas (algo más resumido naturalmente en Gartner). La segunda lista sería la siguiente:

  1. Modular
    Incide sobre el concepto “clásico” de bajo acoplamiento y máxima cohesión de los módulos de software. Cada módulo tiene una misión que desempeñar y hace posible que se puedan construir módulos más complejos en base a otros más simples.
    En la lista anterior, hace referencia al principio  2 (bajo acoplamiento) y 8 (composición)
  2. Distribuible (con permiso de la R.A.E)
    Los servicios de negocio se pueden distribuir en varias localizaciones físicas. Para el consumidor del servicio debe ser transparente dónde está el servicio que quier invocar (en qué máquina).
    Tiene mucha relación con el principio 7 (capacidad de descubrimiento) y 9 (interoperabilidad) . No sólo se puede invocar a un servicio independientemente de su localización física, si no también de la tecnología empleada en su construcción (y la del consumidor) el sistema operativo, etc, etc.
  3. Claramente definido
    El servicio define un contrato con el cliente donde se indica los parámetros de entrada y de salida. Respetando este contrato con el exterior, la implementación interna del servicio puede cambiar sin afectar al cliente (es una caja negra). Este papel lo juega el fichero WSDL en los servicios web.
    Este principio es igual al número 1 (contratos de servicios estandarizados)
  4. Intercambiables
    Este principio tiene mucha relación con el anterior, ya que al tener que mantener únicamente el contrato con el consumidor, la implementación interna del servicio puede cambiar complementamente sin tener siquiera que decírselo al mismo.Se consigue separar la implementación, del contrato o metadata. Esto da mucha flexibilidad en la evolución del consumidor y del servicio ya que pueden hacerlo de manera independiente.
  5. Compartibles
    El mismo servicio puede ser consumido por diferentes personas, departamentos o incluso diferentes compañías. Por lo tanto, en el diseño de los servicios, hay que hacer hincapié en que el consumidor puede ser de muy diferentes tipos. Por ejemplo, no se puede pensar que lo va a consumir un interfaz de usuario (frontal) e incluir en el mismo información para el formateado en pantalla. Por otra parte, se favorece la economía de escala ya que el servicio se implementa una sola vez y se puede consumir miles de veces por decenas de clientes diferentes.
    Tiene relación con el principio 8 (composición)

En definitiva, ambos listados de principios inciden básicamente en los mismos conceptos. En mi opinión, no obstante, es más completo y claro la lista de SOA Principles y me llama la atención que Gartner no haga mención a la característica “sin estado” que deben tener los servicios. La considero una cualidad importante que no debe dejarse fuera ya que forma parte de la esencia misma del servicio y que tiene muchas implicaciones tanto en el diseño como en la implementación.

¿qué “lista” prefieres tú?

Comparte este artículo…