Este documento discute a arquitetura de microserviços e como ela pode ser implementada com ASP.NET 5 e Docker. A arquitetura de microserviços envolve decompor uma aplicação em vários serviços menores e independentes que se comunicam através de HTTP. Isso traz vantagens como escalabilidade, manutenibilidade e capacidade de adotar novas tecnologias de forma independente para cada serviço. O documento também mostra como Docker pode facilitar o deploy e gerenciamento destes microserviços.
2. WALDYR FELIX
Arquiteto Líder no Time de Operações Críticas &
Consultoria da FCamara
Microsoft MVP de ASP.NET desde 2012
Fundador do Grupo ASP.NET BRASIL
Blog: waldyrfelix.net
Twitter/LinkedIn/Facebook: waldyrfelix
4. APLICAÇÕES MONOLÍTICAS
1 esquema de build
1 esquema de deployment
1 única arquitetura
1 única pilha tecnológica
Vantagens
1. Simples de desenvolver
2. Simples de escalar horizontalmente
3. Fácil de padronizar
4. Fácil de replicar
5. APLICAÇÕES MONOLÍTICAS
Desvantagens
1. Difícil de mudar, por alto impacto
2. Difícil adoção de novas tecnologias
3. Com o tempo fica complicado de manter
4. Refatorar pode levar horas
5. Escalabilidade limitada
6. Geralmente foge do controle
7. Rapidamente torna-se um gigante
6. APLICAÇÕES MONOLÍTICAS
Casos Reais
1. Método com 1890 linhas
2. Classes com mais de 3 mil linhas
3. Manutenability Index = 0
4. Query SQL com 1780 linhas
8. DEFINIÇÃO DE MICROSERVICES
Modelo arquitetural definido por decomposição de
uma aplicação em componentes gerenciáveis e
instaláveis independentemente.
9. DEFINIÇÃO DE MICROSERVICES
A decomposição deve ser feita de forma vertical;
Instalação independente, significa que não deve haver estado compartilhado
entre serviços;
A comunicação deve ser feita entre processos via HTTP/REST;
O termo “micro” refere-se ao tamanho dos componentes.
12. ARQUITETURA DOS MICROSERVICES
Filosofia Unix de aplicações
“Faça apenas uma coisa e faça bem”
Cada Microservice deve representar um recurso da aplicação
Por exemplo: Produto, Cliente, Carrinho, Pedido, etc.
Deve possuir sua própria forma de gestão de dados
13. ARQUITETURA DOS MICROSERVICES
DEPLOYMENT
Chave para a construção dos Microservices
Habilita flexibilidade de tecnologia, escalabilidade
Deve ser tão fácil quanto apertar um botão
Evolução independente do código e features
14. ARQUITETURA DOS MICROSERVICES
UMA BASE DE CÓDIGO
Fácil de ser mantido pelos desenvolvedores
Refatoração, merge, branch, build e testes
tornam-se mais rápidos
Sem forte acoplamento ou dependência circular
16. ARQUITETURA DOS MICROSERVICES
COMUNICAÇÃO
HTTP/HTTPS – Protocolo base de comunicação
REST – Interfaces de exposição de recursos e
operações baseadas nos métodos HTTP
JSON – Representação e serialização de dados
17. ARQUITETURA DOS MICROSERVICES
Baseado em Padrões
Natural Web Architecture
Fácil de Escalar
Fácil e Rápido de Manter
Gestão de Código
Independente
Gestão de Dados
Independente
Fácil Fazer Deployment
18. ARQUITETURA DOS MICROSERVICES
Comunicação Entre Serviços
Integração de Base de Dados
Difícil padronizar
Precisa de Infraestrutura
Preparada
Precisa de Mais
Automação
Precisa de Mais
Monitoramento
Difícil Controle de
Evolução
23. FUTURO DOS MICROSERVICES
Microsoft anunciou o Windows Nano Server para hosting de aplicações leves
Microsoft anunciou parceria com o Docker
Microsoft anunciou Windows 10 para IoT
Microsoft anunciou Windows Server Container