arquitetura de microserviços - stone tech saturday - março/2017
TRANSCRIPT
![Page 1: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/1.jpg)
MicroserviçosUMA NOVA ARQUITETURA PARA A IMPLEMENTAÇÃO DE SOFTWARES
![Page 2: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/2.jpg)
Renato Groffe
◦ Microsoft Most Valuable Professional (MVP)
◦ Multi-Plataform Technical Audience Contributor
◦ Mais de 15 anos de experiência na área de Tecnologia
◦ Articulista e Palestrante
![Page 3: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/3.jpg)
Contatos
◦ Facebook ---> https://www.facebook.com/renatogroff
◦ Site ---> http://renatogroffe.net/
◦ Canal .NET ---> https://www.facebook.com/canaldotnet
◦ LinkedIn ---> http://br.linkedin.com/in/renatogroffe
◦ GitHub ---> https://github.com/renatogroffe
![Page 4: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/4.jpg)
Agenda
◦ Aplicações Monolíticas
◦ Serviços: uma visão geral
◦ Microserviços: uma nova alternativa para serviços
◦ Exemplo prático
![Page 5: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/5.jpg)
Aplicações Monolíticas
![Page 6: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/6.jpg)
Aplicações Monolíticas
Estruturalmente mais simples → as diversas partes do sistema formam um único bloco
Desenvolvimento, testes e implantação acontecem de forma mais fácil
Uma boa abordagem para aplicações relativamente pequenas
![Page 7: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/7.jpg)
Aplicações Monolíticas – Problemas
Não é uma abordagem recomendável para aplicações mais complexas
![Page 8: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/8.jpg)
Aplicações Monolíticas – Problemas
◦ A adoção de práticas de continuousdeployment torna-se mais difícil → indisponibilidade de todo o sistema durante implantações
◦ Costuma-se ficar preso a uma tecnologia
◦ Difícil entendimento e manutenção, com o crescimento da aplicação
![Page 9: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/9.jpg)
Aplicações Monolíticas – Problemas
◦ Problemas em coordenar as ações em equipe
◦ Queda na qualidade do código com o decorrer do tempo
◦ Consumo maior de recursos (IDE, servidores de aplicação)
◦ Escalabilidade comprometida
![Page 10: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/10.jpg)
Solução para os problemas das aplicações monolíticas?
![Page 11: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/11.jpg)
O velho “dividir para conquistar” → Serviços
![Page 12: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/12.jpg)
Modelos arquiteturais possíveis - Serviços
SOA (Service Oriented Architecture)
REST (Representational State Transfer)
Microserviços
![Page 13: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/13.jpg)
SOA – Definição de serviço
◦ Unidade básica para a implementação de serviços em conformidade com esta arquitetura
◦ Um componente de software com capacidades, as quais são implementadas sob a forma de operações (métodos)
◦ As capacidades podem ser vistas como funcionalidades das quais um ou mais sistemas dependem
![Page 14: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/14.jpg)
SOA – Problemas comuns
◦ Falta de consenso da indústria em como implementar esta arquitetura (inúmeras especificações complementares para Web Services)
◦ Dificuldades em encontrar a melhor forma de dividir algo maior em partes menores
![Page 15: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/15.jpg)
REST – Visão Geral◦ Modelo arquitetural proposto por Roy Fielding em 2000, estando
baseado no conceito de recurso e no uso de requisições HTTP
◦ Recurso → elemento (conjunto de dados) do qual uma aplicação depende, normalmente representando um item de negócio
◦ Utilização de JSON ou XML para representar os dados associados a um recurso
◦ RESTful Web Services → serviços seguindo esta arquitetura
![Page 16: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/16.jpg)
REST – Representação Esquemática
![Page 17: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/17.jpg)
Microserviços, uma nova alternativa para serviços
![Page 18: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/18.jpg)
Microserviços – O que são?
Serviços pequenos e autônomostrabalhando de forma conjunta, a fim de atender a uma demanda específica
![Page 19: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/19.jpg)
Qual o tamanho considerado idealpara um microservice?
◦ Não existe um padrão exato para definir o tamanho de um microserviço
◦ Um caso de uso específico pode ser a origem de um pequeno serviço
◦ Alguns conceitos propostos por Robert C. Martin (“Uncle Bob”) servem de diretrizes:
◦ Coesão
◦ Princípio da Responsabilidade Única
![Page 20: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/20.jpg)
Autonomia em um microservice?
◦ Indica o grau de independência de um serviço em relação a influências externas
◦ Um microserviço deve contribuir para um baixo acoplamento
◦ Deploy como um componente isolado
◦ Alterações devem acontecer sem afetar os consumidores de um serviço (sempre que possível)
![Page 21: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/21.jpg)
Microserviços - Benefícios
◦ Adoção de novas tecnologias com maior facilidade
◦ Alta disponibilidade
◦ Escalabilidade
◦ Facilidades no Deployment
◦ Melhor organização do trabalho
![Page 22: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/22.jpg)
Microserviços - Benefícios
Adoção de novas tecnologias com maior facilidade
◦ Escolha da alternativa mais adequada para cada contexto
◦ Facilidade em acompanhar as tecnologias em alta num determinado momento
◦ Impacto mínimo em aplicações que dependam de um microserviço
◦ Evolução de partes de um projeto sem grandes impactos
![Page 23: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/23.jpg)
Microserviços - Benefícios
Alta disponibilidade
◦ Problemas costumam ser isolados
◦ Falhas em partes específicas ainda permitiriam o funcionamento de outros módulos de um sistema
![Page 24: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/24.jpg)
Microserviços - Benefícios
Escalabilidade
◦ Torna-se mais fácil expandir a capacidade de processamento para partes específicas de um sistema
◦ A opção por soluções de cloud computing (como Azure e Amazon Web Services) tem um papel importante neste aspecto
![Page 25: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/25.jpg)
Microserviços - Benefícios
Facilidades no Deployment
◦ Torna-se mais simples a adoção de um processo de continuous deployment
◦ Um microserviço pode ser atualizado sem que todo o sistema deixe de operar
◦ Mudanças (que sempre existirão) costumam causar um menor impacto
![Page 26: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/26.jpg)
Microserviços - Benefícios
Melhor organização do trabalho
◦ Foco em produtos, não projetos
◦ Times pequenos e organizados em torno de capacidades de negócios → Cross-functionalteams
◦ Código mais simples e melhor estruturado
![Page 27: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/27.jpg)
Microserviços - Benefícios
Reusabilidade
◦ Componentização de funcionalidades de negócio
◦ Diferentes tipos de aplicações (Web, desktop, mobile) podem consumir as funcionalidades de um microserviço
![Page 28: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/28.jpg)
Como implementar uma arquitetura de Microserviços?
◦ Seguindo alguns princípios propostos por especialistas da área de software
◦ Adotando serviços oferecidos por uma solução de cloud computing, como o Microsoft Azure
![Page 29: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/29.jpg)
Microserviços – Princípios de Desenvolvimento (segundo Sam Newman)
◦ Modelagem com base em conceitos do negócio
◦ Adotar uma cultura de automação
◦ Ocultar detalhes internos de implementação
◦ Descentralização
◦ Deployment independente
◦ Isolamento de Falhas
◦ Monitoramento
![Page 30: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/30.jpg)
Microserviços – Modelagem
◦ Adoção de práticas de Domain-Driven Design
◦ Um maior alinhamento com a área de negócios
◦ Facilidade em acompanhar as mudanças do negócio
◦ Evita-se uma modelagem falha e baseada puramente em aspectos técnicos
![Page 31: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/31.jpg)
Microserviços – Cultura de Automação
Adoção de práticas de DevOps:
◦ Testes automatizados
◦ Deployment contínuo
◦ Uso de soluções de ALM como oVisual Studio Team Services
![Page 32: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/32.jpg)
Microserviços – Ocultar ImplementaçãoSer agnóstico do ponto de vista da tecnologia (ideia de “caixa-preta”):
◦ Comunicação baseada no modelo REST (requisições HTTP + JSON) → Padrão de mercado atualmente
◦ Capacidade de um serviço evoluir sem efeitos colaterais
◦ Consumidores não precisam conhecer detalhes internos de um microserviço
![Page 33: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/33.jpg)
Microserviços – Descentralização
◦ Times multifuncionais cuidando de um produto (ao invés de diferentes equipes para cada fase do desenvolvimento)
![Page 34: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/34.jpg)
Microserviços – Deployment independente
Habilidade de implantar um serviço independentemente de outros
![Page 35: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/35.jpg)
Microserviços – Deployment independenteDiversas abordagens para implantação:
◦ Uma única instância de um serviço por host
◦ Múltiplas instâncias de um serviço por host
◦ Uma instância de um serviço por máquina virtual
◦ Uma instância de serviço por Container → Docker
![Page 36: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/36.jpg)
Microserviços – Isolamento de FalhasGarantir a operação de um sistema mesmo diante de problemas requer:
◦ Um planejamento adequado prevendo falhas e o tratamento das mesmas
◦ Algum tipo de sacrifício em termos de disponibilidade ou consistência
![Page 37: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/37.jpg)
Microserviços – Monitoramento◦ Estipular métricas a serem analisadas
◦ Definir como e onde tais métricas serão coletadas
◦ Elaborar uma estratégia de log comum a todos os microserviços de um projeto
◦ Cuidados em não sobrecarregar o processamento dos serviços com ações de instrumentação
◦ O Microsoft Azure conta com um serviço de monitoramento chamado Application Insights
![Page 38: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/38.jpg)
Microserviços – Casos de Sucesso
![Page 39: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/39.jpg)
Microserviços – Outras Referências
◦ Microservice architecture - Chris Richardsonhttp://microservices.io/index.html
◦ Microservices - Martin Fowlerhttp://martinfowler.com/articles/microservices.html
![Page 40: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/40.jpg)
Exemplo prático
![Page 41: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/41.jpg)
Exemplo prático
Deployment de API REST no Microsoft Azure com as seguintes tecnologias
◦ Azure API App
◦ SQL Azure
◦ ASP.NET Core 1.1
◦ Application Insights
◦ Entity Framework Core
![Page 42: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/42.jpg)
Dúvidas?
![Page 43: Arquitetura de Microserviços - Stone Tech Saturday - Março/2017](https://reader034.vdocuments.site/reader034/viewer/2022051521/58ee1e6d1a28aba9488b462f/html5/thumbnails/43.jpg)
Obrigado!