¿Qué es la arquitectura orientada a servicios?

La arquitectura orientada a servicios(SOA, por sus siglas en inglés) es un método de desarrollo de software que utiliza componentes de software llamados servicios para crear aplicaciones empresariales. Cada uno de estos servicios brinda una capacidad empresarial y, además, pueden comunicarse también con el resto de servicios mediante diferentes plataformas y lenguajes. Los desarrolladores usan SOA para reutilizar servicios en diferentes sistemas o combinar varios servicios independientes para realizar tareas complejas.

Por ejemplo, una variedad de procesos empresariales en una organización requiere la funcionalidad de autenticación de usuarios. En lugar de reescribir el código de autenticación para todos los procesos empresariales, puede crear un servicio de autenticación único y reutilizarlo para todas las aplicaciones. De manera similar, casi todos los sistemas en una organización de atención médica, como sistemas de administración y pacientes y sistemas de registro de salud electrónico (EHR), necesitan registrar pacientes. Dichos sistemas pueden llamar a un único servicio común para realizar la tarea de registro de pacientes.

¿Cuáles son los beneficios de la arquitectura orientada a servicios?

La arquitectura orientada a servicios (SOA) ofrece varios beneficios por encima de las arquitecturas monolíticas tradicionales, donde todos los procesos se ponen en marcha como una unidad única. Algunos de los principales beneficios de la SOA incluyen los siguientes:

Reducción del plazo de comercialización

Los desarrolladores reutilizan servicios en diferentes procesos empresariales para ahorrar tiempo y dinero. Pueden crear aplicaciones en menos tiempo con SOA en lugar de escribir código y llevar a cabo integraciones desde cero.

Mantenimiento eficiente

Es más fácil crear, actualizar y corregir errores en servicios pequeños que en bloques grandes de código en aplicaciones monolíticas. La modificación de un servicio en SOA no afecta a la funcionalidad general del proceso empresarial.

Excelente capacidad de adaptación

La SOA se adapta de mejor manera a los avances tecnológicos. Puede modernizar sus aplicaciones de forma eficiente y rentable. Por ejemplo, los organizaciones de atención médica pueden utilizar la funcionalidad de sistemas de registro de salud electrónico antiguos en aplicaciones basadas en la nube que son más recientes.

 

¿Cuáles son los principios básicos de la arquitectura orientada a servicios?

No existen directrices estándar bien definidas para la implementación de la arquitectura orientada a servicios (SOA). Sin embargo, algunos principios básicos son comunes en todas las implementaciones de SOA.

Interoperabilidad

Cada servicio en SOA incluye documentos descriptivos que especifican la funcionalidad del servicio, así como las condiciones y términos relacionados. Cualquier sistema de cliente puede ejecutar un servicio, independientemente de la plataforma o el lenguaje de programación subyacente. Por ejemplo, los procesos empresariales pueden utilizar servicios escritos en C# y Python. Dado que no hay interacciones directas, los cambios realizados en un servicio no afectan a otros componentes que lo utilizan.

Acoplamiento flexible

Los servicios en SOA deben acoplarse de forma flexible, teniendo tan poca dependencia en recursos externos, como modelos de datos o sistemas de información, como sea posible. También deben prescindir de un estado sin retener ninguna información sobre sesiones o transacciones pasadas. De esta forma, si se modifica un servicio, no afectará de forma significativa a las aplicaciones del cliente ni a otros servicios que utilicen dicho servicio.

Abstracción

Los clientes o usuarios de servicios en SOA no tienen la necesidad de conocer la lógica del código del servicio o los detalles de la implementación. Para ellos, los servicios deben aparecer como una caja negra. Los clientes obtienen la información necesaria sobre lo que hace el servicio y cómo utilizarlo a través de contratos de servicio u otros documentos descriptivos sobre el servicio.

Granularidad

Los servicios en SOA deben tener el tamaño y el alcance adecuados; idealmente, deben contar con
una función empresarial discreta por servicio. Los desarrolladores, por su parte, pueden utilizar varios servicios para crear un servicio compuesto para que lleve a cabo operaciones complejas.

