Cuando se comienza a desarrollar un proyecto de SOA es necesario detenerse a pensar en todos los aspectos a cubrir para que la adopción de este estilo de arquitectura no se convierta en un problema. Comúnmente se piensa que construir servicios es comenzar con una arquitectura orientada a servicios, pero en rigor afirmar esto es como decir que la arquitectura de una casa de hace construyendo ladrillos.
Los temas a incluir en el desarrollo de un proyecto de adopción de SOA que considero fundamentales son los siguientes:
- Cumplir con los principios de la orientación a Servicios.
- Diseño de las capas de Servicios.
- Definición del ciclo de vida de los Servicios
-
Definición de los aspectos operacionales
- Soporte de múltiples protocolos estándares.
- Despacho garantizado.
- Servicios Síncronos y Asíncronos.
- Manejo de excepciones.
- Seguridad de los Servicios.
- Instrumentación.
- Contenedor de Servicios
- Caso de prueba.
Cumplir con los principios de la orientación a Servicios
Los principios de la orientación a servicios son la fundamentación de todo el esfuerzo que se realiza en este tipo de proyectos. Por esta razón se deben cumplir en todo momento con estos principios.
- Los servicios son reusables.
- Los servicios comparten contratos no código.
- Los Servicios tienen bajo acoplamiento.
- Los servicios tienen Fronteras explicitas.
- Los Servicios son modulares y permiten la composición.
- Los Servicios son autónomos.
-
Los servicios deben permitir métodos de descubrimiento.
Diseño de las capas de Servicios
En una arquitectura empresarial, es necesario ubicar la capa de servicios entre la capa de negocios y la capa de servicios de aplicación. Lo que se busca lograr con la definición clara de las capas de servicios es poder contestar preguntas fundamentales como:
- ¿Qué lógica será representada por los servicios?
- ¿Cómo se relacionaran estos servicios con la lógica de aplicaciones existentes?
- ¿Cómo los servicios pueden representa de mejor forma los procesos de negocio?
- ¿Cómo pueden los servicios ser construidos e instalados para promover la agilidad?
La siguiente figura muestra una idea de las capas y como se busca definirlas.
Definición del ciclo de vida de los Servicios
Para poder asegurar un resultado predecible en los futuros proyectos de software es necesario definir un proceso de análisis de los servicios que se desean construir.
El ciclo de vida del proyecto es un conjunto de pasos necesarios que deben ser cumplidos para construir los servicios necesarios de una arquitectura SOA. Los proyectos de implementación de una arquitectura orientada a servicios (SOA), siguen al igual que todos los proyectos de software un ciclo de vida definido.
Las etapas de este ciclo de vida son:
- Análisis Orientado a Servicios
- Diseño Orientado a Servicios
- Desarrollo de Servicios
- Prueba de Servicios
- Instalación de Servicios
- Operación de Servicios
Definición de los aspectos de implementación
Este es el primer punto que se ocupa de los aspectos de implementación. Estos temas son importantes para llevar las definiciones conceptuales de alto nivel a definiciones pragmáticas que los equipos de proyectos puedan utilizar. Por supuesto cada definición de estos aspectos debe cumplir con las orientaciones generales definidas con anterioridad.
La lista de aspectos a cubrir son:
- Soporte de múltiples protocolos estándares.
- Despacho garantizado.
- Servicios Síncronos y Asíncronos.
- Manejo de excepciones.
- Seguridad de los Servicios.
- Instrumentación.
- Contenedor de Servicios
Caso de prueba
Como estrategia de validación, necesaria en cualquier proyecto, es necesario realizar un caso de prueba. La idea del caso de prueba es validar que las definiciones hechas son posibles de implementar y útiles para la organización.
Transferencia de Conocimiento
Por último, uno de los mayores problemas que se enfrentan las organizaciones que enfrentan proyectos de orientación a servicios es que cuando los consultores se retiran debe hacerse cargo de la arquitectura, operarla y seguir extendiéndola.
Para facilitar estas tareas se debe incluir un plan de transferencia de conocimiento que es más que escribir manuales o hacer una capacitación.
Estas son las recomendaciones para enfrentar un proyecto de inicio de arquitectura SOA.