SlideShare uma empresa Scribd logo
Microservices
UMA NOVA ARQUITETURA PARA CRIAÇÃO DE SERVIÇOS
Renato Groffe
Microsoft Technical Audience Contributor (MTAC), MCP, MCTS, OCA, ITIL, COBIT
Mais de 15 anos de experiência na área de Tecnologia
Pós-graduação em Engenharia de Software – ênfase em SOA
MBA em Business Intelligence
Graduação em Sistemas de Informação
Articulista e Palestrante (Devmedia, .NET Magazine, Canal .NET, TechNet Wiki,
.NET Coders, TI Selvagem, DotNetBaixada)
Técnico em Processamento de Dados
Contatos
◦ Facebook: https://www.facebook.com/renatogroff
◦ Canal .NET: https://www.facebook.com/canaldotnet
◦ LinkedIn: http://br.linkedin.com/in/renatogroffe
Agenda
◦ Aplicações Monolíticas
◦ Serviços: uma visão geral
◦ Microservices: uma nova alternativa para serviços
Aplicações Monolíticas
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
Aplicações Monolíticas – Problemas
Não é uma abordagem
recomendável para aplicações
mais complexas
Aplicações Monolíticas – Problemas
◦ A adoção de práticas de continuous
deployment 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
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
Solução para os problemas das aplicações monolíticas?
O velho “dividir para conquistar” → Serviços
Modelos arquiteturais possíveis - Serviços
SOA (Service Oriented Architecture)
REST (Representational State Transfer)
Microservices
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
SOA – Princípios (segundo Thomas Erl)
◦ Reusabilidade
◦ Autonomia
◦ Contrato Padronizado
◦ Baixo Acoplamento
◦ Abstração
◦ Independência de Estado (Stateless)
◦ Visibilidade
◦ Capacidade de Composição
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
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
REST – Representação Esquemática
Microservices, uma nova alternativa para serviços
Microservices – O que são?
Serviços pequenos e autônomos
trabalhando de forma conjunta, a fim
de atender a uma demanda específica
Qual o tamanho considerado ideal
para 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
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)
Microservices - Benefícios
◦ Adoção de novas tecnologias com maior
facilidade
◦ Alta disponibilidade
◦ Escalabilidade
◦ Facilidades no Deployment
◦ Melhor organização do trabalho
Microservices - 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
Microservices - Benefícios
Alta disponibilidade
◦ Problemas costumam ser isolados
◦ Falhas em partes específicas ainda
permitiriam o funcionamento de outros
módulos de um sistema
Microservices - 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
Microservices - 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
Microservices - 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-functional
teams
◦ Código mais simples e melhor estruturado
Microservices - 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
Como implementar uma arquitetura de
Microservices?
◦ 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
Microservices – 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
Microservices – 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
Microservices – Cultura de Automação
Adoção de práticas de DevOps:
◦ Testes automatizados
◦ Deployment contínuo
◦ Uso de soluções de ALM como o Team
Foundation Server da Microsoft
Microservices – Ocultar Implementação
Ser 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
Microservices – Descentralização
◦ Times multifuncionais cuidando de um produto
(ao invés de diferentes equipes para cada fase do
desenvolvimento)
◦ Evitar o uso de soluções de Enterprise Service
Bus (ESB) ou de orquestração
◦ Bases de dados descentralizadas (normalmente,
uma para cada serviço)
Microservices – Deployment independente
Habilidade de implantar um serviço
independentemente de outros
Microservices – Deployment independente
Diversas 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
◦ Azure Service Fabric
Microservices – Isolamento de Falhas
Garantir 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
Microservices – 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
Microservices – Monitoramento
No caso do Microsoft Azure, uma alternativa seria o uso do Application Insights:
◦ Este mecanismo suporta além de .NET outras plataformas, como Java, Node.js, PHP e
Python
◦ Conta com meios para a coleta de dados em modo server-side, client-side ou mobile
◦ Disponibiliza dashboards para a análise dos dados coletados
Microservices – Monitoramento
Exemplo de dashboard gerado pelo Application Insights:
Microservices – Casos de Sucesso
Microservices – Outras Referências
◦ Microservice architecture - Chris Richardson
http://microservices.io/index.html
◦ Microservices - Martin Fowler
http://martinfowler.com/articles/microservices.html
Dúvidas?
Obrigado!

Mais conteúdo relacionado