¿Cuáles son los componentes de la arquitectura orientada a servicios?

Existen cuatro componentes principales de la arquitectura orientada a servicios (SOA).

Servicio

Los servicios son los componentes básicos de la SOA. Pueden ser privados (disponibles únicamente para los usuarios internos de una organización) o públicos (accesibles para todos en Internet). Cada servicio individual tiene tres características principales.

Implementación de servicios
La implementación de servicios es el código que crea la lógica para realizar la función de servicio específica, como la autenticación de usuarios o el cálculo de una factura.

Contrato del servicio
El contrato del servicio define la naturaleza del servicio y sus condiciones y términos asociados, como los prerrequisitos para utilizar el servicio, su costo y la calidad del servicio proporcionado.
 
Interfaz del servicio
En SOA, otros servicios o sistemas se comunican con un servicio a través de su interfaz. Esta interfaz define la manera en que se puede invocar al servicio para llevar a cabo actividades o intercambiar datos. Reduce las dependencias entre los servicios y quien los solicita. Por ejemplo, incluso los usuarios con poco o nulo entendimiento de la lógica de código subyacente pueden utilizar un servicio a través de su interfaz.

Proveedor de servicios

El proveedor de servicios crea, mantiene y proporciona uno o más servicios que otros pueden utilizar. Las organizaciones pueden crear sus propios servicios o adquirirlos de proveedores de servicios externos.

Consumidor de servicios

El consumidor de servicios solicita al proveedor de estos poner en marcha un servicio específico. Puede ser un sistema completo, aplicación u otro servicio. El contrato de servicio especifica las reglas que el proveedor y el consumidor de servicios deben seguir al momento de interactuar entre sí. Los proveedores y consumidores de servicios pueden pertenecer a departamentos, organizaciones o incluso sectores diferentes.

Registro de servicios

Un registro de servicios, o repositorio de servicios, es un directorio de servicios disponibles accesible a través de redes. Almacena documentos descriptivos sobre el servicio que pertenecen a los proveedores de servicios. Los documentos descriptivos contienen información acerca del servicio y cómo comunicarse con él. Los consumidores de servicios pueden descubrir fácilmente los servicios que necesitan por medio de dicho registro.

¿Cómo funciona la arquitectura orientada a servicios?

En la arquitectura orientada a servicios (SOA), los servicios funcionan de forma independiente y proporcionan intercambios de datos o funcionalidades a sus consumidores. El consumidor solicita información y envía datos de entrada al servicio. El servicio procesa los datos, realiza la tarea y edevuelve una respuesta. Por ejemplo, si una aplicación utiliza un servicio de autorización, le proporciona al servicio el nombre de usuario y la contraseña. El servicio verifica el nombre de usuario y la contraseña y arroja una respuesta adecuada.

Protocolos de comunicación

Los servicios se comunican mediante reglas establecidas que determinan la transmisión de datos en una red. Estas reglas se llaman protocolos de comunicación. Algunos protocolos estándar para implementar SOA incluyen los siguientes:

• Protocolo simple de acceso a objetos (SOAP)
• RESTful HTTP
• Apache Thrift
• Apache ActiveMQ
• Servicio de mensajes de Java (JMS)

Incluso puede utilizar más de un protocolo en la implementación de SOA.

¿Qué es un ESB en la arquitectura orientada a servicios?

Un bus de servicio empresarial (ESB, por sus siglas en inglés) es un software que puede utilizar durante la comunicación con un sistema que tiene varios servicios. Establece la comunicación entre los servicios y sus consumidores, independientemente de la tecnología.  

Beneficios de un ESB

Un ESB proporciona capacidades de comunicación y transformación a través de una interfaz de servicio reutilizable. Un ESB se puede considerar como un servicio centralizado que dirige las solicitudes de servicio al servicio adecuado. También transforma la solicitud en un formato aceptable para la plataforma y lenguaje de programación subyacentes del servicio.

¿Cuáles son las limitaciones de implementar la arquitectura orientada a servicios?

Escalabilidad limitada

La escalabilidad de sistemas se ve seriamente afectada cuando los servicios comparten varios recursos y necesitan coordinarse para realizar su respectiva funcionalidad. 

Aumento en las interdependencias

Los sistemas de la arquitectura orientada a servicios (SOA) se pueden volver cada vez más complejos y desarrollar varias interdependencias entre servicios. Puede ser complicado modificar o corregir errores si varios servicios se llaman entre sí en bucle. Los recursos compartidos, como las bases de datos centralizadas, también pueden ralentizar el sistema.

Punto único de error

Para las implementaciones de SOA con un ESB, este crea un punto único de error. Se trata de un servicio centralizado, que va en contra de la idea de descentralización que defiende la SOA Los clientes y servicios no se pueden comunicar entre sí en lo absoluto si el ESB se cae.

¿Qué son los microservicios?

La arquitectura de microservicios se compone de componentes de software muy pequeños y completamente independientes, llamados microservicios, que se especializan y se centran únicamente en una tarea. Los microservicios se comunican a través de las API, las cuales son reglas que los desarrolladores crea para permitir que otros sistemas de software se comuniquen con su microservicio.

El estilo arquitectónico de los microservicios se adapta de mejor manera a los entornos de computación en la nube modernos. A menudo funcionan en contenedores, unidades de software independientes que contienen código con todas sus dependencias.

Beneficios de los microservicios

Los microservicios se escalan de forma independiente, son rápidos, portátiles y no dependen de una plataforma, características nativas de la nube. También están desacoplados, lo que significa que tienen poca a nula dependencia en otros microservicios. Para lograrlo, los microservicios tienen acceso local a todos los datos que necesitan en lugar de acceso remoto a datos centralizados a los que acceden y utilizan otros sistemas. Esto crea una duplicación de datos que los microservicios compensan con rendimiento y agilidad.

SOA en comparación con los microservicios

La arquitectura de microservicios es una evolución del estilo arquitectónico de SOA. Los microservicios tratan los defectos de SOA para hacer que el software sea más compatible con entornos empresariales modernos basados en la nube. Son detallados y favorecen la duplicación de datos en contraste con el intercambio de datos. Por ello, son completamente independientes y cuentan con sus propios protocolos de comunicación que se exponen a través de API sencillas. Básicamente, es el trabajo de los consumidores utilizar el microservicio a través de su API, lo que elimina la necesidad de un ESB centralizado.

¿Cómo puede ayudar AWS a la hora de implementar microservicios?

AWS es un lugar excelente para crear aplicaciones modernas con patrones arquitectónicos modulares, modelos operativos sin servidor y procesos de desarrollo ágiles. Ofrece la plataforma más completa para el desarrollo de microservicios con altos niveles de disponibilidad con el fin de impulsar aplicaciones modernas de cualquier alcance y escala. Por ejemplo, puede hacer lo siguiente:

• Crear, aislar y ejecutar microservicios seguros en contenedores administrados para simplificar operaciones y reducir el gasto general de administración.
• Utilizar AWS Lambda para ejecutar microservicios sin aprovisionar ni administrar servidores.
• Elegir entre 15 bases de datos de AWS personalizadas, relacionales y no relacionales, para admitir la arquitectura de microservicios.
• Supervisar y controlar fácilmente los microservicios que se ejecutan en AWS con AWS App Mesh.
• Supervisar y solucionar problemas de interacciones complejas entre microservicios con AWS X-Ray.

Los microservicios en AWS le permiten innovar más rápido, reducir riesgos, acelerar el tiempo de comercialización y disminuir el costo total de propiedad. Para comenzar a utilizar SOA y microservicios en AWS, cree una cuenta de AWS hoy mismo.

Siguientes pasos en AWS

Conozca otros recursos relacionados con el producto
Obtenga más información sobre la arquitectura orientada a servicios 
Regístrese para obtener una cuenta gratuita

Obtenga acceso inmediato al nivel Gratuito de AWS. 

Regístrese 
Comience a crear en la consola

Comience a crear con AWS en la consola de administración de AWS.

Iniciar sesión