O termo “Arquitetura Orientada a Serviços” se tornou um jargão sem sentido? [fechadas]

25

Hoje me perguntaram se eu tinha experiência com "Arquitetura Orientada a Serviços" e, apesar de achar que sim. O conceito, para mim, parece tão confuso que não sei mais como você poderia responder honestamente a essa pergunta.

Recorri ao Google no termo em um esforço para obter uma definição concisa do conceito e como ele difere de outras arquiteturas. Depois de ler vários artigos, o único encadeamento comum que parece ser capaz de encontrar é um sistema com vários componentes que se comunicam sobre algum tipo de interface, talvez com uma ligeira preferência pelo XML / SOAP.

Parece que quase qualquer aplicativo pode ser definido como SOA, especialmente um aplicativo da web. Esse termo caiu na armadilha da "Web 2.0" e se tornou um termo que significa o que você quer que ele signifique?

Estou fora da base aqui? Quando vocês ouvem o termo, isso significa algo específico para você? Nesse caso, eu adoraria uma definição concisa que demonstre claramente o que é e o que especificamente não é SOA.

JohnFx
fonte
39
Sempre foi um jargão sem sentido.
Fosco
6
Em holandês, SOA significa DST.
Joeri Sebrechts
1
SOA é um conceito de "usuário paga"? Ou seja, tradicionalmente, as empresas tratam a TI como um custo que deve ser minimizado. Isso cria um perigo oculto, porque as empresas não sabem quanto TI pode ser reduzido até que a produtividade em toda a empresa seja impactada. SOA era uma maneira de fazer TI, de modo que o departamento de TI possa calcular exatamente quanto recurso de TI foi consumido por cada departamento (como Finanças, Vendas e Recursos Humanos) e cobrá-los adequadamente. Pode ser altamente ineficiente, mas é um mal necessário. Incapacidade de cobrar o usuário leva ao resultado de perder a perder.
Rwong
1
Eu mesmo não usei muito o SOA (P), mas ouvi dizer que a Arquitetura Orientada a Serviços (SOA) era uma sigla para SOAP (Simple Object Access Protocol) quando ele deixou de ser "Simples".
Andrew Grimm
2
Ei, as pessoas pagam muito dinheiro por essas coisas. Não confunda a situação com significados e detalhes. A gerência deve parecer que eles sabem do que estão falando e estar na vanguarda das palavras-chave. Não tire esse caminho deles. O que mais restaria?
JeffO

Respostas:

12

Acredito que o significado original de SOA foi baseado em serviços com interfaces bem definidas que podem ser consumidas programaticamente . O foco estava nas interfaces de serviço, e não nos terminais, comunicações ou bancos de dados da interface do usuário. A parte principal foram os serviços que consomem outros serviços. O Serviço A pode ligar para o Serviço B, obter o resultado e chamar o Serviço C ou D. Você pode ter um conjunto de serviços especializados e arquitetar uma solução, combinando-os de uma maneira que resolva o problema do cliente.

A SOA geralmente é confundida com SaaS (software como serviço), que se refere ao modelo de preços no qual o usuário paga pelo uso do serviço ao qual se inscreveu, em vez de comprar uma licença para uma cópia do produto de software. Para responder ao terceiro parágrafo da sua pergunta, um aplicativo da Web provavelmente não é SOA, mas pode ser SaaS.

O termo definitivamente perdeu parte de seu significado. Na organização em que trabalho, o termo SOA é frequentemente usado de forma intercambiável com SaaS e refere-se a uma equipe de profissionais de TI ( tecnologia da informação em oposição ao desenvolvimento de produtos de software ) que configuram servidores e roteadores e instalam produtos de software para executá-los. Alguns deles têm títulos como "SOA Architect", mas nenhum deles tem nada a ver com arquitetura, design, implementação ou teste do software.

azheglov
fonte
1
Acho que você acertou a cabeça aqui.
Reinierpost
1
+1. Você resumiu em poucos parágrafos o que o livro SOA típico faz em 800 páginas de cotão.
Prasopes
4

Fiz a mesma coisa pesquisando SOA no Google para ver o que realmente é, e sim, é abusada um pouco. Quando penso em SOA, penso no seguinte:

  1. Um programa sem cabeça detectável ...
  2. Isso faz uso da conectividade sem estado (ala HTTP) ...
  3. Comunicação em formatos independentes de plataforma

