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
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.