Este artículo compila los Principios de la Arquitectura Orientada a Servicios SOA màs importantes, incluye las referencias a material oficial explicando en detalle cada principio.
Si quieres aprender a programar en java sigue este link.
Si quieres aprender a programar frontend en VUE sigue este link.
1. Manifiesto SOA
El manifiesto SOA es una serie de principios desarrollado por un grupo de profesionales y especialistas en el tema que encontraron la necesidad de describir correctamente en términos de principios las buenas prácticas que los Arquitectos SOA deben cumplir a fin de lograr la adopción SOA con las mejores características.
En las siguientes secciones se abordarán estas buenas prácticas y principios.
Para conocer el manifiesto SOA completo siga este vínculo.
Algunos de los principios fundamentales que se deben considerar en el momento de realizar una Arquitectura SOA son:
- Los servicios deben ser reusables.
- Los servicios deben proporcionar un contrato formal.
- Los servicios deben tener bajo acoplamiento.
- Los servicios deben permitir la composición.
- Los servicios deben de ser autónomo.
- Los servicios no deben tener estado.
- Los servicios deben poder ser descubiertos.
Una palabra que se usará mucho en las siguientes secciones será servicio y aquí servicio puede referirse a un servicio web pero en general se debe entender como una capacidad que los sistemas ofrecen para realizar alguna tarea, tenga esto en mente cuando lea las siguientes secciones.
2. Servicios y contratos
Cuando un servicio es implementado como un Servicio Web, el contrato del servicio puede estar compuesto por una definición WSDL, múltiples definiciones de esquemas XML, políticas, y documentos complementarios, tal como un ANS.

De forma similar, los contratos deben estar catalogados en inventarios que hagan fácil su ubicación y determinar sus características y usos. Una buena forma de inventariarlos es por proyectos, como se muestra en la siguiente figura, sin embargo debe considerarse la conveniencia de tener diferentes dimensiones para catalogar como aplicaciones o módulos o grupos de funcionalidad.

Este Principio de la Arquitectura Orientada a Servicios SOA, que impulsa que los servicios tengan contratos impulsa el enfoque del “contrato primero” para la entrega del servicio, por el cual los contratos se desarrollan de forma personalizada (antes del desarrollo de la lógica del servicio) de acuerdo con los estándares de diseño que aplican a todos los servicios dentro de un inventario dado de servicios.

3. Centralización de servicios
Este Principio de la Arquitectura Orientada a Servicios SOA asegura que los consumidores tengan un único punto de acceso a la capa de lógica, de esta manera se asegura que los consumidores estén llegando a la versión correcta y publicada del servicio y su contrato, por lo cual la documentación también es importante centralizarla.

4. Acoplamiento de servicios
En general los servicios se acoplan cuando se usan y esto puede dar lugar a un acoplamiento positivo o negativo y esto último tiene que ver con el impacto que se genera en los consumidores especialmente cuando existen cambios.
La siguiente imagen resume los tipos de acoplamiento, su generación y características como Principio de la Arquitectura Orientada a Servicios SOA.

5. Ocultamiento de servicios
Este Principio de la Arquitectura Orientada a Servicios SOA aboga por el ocultamiento deliberado de información del servicio, de tal forma que una mínima cantidad de información sobre el servicio es accedida por el mundo exterior.

6. Control de acceso a servicios
Los procedimientos de control de acceso son un Principio de la Arquitectura Orientada a Servicios SOA, por consiguiente se pueden convertir en un requerimiento, el cual necesitaría ser orientado sobre un nivel organizacional, a través de la introducción de procesos nuevos o modificados.

7. Composición de servicios
La aplicación de este Principio de la Arquitectura Orientada a Servicios SOA puede convertir, efectivamente, a un servicio en una “caja negra”, donde la única información que esté disponible acerca del servicio es la que está publicada en su contrato.
Como resultado de este principio, los diseñadores del programa consumidor del servicio puede no ser conscientes que un servicio está componiendo a otros.
Esto coloca un gran énfasis en la fiabilidad de un servicio (lo cual también plantea cuestiones en cuanto a lo que debería publicarse en los ANS del servicio).

8. Reutilización de servicios
Dentro de la orientación de servicios y como Principio de la Arquitectura Orientada a Servicios SOA, la reutilización representa una característica primaria y central del diseño que esta ligada a la meta de alcanzar un ROI. Proporcionar los servicios como recursos empresariales reutilizables se relaciona con el patrón de diseño Centralización de la lógica.

9. Autonomía de servicios
La autonomía de los servicios individuales es especialmente importante para la efectividad de las composiciones del servicio. Debido a que un servicio que compone a otro automáticamente pierde autonomía, el nivel de autonomía entonces también depende de la composición de servicios.