PPTX
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
PPTX
Microserviços - Universidade Metodista - EETI 2016
PPTX
Microservices
PPTX
Amadurecendo Equipes com Microservices
PPTX
Microservices - ALM Roadshow 2015
PPTX
Microservices 2
PDF
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
PDF
Workshop soa, microservices e devops
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Microserviços - Universidade Metodista - EETI 2016
Microservices
Amadurecendo Equipes com Microservices
Microservices - ALM Roadshow 2015
Microservices 2
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Workshop soa, microservices e devops

Mais procurados (20)

PDF
Microservices
PDF
Microservices arquitetura - parte1
PPTX
Ago techdoc
PDF
TCC 1 - Um método para o desenvolvimento de software baseado em microserviços
PPTX
windows server 2012 e windows 8 = melhores juntos
PPTX
Reduza seu trabalho de gerenciamento do kubernetes tdc 2018 poa
PPTX
Microsoft Azure no Licenciamento Open
PDF
2 virtualizacao
PPSX
Netshoes - API Gateway
PDF
Mapa virtualizacao cartaz_folder
PPTX
Computação em nuvem & ambientes operacionias
PPTX
Microsoft Azure Advisor
PDF
O desafio de sustentar centenas de servicos
PDF
[Cloud Summit 2010] Francisco Gioielli - Google Apps
PDF
Virtualização - O Futuro é na NUVEM
PPTX
Windows Server 2012 - Além da virtualização
PDF
Primeiros passos com o framework Sencha Ext JS
PPTX
Saiba como se tornar um profissional especialista em
PPTX
Microservices
PPTX
AD na nuvem, mito ou verdade?
Microservices
Microservices arquitetura - parte1
Ago techdoc
TCC 1 - Um método para o desenvolvimento de software baseado em microserviços
windows server 2012 e windows 8 = melhores juntos
Reduza seu trabalho de gerenciamento do kubernetes tdc 2018 poa
Microsoft Azure no Licenciamento Open
2 virtualizacao
Netshoes - API Gateway
Mapa virtualizacao cartaz_folder
Computação em nuvem & ambientes operacionias
Microsoft Azure Advisor
O desafio de sustentar centenas de servicos
[Cloud Summit 2010] Francisco Gioielli - Google Apps
Virtualização - O Futuro é na NUVEM
Windows Server 2012 - Além da virtualização
Primeiros passos com o framework Sencha Ext JS
Saiba como se tornar um profissional especialista em
Microservices
AD na nuvem, mito ou verdade?
Anúncio

Destaque (20)

PDF
Cohesive Networks Support Docs: VNS3 Configuration in Azure
PPTX
Flare APIs Overview
PPTX
Service Fabric Overview (Yves Goeleven)
PPTX
Software Estimation - A Step Closer to the Silver Bullet
PDF
クラウドを活用するためのヒント
PPTX
Microservices with .Net - NDC Sydney, 2016
PDF
Michiel Overeem (AFAS) - Enterprise software schaalbaar maken met Service Fab...
PDF
Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for t...
PDF
Data Quality in the Data Hub with RedPointGlobal
PDF
Advanced Load Balancer/Traffic Manager and App Gateway for Microsoft Azure
PPTX
Building Microservices with .NET (speaker Anton Vasilenko, Binary Studio)
PDF
Design APIs Restful, DevWeek Porto Alegre
PDF
Introduction to application architecture on asp.net mvc
PPTX
A Comparative Performance Evaluation of Apache Flink
PDF
中級アフィリエイターの実際 @WordCampTokyo2015
PDF
Building .NET Microservices
PPTX
Devteach 2016: A practical overview of actors in service fabric
PPTX
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
PDF
Ultrafast WordPress Virtual Word camp2015
Cohesive Networks Support Docs: VNS3 Configuration in Azure
Flare APIs Overview
Service Fabric Overview (Yves Goeleven)
Software Estimation - A Step Closer to the Silver Bullet
クラウドを活用するためのヒント
Microservices with .Net - NDC Sydney, 2016
Michiel Overeem (AFAS) - Enterprise software schaalbaar maken met Service Fab...
Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for t...
Data Quality in the Data Hub with RedPointGlobal
Advanced Load Balancer/Traffic Manager and App Gateway for Microsoft Azure
Building Microservices with .NET (speaker Anton Vasilenko, Binary Studio)
Design APIs Restful, DevWeek Porto Alegre
Introduction to application architecture on asp.net mvc
A Comparative Performance Evaluation of Apache Flink
中級アフィリエイターの実際 @WordCampTokyo2015
Building .NET Microservices
Devteach 2016: A practical overview of actors in service fabric
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Ultrafast WordPress Virtual Word camp2015
Anúncio

Semelhante a Microservices - Canal .NET Dev Weekend (20)

PPTX
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
PPTX
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
PDF
Workshop Microservices - Arquitetura Microservices
PDF
Arquitetura de Micro Serviços
PDF
Um método para o desenvolvimento de software baseado em microsserviços
PDF
Panorâmica sobre Microsserviços
PDF
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
PDF
Microservices com ASP.NET 5
PDF
PDF
Arquitetura de microsserviços
PDF
Vantagens e desvantagens de uma arquitetura microservices
PPTX
Architecture performance using micro services
PDF
Introdução à Microservices
PPTX
Alternativas para implementação de Microsserviços no Azure | MVPConf Latam 2021
PDF
Preparando sua arquitetura para microservicos
PPTX
Microservices com Spring Boot e Spring Cloud Netflix
PDF
JUGVale 14 - 14/09/2019
PDF
Aula-17-Semana-06-Microserviços Aula.pdf
PPTX
Do Monolítico aos Micro Serviços no Azure
PPTX
Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Workshop Microservices - Arquitetura Microservices
Arquitetura de Micro Serviços
Um método para o desenvolvimento de software baseado em microsserviços
Panorâmica sobre Microsserviços
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Microservices com ASP.NET 5
Arquitetura de microsserviços
Vantagens e desvantagens de uma arquitetura microservices
Architecture performance using micro services
Introdução à Microservices
Alternativas para implementação de Microsserviços no Azure | MVPConf Latam 2021
Preparando sua arquitetura para microservicos
Microservices com Spring Boot e Spring Cloud Netflix
JUGVale 14 - 14/09/2019
Aula-17-Semana-06-Microserviços Aula.pdf
Do Monolítico aos Micro Serviços no Azure
Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)

Mais de Renato Groff (20)

PPTX
Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ...
PPTX
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020
PPTX
Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev...
PPTX
Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat...
PPTX
GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat...
PPTX
A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...
PPTX
Polly: aplicações .NET resilientes e um melhor tratamento de falhas | MVPConf...
PPTX
Containers no Azure: Docker, Kubernetes e suas diferentes possibilidades | MV...
PPTX
Docker: dicas e truques para o dia a dia | MVPConf Latam 2020
PPTX
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020
PPTX
.NET Core + Serverless: Desenvolvimento Multiplataforma com Azure Functions |...
PPTX
Aplicações Distribuídas com .NET | TDC Recife Online 2020
PPTX
Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020
PPTX
Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ...
PPTX
Boas práticas de segurança no acesso a dados em Web Apps - SQLSaturday #972 -...
PPTX
.NET: passado, presente e futuro | Semana FCI 2020 - Mackenzie
PPTX
Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ...
PPTX
Kubernetes na Nuvem | Minicurso Gratuito - Azure na Prática
PPTX
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020
PPTX
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020
Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ...
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020
Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev...
Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat...
GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat...
A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...
Polly: aplicações .NET resilientes e um melhor tratamento de falhas | MVPConf...
Containers no Azure: Docker, Kubernetes e suas diferentes possibilidades | MV...
Docker: dicas e truques para o dia a dia | MVPConf Latam 2020
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020
.NET Core + Serverless: Desenvolvimento Multiplataforma com Azure Functions |...
Aplicações Distribuídas com .NET | TDC Recife Online 2020
Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020
Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ...
Boas práticas de segurança no acesso a dados em Web Apps - SQLSaturday #972 -...
.NET: passado, presente e futuro | Semana FCI 2020 - Mackenzie
Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ...
Kubernetes na Nuvem | Minicurso Gratuito - Azure na Prática
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020

Último (7)

PDF
Dos requisitos ao código: como criar código rastreável em PHP
DOC
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
PDF
apresentacao introducao computacao ead.pdf
PPTX
Curso de Windows 11 resumido na prática.pptx
PDF
Evolução em código: algoritmos genéticos com PHP
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
PPTX
Mapeamento de Objeto para Tabela Relacional
Dos requisitos ao código: como criar código rastreável em PHP
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
apresentacao introducao computacao ead.pdf
Curso de Windows 11 resumido na prática.pptx
Evolução em código: algoritmos genéticos com PHP
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
Mapeamento de Objeto para Tabela Relacional

