microservices com asp.net 5
TRANSCRIPT
UMA VISÃO DO FUTURO
Microservices com ASP.NET 5
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
APLICAÇÕES MONOLÍTICAS
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
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
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
ARQUITETURA DE MICROSERVICES
DEFINIÇÃO DE MICROSERVICES
Modelo arquitetural definido por decomposição de
uma aplicação em componentes gerenciáveis e
instaláveis independentemente.
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.
ARQUITETURA DOS MICROSERVICES
ARQUITETURA DOS MICROSERVICES
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
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
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
ARQUITETURA DOS MICROSERVICES
PILHA TECNOLÓGICA INDEPENDENTE
Microservice #1 Microservice #2
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
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
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
CASES DE SUCESSO MICROSERVICES
MICROSERVICES COM DOCKER
DEMONSTRAÇÃO DOCKER + ASP.NET 5
1. docker pull microsoft/aspnet
2. docker images
3. git clone https://github.com/waldyrfelix/MicroservicesDemo.git
4. Dockerfile
5. docker build -t aspnetbr/produto .
6. docker images
7. docker run -it -p 80:5000 aspnetbr/produto
REFERÊNCIA
BUILD MICROSERVICESSam Newman
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
REFERÊNCIAShttp://martinfowler.com/articles/microservices.html
http://azure.microsoft.com/blog/2014/10/15/new-windows-server-containers-and-azure-support-for-docker/
http://martinfowler.com/bliki/MicroservicePrerequisites.html
https://sudo.hailoapp.com/web/2014/12/08/webapps-as-microservices/
http://www.infoq.com/articles/microservices-intro
http://azure.microsoft.com/blog/tag/docker/
http://www.infoq.com/minibooks/emag-microservices
http://www.amazon.com/gp/product/1491950358
http://techblog.netflix.com/2015/02/a-microscope-on-microservices.html
https://msdn.microsoft.com/en-us/virtualization/windowscontainers.aspx
https://www.docker.com/
https://registry.hub.docker.com/u/microsoft/aspnet/
https://github.com/waldyrfelix/MicroservicesDemo
https://circleci.com/docs/docker
http://blogs.msdn.com/b/webdev/archive/2015/01/14/running-asp-net-5-applications-in-linux-containers-with-docker.aspx
OBRIGADO DÚVIDAS?