Resumidamente, o estilo arquitetural de microsserviços é uma abordagem para desenvolver uma única aplicação como um grupo de pequenos serviços, cada um executando em seu próprio processo e se comunicando com mecanismos leves, frequentemente uma API com recursos HTTP. Estes serviços são construídos em torno de aptidões de negócio e implantados independentementer por um maquinário de deploy completamente automatizado. Existe um mínimo de gerenciamento centralizado destes serviços, que podem ser escritos em diferentes linguagens de programação e usar diferentes tecnologias de armazenamento de dados.
Component
Carro:
Em software podemos ter componentização através da criação de Bibliotecas ou de Serviços. Quando estamos usando o paradigma de microsserviços, obviamente estamos implementando componentização através de serviços.
Definição crucial do termo microsserviços:
No paradigma de microsserviços, vc precisa ser capaz de substituir e/ou evoluir o seu microsserviço de maneira independente e sem afetar seus clientes.
Divisão tradicional:
O que é preconizado em microsserviços
Essa configuração favorece uma visão de "foco no cliente".
Ao invés de agrupar várias pessoas da mesma disciplina, focadas no seu nicho, focadas no seu "mundinho", temos um grupo multi-disciplinar focado em entregar valor para o cliente daquel serviço (tanto faz se é interno à organização ou externo)
A inteligência fica nos endpoints. Não usar middleware.
Cada microsserviço é responsável por seus dados.
"Microsserviço é um termo mais modernoso que criaram mas já praticamos isso a muito tempo com SOA!"
Podemos dizer que Microsserviços é uma maneira bem específica de fazer SOA (Arquitetura Orientada a Serviços).
"It must be understandable by a single person." - too vague.
20:05
benefits | costs |
---|---|
strong module boundaries | distribution |
independente deployment | eventual consistency |
technology diversity | operational complexity |
Monolith | Microservice |
---|---|
Simplicity | Partial Deployment |
Consistency | Availability |
Inter-module refactoring | Preserve Modularity |
~ | Multiple Platforms |
A decisão "monólito ou microsserviços" não é apenas tecnológica, também está muito relacionado com como você quer organizar as pessoas.
People usually complain about silos. But it's human nature to form silos. Groups of people that want to get together. What we wanna do is to rearrange things so that those silos are in the most productive manner possible. That is really what is driving a lot of interest in microservices.
Rapid Provisioning
Basic Monitoring
Rapid Application Deployment
DevOps Culture
Plus:
Achei uma referência à esta apresentação no site do Martin Fowler:
https://vimeo.com/74452550