A SOA pode ser contrastada com a arquitetura Client-Server (uma arquitetura de serviço com estado) e as bibliotecas, que são módulos conectados aos programas por meio de um vinculador.

Então, quando as pessoas falam sobre isso, geralmente tomo com um grão de sal. Eu também tendem a chamá-lo de "serviços da web". Com serviços web, a arquitetura está implícita.

Tjaart
fonte
2
Poderia ser a arquitetura servidor-servidor?
JeffO
3

As definições estritas de SOA estão muito além da linha de custo / benefício e são teóricas em muitos casos.

A menos que seu produto seja o serviço em si, muitas vezes você precisa de um ponto de vista diferente.

Uma definição utilizável de SOA significa que sua arquitetura geral é amigável ao serviço. Um sistema construído completamente a partir de serviços atômicos geralmente não é o plano certo, e alguns serviços serão organizados funcionalmente, enquanto outros serão de responsabilidade única. Talvez eu tenha caixas pretas, processos offline, mas se houver uma coleção de serviços detectável através da qual eu possa obter uma quantidade significativa de trabalho, essa é a minha definição mínima.

Além do debate sobre o que realmente significa, o conceito (o que quer que isso signifique) sofreu em muitos círculos ao ser aplicado a lugares em que simplesmente não se encaixa.

Por exemplo, se estou construindo algo que deve ser um processo de caixa preta e escalonado através de paralelismo, não de segmentação e distribuição, posso ter um serviço para expor / conversar com a caixa preta, mas algumas pessoas continuam tentando colocar os serviços dentro da caixa preta caixa.

Como definição técnica estrita, ela sempre foi indefinida, mas a idéia não deixa de ter mérito onde ela se encaixa.

Conta
fonte
3

Tive a sorte de trabalhar em alguns sistemas corporativos nos quais o gerenciamento foi vendido em SOA. Como desenvolvedor, olho para os sistemas e vejo um monte de software por trás de um serviço da Web que faz coisas. Poderia ter sido escrito em uma variedade de linguagens e arquiteturas, algumas das quais não importariam ou seriam relevantes para os clientes que chamam os serviços e outras não possuem, na verdade, a sigla "SOA" em qualquer lugar da documentação.

Mas a gerência quer "SOA" !!! Por isso, eles compraram servidores muito caros de uma certa empresa grande, com adesivos "SOA" aplicados sobre os adesivos "Serviços da Web" anteriores, aplicados sobre os adesivos "JEE" anteriores, aplicados sobre .... Você entendeu a ideia. E, como resultado, nós, como desenvolvedores, sentamos arrastando e soltando ícones minúsculos em torno de uma tela para criar "SOA" "COMPONENTES", que funcionam tão bem quanto se tivéssemos feito algo simples, como beans EBJ3, componentes de mola etc. .

Portanto, meu conselho é que, se você for perguntado sobre SOA, diga "Sim, eu fiz SOA, escrevi muitos sistemas que usam uma Arquitetura Orientada a Serviços para fazer as coisas. De qual tecnologia SOA você está perguntando?". E se eles começarem a conversar com olhos brilhantes e olhares melancólicos sobre um SOA COMPONENTES, ARRASTE E QUEDA, e como isso facilita o desenvolvimento. Afaste-se lentamente e evite fazer contato visual!

drekka
fonte
2

Eu acho que pode fazer um pouco de sentido: uma coisa é quando você tem módulos "escravos" chamados quando necessário, e outra é quando você tem processos de serviço / daemon executando de forma independente e respondendo às suas solicitações, possivelmente conversando entre si, vivendo suas experiências. própria vida em outras palavras. Com essa abordagem, você pode ter um sistema enorme, escalável e fisicamente distribuído. Eu já vi alguns na área de telefonia móvel, por exemplo. Mas isso é apenas um palpite.

(Agora vamos ver o que a Wikipedia diz sobre SOA ... Whoa.)

mojuba
fonte
Então, para resumir. A arquitetura é SOA se houver mais de um processo em execução, com cada processo executando uma tarefa distinta, e eles conversam entre si de alguma maneira?
precisa saber é
@JohnFx: Sim. Dessa forma, é mais fácil criar sistemas altamente escalonáveis ​​e altamente disponíveis / redundantes.
Mjuba