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.
fonte
Respostas:
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.
fonte
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:
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.
fonte
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.
fonte
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!
fonte
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.)
fonte