Modelos de servicio (según Thomas Erl)

En la página 43 del libro “SOA: Principles of Service Design” (y también en el anterior “Service-Oriented Architecture (SOA): Concepts, Technology, and Design“), Thomas Erl presenta una clasificación de servicios que creo bastante útil:

  • servicios de entidad (entity services)
  • servicios de tarea (task services)
  • servicios de utilidad (utility services)

Estos servicios se dispondrían por capas o niveles (layers), estando los de tarea más cerca de las aplicaciones y los de utilidad más cerca de los sistemas externos.

Servicios de entidad

Su ámbito funcional se circunscribe a una o más entidades de negocio, p.ej. Cliente, Empleado, etc. Se consideran servicios muy reusables porque se diseñan agnósticos de la mayoría de los procesos de negocio en los que puedan participar.

Ejemplo:

Employee

  • GetWeeklyHoursLimit
  • UpdateWeeklyHoursLimit
  • GetHistory
  • UpdateHistory
  • DeleteHistory
  • AddProfile
  • GetProfile
  • UpdateProfile
  • DeleteProfile

Sus operaciones pueden ser parecidas al CRUD.

También llamados “business entity services” o “entity-centric business services“.

Servicios de tarea

Su ámbito funcional está directamente asociado a una tarea o proceso de negocio. Este tipo de servicio tiende a ser menos reusable que los servicios de entidad. Normalmente se comporta como el controlador de una composición de servicios (quizás estos más agnósticos).

Ejemplo:

RevenueAnalysis

  • Submit

Dependiendo de la tecnología empleada, este tipo de servicios pueden ser implementados con un WebService o con una plataforma de orquestación de servicios (definido el proceso de negocio con BPEL, p.ej).

También llamados “business process services” o “task-centric business services“.

Servicios de utilidad

Los anteriores se centran en el negocio, éstos se centran en la tecnología.

En la capa de servicios de utilidad agrupamos servicios reusables, transversales e idealmente agnósticos de la aplicación que lo puede consumir.

Ejemplo:

Transform

  • APImport
  • APExport
  • ARImport
  • ARExport

También llamados “application services“, “infrastructure services” o “technology services“.

Tagged: