aviso Legal
Espero não pisar nos pés de ninguém ou ofender os entusiastas de qualquer um dos conceitos
fundo
Eu tenho procurado diferenças reais entre arquitetura orientada a serviços e microsserviços, sem encontrar nenhuma resposta clara.
Eu li coisas como:
- os efeitos colaterais da SOA
- SOA sendo anti-padrão
- Os microsserviços vieram corrigir as falhas da SOA
- ESBs não são realmente ESBs, são EAIs
- Dependência excessiva de Message Brokers
- Os fornecedores estão abusando da noção de SOA e tentando vender seus produtos
- SOA cresce incontrolavelmente
Mas, ainda assim, nada define claramente diferenças arquiteturais entre Arquitetura Orientada a Serviços (como conceito) e Microsserviços (como conceito)
De acordo com o que eu entendi, ambos têm:
- Provedores de Serviços, fazendo apenas uma coisa
- Service Gateway / ESB que expõe esses serviços aos consumidores
- Consumidores de serviços, acessando serviços via ESB / Service Gateway
Questão
Então, há algo diferente além de re-rotular SOA em microsserviços? é uma restrição de tecnologia colocada para impedir que os microsserviços se tornem macro?
Nota: Não estou à procura de opiniões, apenas fatos concretos, espero que em pontos de bala
Referências
- Perguntas sobre engenharia de software
- Site de Martin Fowler (acho que ele odeia muito)
- Mundo da informação
- Site de Michael Fethers
- Perguntas sobre estouro de pilha
Atualizar
Parece que um debate semelhante ocorreu em uma questão de estouro de pilha , com opiniões divididas, independentemente de os microsserviços estarem disfarçados em arquitetura orientada a serviços.
Conclusão da pergunta SO:
- MS é um caso especial de SOA
- MS endossa tamanho menor de aplicativos que hospedam serviços
- O MS depende da tecnologia (o uso de HTTP em vez de opções de protocolo aberto)
- A Microsoft confia na tecnologia para impor disciplina (implantação automática de serviços)
- O MS considera ESBs (mal), mas usa Gateways de API, que IMHO é um tipo de ESB
Isso conclui que o MS é SOA, se o seguinte for verdadeiro:
- Os Estados-Membros apoiam a noção de orquestração? Um ou mais processos principais gerenciam fluxos de trabalho
- Existe uma camada do intermediário de mensagens no MS? Um conjunto de adaptadores que traduzem formatos de mensagem do espaço de mensagem dos produtores de serviços para os consumidores de serviços
- Os microsserviços podem ler dados de aplicativos corporativos monolíticos? Podem ser APIs de um aplicativo monolítico? ou deve ser aplicativos autônomos independentes, capazes de operar independentemente?
Se a resposta para a última pergunta for negativa, os microsserviços não serão capazes de lidar com sistemas complexos de fluxo de trabalho, por exemplo, sistemas de gerenciamento de cartão de crédito ou sistemas de reconciliação
fonte
Martin Fowler's Site (I think he hates it big time)
Não foram meus sentimentos quando fui à sua palestra em Barcelona. Ele está ciente das vantagens e desvantagens de como as pessoas mudaram para essa arquitetura cegamente, sem considerar que o MS não é adequado para todos.Respostas:
A principal diferença, que tem conseqüências generalizadas do projeto, é que, com os microsserviços, esses provedores de serviços são implantáveis e escalonáveis independentemente .
Isso é ótimo, porque você pode ser mais ágil. Se um serviço precisar ser alterado, você apenas altera esse, nenhum de seus parentes. Se você quiser experimentar uma nova estrutura ou linguagem, faça um substituto para esse serviço. Se você precisar repentinamente de 100x de capacidade, instale novas máquinas com esse serviço para lidar com esse fluxo. Se você quiser fazer uma versão de alguma coisa, apenas faça a versão sem tocar no aplicativo inteiro . E torna as coisas mais fáceis de monitorar, instrumentar, dividir entre equipes, obsoletas ...
Mas vem com algumas implicações de heafty:
fonte
Aqui está o resultado final A única diferença óbvia entre SOA e microsserviços é a noção de
Diferentemente da SOA , isso dependeria de consumidores e produtores de serviços alheios, delegando o gerenciamento de tráfego, a tradução do formato da mensagem e a orquestração de serviços para sistemas externos, por exemplo, ESB, Service Orchestrator, Message broker.
fonte