¿Alguien puede explicar en un lenguaje sencillo de qué se trata SOA ? Escucho SOA aquí, SOA allá, pero no puedo entender exactamente qué es y para qué se utiliza. ¿Fue un concepto simple y luego se convirtió en algo enorme o qué?
Todos los documentos, incluido el wiki, son un poco abstractos o tal vez soy un idiota y no lo entiendo. ¿Hay una guía para idiotas sobre esto?
¿Qué hay exactamente detrás de estas tres letras?
Respuestas:
Puede que le resulte útil este artículo (¿Qué es SOA? - Explicación de SOA y servicios web) .
Un pequeño adelanto:
SOA es un estilo de arquitectura de aplicaciones de tal manera que se componen de agentes de software discretos que tienen interfaces simples y bien definidas y están orquestados a través de un acoplamiento flexible para realizar una función requerida.
Hay 2 roles en SOA: un proveedor de servicios y un consumidor de servicios. Un agente de software puede desempeñar ambos roles. SOA no es un concepto completamente nuevo; sin embargo, este artículo se centra principalmente en SOA implementado con servicios web.
fuente
SOA es una nueva insignia para algunas ideas muy antiguas:
Divida su código en módulos reutilizables.
Encapsule en un módulo cualquier decisión de diseño que pueda cambiar.
Diseñe sus módulos de tal manera que puedan combinarse de diferentes formas útiles (a veces llamadas "familia" o "línea de productos").
Todos estos son principios fundamentales del desarrollo de software, muchos de ellos articulados por primera vez por David Parnas.
Lo nuevo en SOA es
Lo estás haciendo en una red.
Los módulos se comunican enviándose mensajes entre sí a través de la red, en lugar de mediante mecanismos de lenguaje de programación más tradicionales, como las llamadas a procedimientos. En particular, en una arquitectura orientada a servicios, las partes generalmente no comparten un estado mutable (variables globales en un programa tradicional). O si comparten el estado, ese estado se guarda cuidadosamente en una base de datos que es en sí misma un agente y que puede administrar fácilmente varios clientes simultáneos.
fuente
Veo muchas respuestas que explican una Arquitectura Orientada a Servicios (SOA) utilizando palabras y términos técnicos aún más avanzados. Me gustaría intentar explicárselo al profano, utilizando una analogía en un lenguaje sencillo.
Pero primero se
podría describir una descripción de una SOA SOA en tres capas, como se ve en la siguiente imagen. Por un lado tenemos al Proveedor y por otro lado tenemos al Consumidor , separados por un Puente donde se comunican los dos lados.
El consumidor utiliza una serie de Aplicaciones necesarias para su negocio y el proveedor utiliza Componentes que proporcionan información a estas aplicaciones. Se comunican a través de un conjunto de servicios utilizando una arquitectura común.
La analogía
Imagine una casa en el campo, que en muchos sentidos es parte de una comunidad más grande, como una ciudad o un pueblo. La ciudad tiene sus propios sistemas complejos para proporcionar agua y electricidad, manejar el saneamiento, proporcionar transporte y otros servicios públicos. La casa es el consumidor en este modelo, la ciudad (o comunidad) es el proveedor y las tuberías, alcantarillas, líneas eléctricas, fibras ópticas, etc. es la infraestructura en la que se comunican.
Este modelo podría compararse libremente con una SOA. La gente de la casa usa una serie de "aplicaciones" diferentes como radiadores, computadoras, inodoros, lámparas, calefacción por suelo radiante, bañeras, etc. A estas aplicaciones no les importa cómo la ciudad genera el agua, crea la electricidad o maneja los desechos durante tanto tiempo como funciona. Los componentes de la ciudad son generadores, bombas de agua y áreas de saneamiento. Proporciona a la casa todas estas necesidades, pero depende de la casa utilizarla de la forma que crea conveniente.
Espero que esto le haya dado al menos a alguien una mejor imagen de una SOA.
fuente
Supongamos que tiene cuatro cocineros. En SOA, asumes que se odian entre sí, por lo que te esfuerzas por dejar que tengan que hablar entre ellos lo menos posible.
¿Cómo haces eso? Bueno, primero definirás los roles y la interfaz: el cocinero 1 hará la ensalada, el cocinero 2 hará la sopa, el cocinero 3 hará el bistec, etc. Luego, colocarás los platos bien organizados sobre la mesa (así que estos son los interfaces) y diga: "Todos, por favor, coloquen su creación en los platos asignados. No se preocupen por nadie más".
De esta manera, los cuatro cocineros tienen que hablar entre ellos lo menos posible, lo cual es muy bueno en el desarrollo de software, no necesariamente porque se odien, sino por otras razones como ubicación física, eficiencia en la toma de decisiones, etc.
También significa que puede combinar los platos (servicios) a su gusto. Por ejemplo, puede usar el postre para servir un café, o simplemente tomar la sopa y combinarla con un pan que compró en otra empresa para ofrecer un menú más económico, o dejar que otros restaurantes usen sus ensaladas para combinar con sus platos, etc. .
Una de las implementaciones más exitosas de SOA fue en Amazon. Debido a su diseño, podrían volver a empaquetar toda su infraestructura y venderla como Amazon Web Service.
* Este es solo un aspecto de SOA.
fuente
SOA es un estilo arquitectónico, pero también una visión sobre cómo se deben desarrollar e integrar aplicaciones heterogéneas. El objetivo principal de SOA es alejarse de las aplicaciones monolíticas y tener en su lugar un conjunto de servicios reutilizables. que se pueden componer para crear aplicaciones.
En mi humilde opinión, SOA solo tiene sentido a nivel empresarial y no significa nada para una sola aplicación.
En muchas empresas, cada departamento tenía su propio conjunto de aplicaciones empresariales, lo que implicaba
Se implementaron funciones similares varias veces
Los datos (por ejemplo, datos de clientes o empleados) deben compartirse entre varias aplicaciones
Las aplicaciones estaban centradas en el departamento.
Con SOA, la idea es que los servicios reutilizables estén disponibles en toda la empresa, de modo que la aplicación pueda construirse y componerse a partir de ellos. La promesa de SOA es
No es necesario volver a implementar características similares una y otra vez (por ejemplo, proporcionar un servicio al cliente o empleado)
Facilita la integración de aplicaciones juntas y el acceso a datos o características comunes
La visión de SOA requiere un cambio tecnológico así como un cambio organizacional . Si bien resuelve algunos problemas, también introduce otros, por ejemplo, la seguridad es mucho más difícil con SOA que con la aplicación monolítica. Por lo tanto, SOA está sujeto a discusión sobre si funciona o no.
Esta es la vista de 1000 pies de SOA. Sin embargo, no se detiene aquí. Hay otros conceptos que complementan a SOA como la orquestación de procesos de negocio (BPM), bus de servicios empresariales (ESB), procesamiento de eventos complejos (CEP), etc. Todos ellos abordan el problema de la alineación de TI / negocio , es decir, cómo tener la TI poder respaldar el negocio de manera eficaz.
fuente
SOA es el acrónimo de Arquitectura Orientada a Servicios.
Puede pensar en escribir un módulo de acceso a la base de datos que sea tan independiente que pueda funcionar por sí solo sin dependencias. Este módulo puede exponer clases que pueden ser utilizadas por cualquier software de host que necesite acceso a la base de datos. No hay configuración de inicio en la aplicación de host. Todo lo que se necesita o se requiere se comunica a través de clases expone por módulo de acceso a la base de datos. Podemos llamar a estas clases como servicios y considerar el módulo como habilitado para el servicio.
fuente
Según tengo entendido, el concepto básico es que se crean pequeños "servicios" que proporcionan algo útil a otros sistemas y se evita la construcción de grandes sistemas que tienden a hacer todo dentro del sistema.
Así que define un protocolo que utilizará para la interacción (digamos, podría ser servicios web SOAP) y deje que su "sistema-que-hace-algún-trabajo-comercial" interactúe con los pequeños servicios para lograr su "gran objetivo". .
fuente
Le sugiero que lea los artículos de Thomas Erl y Roger Sessions, esto le dará una idea firme de lo que es SOA. Estos también son buenos recursos, mire la SOA explicada para su jefe, una para una explicación simple.
Construyendo una SOA
Patrón de diseño SOA
Lograr la integridad en una SOA
Por qué su SOA debería ser como un VW Beetle
SOA explicado para su jefe
Rendimiento del servicio WCF
fuente
lo que suele suceder en las grandes organizaciones es que con el tiempo todo es monolítico o sistemas dispares en todas partes o un poco de ambos. Alguien finalmente entra y dice que tenemos un lío. Ahora, quieres rediseñar (dinero a alguien) todo para que se oriente en una especie de paradigma monotlítico que dependa de a quién pagues pero al mismo tiempo poder agregar piezas y partes independientemente del maestro / monolito.
Entonces compra SOA de Oracle y Oracle se convierte en el jefe de todas sus partes. Todos los demás jugadores que ingresan tienen que trabajar con SOA a través de un servicio (servicio web o lo que tenga). Oracle monolith se encarga de todo (monolith no significa despectivo). Oh, sí, tienes ASP.NET MVC en el frente o algo más.
Lo principal es mover cosas dentro y fuera del sistema sin impacto y mantener al proveedor Oracle SOA, Microsoft WCF, como el cerebro de todo. todo está bien, fluido, las cosas entran y salen con poco o ningún impacto, incluso los servicios humanos, no solo las computadoras.
Para mí, solo significa un montón de servicios web (o como los llamemos en el futuro) con una buena interfaz. Y si es el propietario de la base de datos, simplemente acceda a la base de datos y deje de preocuparse por las palabras de moda. está bien.
fuente
Solo una sugerencia: -
Leer conceptos, tecnología y diseño de SOA por Thomas Erl.
Ha proporcionado muy bien los detalles sobre SOA en un inglés sencillo y con estudios de casos.
fuente
Bueno, ya ve ... SOA significa Arquitectura Orientada a Servicios ... En las palabras más simples, escribe un fragmento de código que es muy genérico, es decir, hace algo que puede usarse en muchas aplicaciones ... puede ser algo como una libreta de direcciones o puede ser una calculadora. y lanza este código en el IIS. Entonces brindas un servicio a través de tu código. Entonces eres un proveedor de servicios. Ahora alguien quiere usar un código similar, entonces no tiene que volver a escribir el código. Simplemente usa su código tal vez a través de un servicio web. Por tanto, se convierte en consumidor de servicios. Por lo tanto, la creación de un programa utilizando dichos servicios se denomina SOA. Y el acoplamiento flojo está ahí, ya que el proveedor de servicios y el consumidor pueden estar interactuando incluso si están usando lenguajes de programación diff. Espero que entiendas.
fuente
de los blogs de ittoolbox.
A continuación, se describen las similitudes y diferencias con las técnicas de diseño anteriores:
• SOA versus programación estructurada o Similitudes: más similar a las llamadas a subrutinas donde se pasan parámetros y la operación de la función se abstrae del llamador, por ejemplo, enlace y ejecución CICS y la palabra reservada COBOL CALL. Los cuadernos se utilizan para definir la estructura de datos que normalmente se define como un esquema XML para los servicios. o Diferencias: SOA está débilmente acoplado, lo que implica que los cambios en un servicio tienen menos impacto en el consumidor (el programa de "llamada") y los servicios son interoperables entre lenguajes y plataformas.
• SOA versus OOA / OOD o Similitudes: encapsulación, abstracción e interfaces definidas o Diferencias: SOA está vagamente acoplado sin jerarquía de clases o herencia, abstracciones de bajo nivel - nivel de clase versus servicio empresarial
• SOA versus desarrollo basado en componentes (CBD) heredado, por ejemplo, CORBA, DCOM, EJB o Similitudes: reutilización mediante el ensamblaje de componentes, interfaces, llamadas remotas o Diferencias: amplia adopción de estándares, esquemas XML frente a objetos matriculados, orquestación de servicios, diseño para reutilización es más fácil, los servicios se centran en el negocio frente a los de TI, los servicios de negocio son por supuesto (amplio en alcance)
• SOA (para integración) versus integración de aplicaciones empresariales (EAI) o Similitudes: mejores prácticas (interfaces bien definidas, esquemas estandarizados, arquitectura dirigida por eventos), interfaces reutilizables, esquemas comunes o Diferencias: estándares, adopción y herramientas mejoradas
fuente
Al leer las respuestas anteriores, me parece que SOA es lo que los desarrolladores (al menos buenos) han estado haciendo desde el primer día.
fuente
También podría significar "Struct of Arrays" (a diferencia de "Array of Structs"), que es un tema común en la programación paralela (especialmente SIMD), ¡pero supongo que eso no es lo que quieres decir aquí!
fuente
SOA es una palabra de moda que fue inventada por los proveedores de tecnología para ayudar a vender sus tecnologías relacionadas con Enterprise Service Bus. La idea es que usted haga que sus pequeñas aplicaciones de isla en la empresa (por ejemplo: sistema de contabilidad, sistema de control de existencias, etc.) expongan todos los servicios, de modo que puedan ser orquestados de manera flexible en 'aplicaciones', o más bien convertirse en partes de negocios agregados de ámbito empresarial. lógica.
Básicamente, un montón de viejas tonterías que casi nunca funcionan, porque pasa por alto el punto de que las razones por las que la tecnología es como es en una organización se debe a la cultura, la evolución, la historia de la empresa, y el bloqueo es tan alto que cualquier El intento de reestructurar la tecnología está destinado al fracaso.
fuente
Escuche la edición de esta semana del podcast Floss Weekly , que cubre SOA. Las descripciones son de bastante alto nivel y no profundizan en demasiados detalles técnicos (aunque hubieran sido útiles ejemplos más concretos y reconocibles de proyectos SOA.
fuente
Una arquitectura de aplicación tradicional es:
Si desea acceder a los datos mediante programación, es posible que deba recurrir al raspado de pantalla.
SOA me parece que es una arquitectura que se enfoca en exponer datos y / o API legibles por máquina, en lugar de exponer UI.
fuente
SOA o Arquitectura Orientada a Servicios es un patrón de arquitectura de software en el que las aplicaciones o sistemas se construyen a partir de servicios de software subyacentes (y generalmente distribuidos) que se ajustan a un conjunto específico de características, a saber:
El objetivo principal de SOA es la agilidad del desarrollo de software, es decir, la capacidad de responder al cambio de manera fácil y económica, lo que permite a las empresas responder rápidamente a los mercados cambiantes.
Los servicios se implementan típicamente (pero de ninguna manera exclusivamente) como servicios web, es decir, operan sobre el ubicuo protocolo web HTTP, y se implementan utilizando SOAP basado en XML o el paradigma REST ligero (y más popular).
fuente
¡Depende de quién seas!
Si es propietario de un negocio, SOA es una solución para aumentar sus ingresos y agilidad empresarial. Si eres un arquitecto empresarial, SOA es una forma de dibujar un software agradable y limpio en un lienzo en blanco. Si es arquitecto, SOA es la solución para diseñar servicios acoplados libremente sobre una plataforma de integración, para simplemente conectar los servicios a los puntos de venta. Si eres un desarrollador, SOA es un paradigma de programación donde un servicio está en el centro del diseño y el código.
Debería leer 100-SOA-Questions [pdf]
Salud
fuente
La Arquitectura Orientada a Servicios (SOA) es un estilo de arquitectura de software que crea aplicaciones como una colección de partes conectables, cada una de las cuales puede ser reutilizada por otras aplicaciones.
fuente