viernes, 2 de mayo de 2008

Conociendo SOA - I Parte

Este artículo constituye el primero de una serie, dirigida a la comprensión de los conceptos que rodean los enfoques modernos de las TI. Describe fundamentalmente los principios de la orientación a servicios como paradigma que ha evolucionado en la actualidad.

No pretende ser un manual o tutorial de cómo afrontar un proyecto SOA, sino que viene a cubrir aspectos importantes que a menudo se mencionan pero que no se conocen a fondo.

Para su confección, ha sido consultado un conjunto amplio de documentación moderna, destacando los aportes de Thomas Erl, a través de sus libros: SOA, Principios de Diseño y SOA, Conceptos, Tecnología y Diseño, considerados estas publicaciones enciclopedias del tema.

1. Algunas definiciones importantes.

Principio de Diseño: Generalmente es una práctica aceptada por la industria que se promueve como especie de guía para lograr objetivos de manera eficiente. Estos objetivos a cumplir o principios son asociados con las características de diseño que deben tener las soluciones que se basen en estos principios.

Paradigma de Diseño: Representa un conjunto de principios de diseño o reglas que pretende marcar un patrón o modelo. Representan los antecedentes funcionales a una solución de diseño.

Patrón de Diseño: Un patrón de diseño es una solución a un problema de diseño. Para que una solución sea considerada un patrón debe poseer ciertas características. Una de ellas es que debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores. Otra es que debe ser reusable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias.

2. Origen e Influencia en la orientación a Servicios.

La mejor forma de entender algo, muchas veces es la de partir de su surgimiento y su historia. La orientación a servicios es un paradigma de diseño que no representa una revolución, sino una evolución de las tecnologías de la información que tiene raíces en paradigmas pasados y en la propia evolución de las tecnologías. El siguiente gráfico muestra algunos de los elementos que mayor influencia han ejercido hacia la evolución de la orientación a servicios.


Fig 1. Orígenes e influencia en la Orientación a Servicios.

Orientación a Objetos

En la década de los ’90, la comunidad de desarrolladores de sistemas asumió como filosofía de diseño para afrontar los diversos tipos de soluciones. Este paradigma incorpora una serie de principios que definen un tipo específico de relación entre las unidades lógicas de la solución, conocidos como objetos.

La orientación a servicios es comparada frecuentemente con la orientación a objetos, pues los principios y patrones de diseño de este último, representan una de las fuentes de inspiración más importantes para la evolución de este paradigma.

Principios como la reutilización Reusabilidad, Abstracción, Encapsulación, entre otros tienen sus homólogos en el paradigma Orientado a Servicios.

Web Services

A pesar de que la orientación a servicios es un paradigma y SOA una arquitectura tecnológica cuya implementación es neutral, el asociarlos (SOA+Orientación a Servicio) con los web services es muy común. Fundamentalmente dado por la promoción que realizan los principales proveedores de herramientas SOA cuyas plataformas están basadas en el framework Web Services.

Los framework de Web Services promueven un conjunto de principios de la orientación a servicios: Abstracción, Bajo Acoplamiento y composición de servicios.

BPM

Se llama Business Process Management a la metodología empresarial cuyo objetivo es mejorar la eficiencia a través de la gestión sistemática de los procesos de negocio (BPR), que se deben modelar, automatizar, integrar, monitorizar y optimizar de forma continua.

Como su nombre sugiere, Business Process Management (BPM) se enfoca en la administración de los procesos del negocio. Esta capa es la parte fundamental de cualquier arquitectura SOA desde la perspectiva de la composición de servicios que generen el flujo de un proceso de negocio. Los sistemas BPM generalmente asumen el rol de controladores de la composición de servicios.

Uno de los principales objetivos de la orientación a servicio es establecer un entorno ágil de automatización capaz de adaptarse rápidamente a los cambios del entorno de negocio. Esto es posible realizando servicios que encapsulen la lógica de negocio mayormente reutilizable y componer los procesos de negocio partiendo de la orquestación de estos servicios.

Integración de Aplicaciones Empresariales

Las empresas desde las década de los ’90 han protagonizado una explosión de aplicaciones hacia el interior, orientadas a resolver problemas específicos y pocas veces pensadas para interoperar unas con otros. Los enfoques sistémicos de las organizaciones promueven cada vez más la integración de las aplicaciones monolíticas mencionadas.

Las plataformas EAI introducen middlewares que abstraen la integración entre las aplicaciones mediante la creación de conectores, adaptadores y servicios que hacen interoperables sistemas diferentes.

Varios proyectos de integración se basan en SOA, específicamente en el uso de web services y la orquestación de servicios que combinan datos de varias aplicaciones.

3. Principios de Orientación a Servicios.

Existen muchas definiciones de SOA, pero en general la mayoría de los proveedores de TI, coinciden en que la orientación a servicios se rige por 8 principios fundamentales. La orientación a servicio constituye una teoría que guía la ingeniería de software hacia soluciones SOA. Estos principios son generalmente implementados por las plataformas y herramientas utilizadas para las soluciones. Existe una analogía entre los principios de la orientación a objetos, y las plataformas de desarrollo (.net, java) de forma similar a como se vinculan la orientación a servicios con las plataformas y estándares de la industria (web services).

Los principios de la orientación a servicios son:

1. Los Servicios son reusables.

2. Los Servicios proporcionan un contrato formal.

3. Los Servicios tienen bajo acoplamiento.

4. Los Servicios permiten la composición.

5. Los Servicios son autónomos.

6. Los Servicios no tienen estado.

7. Los Servicios encapsulan la lógica.

8. Los Servicios pueden ser descubiertos.

Para que una solución sea 100% SOA, debe cumplir con cada uno de estos principios. Muchos expertos recomiendan asumir los proyectos de forma escalonada dando cumplimiento a los principios poco a poco.

Hasta aquí esta primera parte, mas adelante serán abordados estos principios y su aplicación real en aplicaciones empresariales. En la medida de lo posible, cada principio irá acompañado de ejemplos prácticos sobre el modelo WCF de .NET Framework 3.0.


No hay comentarios: