Michael Chen | Estratega de contenido | 28 de marzo de 2024
La arquitectura orientada a servicios (SOA) es un método de diseño de software que se centra en la construcción de sistemas de software funcionales y escalables a partir de componentes individuales, llamados servicios. Los servicios pueden interactuar entre sí para realizar tareas, como permitir que alguien inicie sesión una vez y acceder a una variedad de aplicaciones de negocio. En la SOA, se hace hincapié en la modularidad, la reutilización y la interoperabilidad: cuando las empresas dividen las aplicaciones complejas en bloques más pequeños y manejables, el resultado es un incremento de la flexibilidad y la escalabilidad.
Los servicios no están codificados en las aplicaciones. En su lugar, los servicios se publican en un registro y, cuando una aplicación desea utilizar uno, solicita al registro que encuentre la última versión. De esta manera, personas que carezcan de un profundo conocimiento de la aplicación pueden cambiar o actualizar fácilmente los servicios. Un enfoque SOA facilita la adaptación a las cambiantes necesidades empresariales y la integración de sistemas que proporcionan funcionalidades relacionadas.
Con la SOA, los servicios individuales están débilmente acoplados y pueden comunicar y transmitir datos según sea necesario. Por ejemplo, adoptar un enfoque de SOA para desarrollar software en la nube genera diversas ventajas, entre las que se incluyen:
Entre los ejemplos de arquitecturas orientadas a servicios se incluyen:
Una arquitectura orientada a servicios (SOA) es un paradigma de diseño que crea o complementa aplicaciones con bloques de construcción autónomos y reutilizables— servicios— que proporcionan funciones específicas y se pueden invocar a través de una red. Cada servicio tiene un ámbito definido, y otros componentes o servicios de la arquitectura pueden acceder a él para mejorar la funcionalidad general y el rendimiento del sistema.
Entre los ejemplos de servicios que incluye una SOA, se incluyen procesamiento de pagos, gestión de clientes o una recomendación de producto que se pueda incrustar en un sitio de comercio electrónico. Los demás servicios pueden ser mucho más sencillos, como uno que presente la hora de una ciudad situada en la otra punta del planeta. Un ejemplo de las excelentes ventajas de uso de la SOA sería el cambio de procesadores de pago. Esta modificación se puede realizar sin alterar las aplicaciones que necesitan utilizar el servicio.
La SOA crea una infraestructura de software modular y flexible, donde los servicios individuales se pueden desarrollar, probar y desplegar de forma independiente. La facilidad de mantenimiento y la escalabilidad son dos ventajas clave.
La SOA funciona mediante el acoplamiento débil de servicios en el marco de una aplicación. Cada servicio funciona como un módulo capaz de entregar la información de entrada/salida solicitada. La aplicación no necesita conocer la versión del servicio que está utilizando. En su lugar, comprueba un registro y encuentra el servicio más actual que ofrezca la funcionalidad necesaria. Consideremos el siguiente flujo de trabajo del sitio web de una empresa retail creado con un modelo de SOA.
La SOA acelera el desarrollo de este tipo de sitios, ya que permite la integración de servicios de forma inmediata. En este ejemplo, la empresa de retail no solo se ahorra la carga de desarrollar cada uno de esos módulos individualmente, sino que también evita la necesidad de realizar el seguimiento de las actualizaciones del servicio. El departamento de TI simplemente puede utilizar servicios examinados que ofrezcan niveles probados de funcionalidad, seguridad y disponibilidad.
La clave para el desarrollo de una SOA es pensar de forma modular y comprender dónde existen oportunidades para la integración de servicios. Las aplicaciones desarrolladas en la nube pueden aprovechar fácilmente enormes matrices de servicios de estilo SOA implementadas como servicios web.
Una infraestructura SOA modular y flexible ofrece grandes ventajas a las empresas que adoptan la nube. Estas son otras tendencias clave.
¿Cuál sería un ejemplo de arquitectura orientada a servicios?
Por ejemplo, una aplicación para runners sería una arquitectura orientada a servicios de consumo. En lugar de crear herramientas personalizadas para el seguimiento de distancias y mapas, la aplicación puede integrar servicios para el dispositivo GPS del teléfono y un servicio de mapas existente, como Google Maps. También puede mostrar el clima local del Servicio Meteorológico Nacional. El trabajo de la aplicación es presentar sin problemas datos de estos servicios en beneficio del runner.
¿En qué se diferencia la SOA de los microservicios?
La SOA y los microservicios comparten un objetivo similar: proporcionar a las aplicaciones funcionalidad a través de llamadas de funciones basadas en red. Sin embargo, la SOA considera el uso en un nivel amplio, y generalmente superior. Los microservicios consideran el uso a nivel de aplicación y proporcionan servicio para que una única tarea extremadamente especializada se repita siempre que sea necesario. Por ejemplo, un plugin de autenticación para conexión segura se consideraría parte de SOA. Sin embargo, un servicio repetible que cifre la contraseña sería un microservicio. Los microservicios se pueden invocar dentro de un servicio SOA o se pueden integrar en un proyecto más grande. En este ejemplo, el servicio de autenticación utilizará el microservicio de cifrado para realizar su trabajo. El alcance es la principal diferencia entre los dos.
¿Cuáles son las principales características de una arquitectura orientada a servicios?
Las principales características de la arquitectura orientada a servicios incluyen:
¿Dónde se utiliza la arquitectura orientada a servicios?
Una arquitectura orientada a servicios se puede utilizar para casi cualquier aplicación siempre que se disponga de servicios independientes para cumplir los requisitos del sistema. Debido al amplio ecosistema de desarrollo de servicios, la mayoría de los creadores de software pueden encontrar el servicio necesario para cubrir una necesidad, incluso el proyecto más personalizado aún podrá utilizar un servicio independiente para tareas como la autenticación de identidades o la extracción de datos cartográficos.