SOA y los tipos de servicios

3
24257

SOA y los tipos de servicios.

0. Índice de contenidos.


1. Introducción

SOA o Service Oriented Architecture es un modelo de arquitectura basado en el paradigma de diseño de orientación a servicios. De la implantación de una SOA en una organización se esperan (exigen) diferentes objetivos, como aumentar la agilidad del departamento IT para responder a las necesidades cambiantes del negocio o un alto retorno de la inversión (ROI) a medio plazo. Por tanto, podríamos decir que SOA persigue una alineación permanente entre tecnología y negocio (IT se adapta continuamente a las necesidades del negocio: business-driven).

SOA apuesta por los servicios como base de la arquitectura. Los servicios son unidades de lógica con diferentes características en común como: la reutilización, capacidad de composición (un servicio puede hacer uso de otros servicios o viceversa), estandarización, abstracción, autonomía, etc… Los servicios pueden ser tanto Web Services o Servicios REST como incluso otros componentes más dependientes de la tecnología, como podrían ser los EJB´s (Java), aunque el uso de estos últimos suele ser frecuente objeto de debate (pero ese es otro tema…).

En este tutorial aprenderemos a identificar los diferentes tipos de servicios que podemos encontrar en una arquitectura SOA y veremos cómo clasificarlos en base a su funcionalidad y capacidad de reutilización.


2. Entorno.

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil MacBook Pro 15′ (2.2 Ghz Intel Core I7, 8GB DDR3).
  • Sistema Operativo: Mac OS Mountain Lion 10.8

3. ¿Por qué categorizar los servicios?.

La categorización de servicios (service models) es muy buena práctica a la hora de administrar nuestra arquitectura SOA (gobierno SOA) ya que nos ayuda a etiquetar los servicios que conformarán nuestro inventario en función de la lógica que contienen y su grado de reutilización.

Como veremos en el próximo apartado, existen varios tipos de servicios que se distribuyen en diferentes capas lógicas y que deben guardan un equilibrio entre sí. Tener un buen catálogo de servicios correctamente categorizados es vital para la salud de nuestra SOA. Echando un vistazo a dicho catálogo se pueden detectar rápidamente “malos olores” que pueden desembocando en el fracaso de nuestra arquitectura.

4. Tipos de servicios.

Antes de nada me gustaría destacar que existen diferentes clasificaciones (o modelos) de servicios. La que vamos a exponer a continuación es, probablemente la más sencilla y el resto de modelos suelen ser derivados de ésta. El principal promotor de estos modelos de servicio es Thomas Erl, reconocida figura en el campo de la Orientación a Servicios y Cloud Computing.

Distinguiremos 3 tipos de servicios:

Capas de tipos de servicios

4.1 Servicios de utilidad.

Los servicios de utilidad son aquellos que encapsulan una funcionalidad multi-propósito. Son servicios que no cubren una necesidad concreta de negocio. Estos servicios contienen un alto potencial de reusabilidad (uno de los principios básicos en el diseño de servicios).

Algunos ejemplos de este tipo de servicios podrían ser: un servicio de gestión de tokens de seguridad de acceso a aplicaciones o servicios de la plataforma, un servicio de envío de correos o un servicio para grabar la actividad que se produce en la plataforma (trazas de auditoría).

Servicios de utilidad

En algunos sitios descomponen los servicios de utilidad dependiendo de si aportan valor a nivel de negocio (ej: envío de correo) o a nivel de plataforma (ej: servicio de transformación de mensajes). Como comentamos anteriormente, existen diferentes variantes de esta clasificación.

4.2 Servicios de entidad.

Los servicios de entidad son aquellos que están centrados en el contexto de las entidades de negocio. Del mismo modo que ocurre con los servicios de utilidad, no son servicios destinados a resolver un problema concreto por lo que son altamente reutilizables. Muchas de las operaciones que exponen este tipo de servicios son las típicas de un CRUD (Create, Read, Update, Delete).

Evidentemente, estos servicios variarán en función del negocio concreto y las entidades que representen su actividad. Algunos ejemplos podrían ser: póliza (sector seguros), cuenta corriente (sector bancario), cliente, etc, etc, etc…

Servicios de entidad

4.3 Servicios de tarea.

Los servicios de tarea son aquellos que engloban un proceso de negocio apoyándose (normalmente) en servicios de más bajo nivel como los servicios de utilidad o de entidad. Suelen consistir en una serie de pasos para completar una tarea específica. Esto último es muy interesante ya que, debido a las necesidades de negocio tan concretas que resuelven, no suelen ser servicios con un grado de reutilización tan alto como los servicios de entidad o utilidad.

Los servicios de tarea no suelen ser tan estables como los de entidad o utilidad. Esto es debido a que, al surgir como respuesta a una necesidad concreta del negocio, su funcionalidad variará en función de los cambios del propio negocio. Es muy importante tener una buena base de servicios de entidad y utilidad sobre los que se apoyen los servicios de tarea para poder responder al cambio de manera ágil (composición de servicios). Recordemos que uno de los objetivos estratégicos de la orientación a servicios es el alineamiento permanente entre negocio e IT (responder rápidamente a las necesidades cambiantes del negocio).

Un ejemplo podría ser un servicio de autorización de prestación de servicio (caso muy típico en compañías aseguradoras). Supongamos el caso en que un cliente de una aseguradora va al médico a pasar consulta. Podríamos tener un servicio que validase que el cliente puede ir a ese médico a pasar consulta.

Servicios de tarea

Para realizar la validación probablemente nuestro servicio debería apoyarse en diferentes servicios de entidad, concretamente en las entidades de negocio que intervienen en el proceso y, probablemente, en algún servicio de utilidad (por ejemplo, enviar un correo con el resultado de la validación).

Servicios de tarea y relación con otros servicios

Al igual que ocurría con los servicios de utilidad, es frecuente encontrar en determinados sitios diferentes “sub-categorías” de los servicios de tarea.

5. Referencias.


6. Conclusiones.

En este tutorial hemos visto los diferentes tipos de servicios que podemos encontrarnos en una SOA. Una correcta categorización es importante para identificar posibles deficiencias en nuestro inventario de servicios.

Debemos ser prudentes a la hora de construir nuestros servicios de tarea. Efectivamente son los que aportan un valor directo a las necesidades de negocio pero es fundamental que se apoyen en servicios de más bajo nivel como los servicios de entidad o de utilidad. La reutilización y la composición (un servicio utiliza otros servicios) son dos principios básicos de diseño de servicios. Una arquitectura que únicamente contenga servicios de tarea, probablemente no sea una SOA.

Como he comentado anteriormente no es una categorización cerrada, es simplemente un modelo más (eso sí, con mucha aceptación).

Espero que este tutorial os haya sido de ayuda. Un saludo.

Miguel Arlandy

marlandy@autentia.com

Twitter: @m_arlandy

3 Comentarios

  1. Muy buen artículo.\r\nHace una buena direfenciación entre lo que es una arquitectura SOA y tener unos cuantos servicios, que aunque puedan ser funcionales, estén desperdigados y no valgan cuando se modifica alguna funcionalidad del sistema.

  2. Wow en serio he estado buscando como loco tratar de entender los servicios en SOA y esto es lo mejor que he encontrado.

    Te felicito es un excelente tutorial, si tienes mas de estos te agradeceria que me pasaras los links ya que me quiero empapar mucho de este tema

Dejar respuesta

Please enter your comment!
Please enter your name here