Microservices - Canal .NET Dev Weekend

  • 1. Microservices UMA NOVA ARQUITETURA PARA CRIAÇÃO DE SERVIÇOS
  • 2. Renato Groffe Microsoft Technical Audience Contributor (MTAC), MCP, MCTS, OCA, ITIL, COBIT Mais de 15 anos de experiência na área de Tecnologia Pós-graduação em Engenharia de Software – ênfase em SOA MBA em Business Intelligence Graduação em Sistemas de Informação Articulista e Palestrante (Devmedia, .NET Magazine, Canal .NET, TechNet Wiki, .NET Coders, TI Selvagem, DotNetBaixada) Técnico em Processamento de Dados Contatos ◦ Facebook: https://www.facebook.com/renatogroff ◦ Canal .NET: https://www.facebook.com/canaldotnet ◦ LinkedIn: http://br.linkedin.com/in/renatogroffe
  • 3. Agenda ◦ Aplicações Monolíticas ◦ Serviços: uma visão geral ◦ Microservices: uma nova alternativa para serviços
  • 5. 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
  • 6. Aplicações Monolíticas – Problemas Não é uma abordagem recomendável para aplicações mais complexas
  • 7. Aplicações Monolíticas – Problemas ◦ A adoção de práticas de continuous deployment 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
  • 8. 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
  • 9. Solução para os problemas das aplicações monolíticas?
  • 10. O velho “dividir para conquistar” → Serviços
  • 11. Modelos arquiteturais possíveis - Serviços SOA (Service Oriented Architecture) REST (Representational State Transfer) Microservices
  • 12. 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
  • 13. SOA – Princípios (segundo Thomas Erl) ◦ Reusabilidade ◦ Autonomia ◦ Contrato Padronizado ◦ Baixo Acoplamento ◦ Abstração ◦ Independência de Estado (Stateless) ◦ Visibilidade ◦ Capacidade de Composição
  • 14. 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
  • 15. 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
  • 16. REST – Representação Esquemática
  • 17. Microservices, uma nova alternativa para serviços
  • 18. Microservices – O que são? Serviços pequenos e autônomos trabalhando de forma conjunta, a fim de atender a uma demanda específica
  • 19. Qual o tamanho considerado ideal para 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
  • 20. 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)
  • 21. Microservices - Benefícios ◦ Adoção de novas tecnologias com maior facilidade ◦ Alta disponibilidade ◦ Escalabilidade ◦ Facilidades no Deployment ◦ Melhor organização do trabalho
  • 22. Microservices - 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
  • 23. Microservices - Benefícios Alta disponibilidade ◦ Problemas costumam ser isolados ◦ Falhas em partes específicas ainda permitiriam o funcionamento de outros módulos de um sistema
  • 24. Microservices - 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
  • 25. Microservices - 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
  • 26. Microservices - 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-functional teams ◦ Código mais simples e melhor estruturado
  • 27. Microservices - 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
  • 28. Como implementar uma arquitetura de Microservices? ◦ 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
  • 29. Microservices – 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
  • 30. Microservices – 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
  • 31. Microservices – Cultura de Automação Adoção de práticas de DevOps: ◦ Testes automatizados ◦ Deployment contínuo ◦ Uso de soluções de ALM como o Team Foundation Server da Microsoft
  • 32. Microservices – Ocultar Implementação Ser 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
  • 33. Microservices – Descentralização ◦ Times multifuncionais cuidando de um produto (ao invés de diferentes equipes para cada fase do desenvolvimento) ◦ Evitar o uso de soluções de Enterprise Service Bus (ESB) ou de orquestração ◦ Bases de dados descentralizadas (normalmente, uma para cada serviço)
  • 34. Microservices – Deployment independente Habilidade de implantar um serviço independentemente de outros
  • 35. Microservices – Deployment independente Diversas 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 ◦ Azure Service Fabric
  • 36. Microservices – Isolamento de Falhas Garantir 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
  • 37. Microservices – 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
  • 38. Microservices – Monitoramento No caso do Microsoft Azure, uma alternativa seria o uso do Application Insights: ◦ Este mecanismo suporta além de .NET outras plataformas, como Java, Node.js, PHP e Python ◦ Conta com meios para a coleta de dados em modo server-side, client-side ou mobile ◦ Disponibiliza dashboards para a análise dos dados coletados
  • 39. Microservices – Monitoramento Exemplo de dashboard gerado pelo Application Insights:
  • 41. Microservices – Outras Referências ◦ Microservice architecture - Chris Richardson http://microservices.io/index.html ◦ Microservices - Martin Fowler http://martinfowler.com/articles/microservices.html