SlideShare uma empresa Scribd logo
1 de 38
Baixar para ler offline
Microserviços
UMA NOVA ARQUITETURA PARA A IMPLEMENTAÇÃO DE SISTEMAS
Renato Groffe
◦ Microsoft Most Valuable Professional (MVP)
◦ Multi-Plataform Technical Audience Contributor
◦ Mais de 15 anos de experiência na área de Tecnologia
◦ Autor Técnico e Palestrante
Contatos
http://renatogroffe.net/
/renatogroffe /in/renatogroffe
/canaldotnet /renatogroffe
/@renato.groffe /renatogroff
Agenda
◦ Aplicações Monolíticas
◦ Microserviços: uma nova alternativa para serviços
◦ Exemplo prático
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
◦ Costuma-se ficar preso a uma tecnologia
◦ Difícil entendimento e manutenção, com o
crescimento da aplicação
◦ A adoção de práticas de continuous
deployment torna-se mais difícil →
indisponibilidade de todo o sistema durante
implantações
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
Microserviços, uma nova alternativa para serviços
Microserviços – 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)
Microserviços - Benefícios
◦ Adoção de novas tecnologias com maior
facilidade
◦ Alta disponibilidade
◦ Escalabilidade
◦ Facilidades no Deployment
◦ Melhor organização do trabalho
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
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
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
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
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-functional
teams
◦ Código mais simples e melhor estruturado
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
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
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
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
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 o
Visual Studio Team Services
Microserviços – 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
Microserviços – Descentralização
◦ Times multifuncionais cuidando de um
produto (ao invés de diferentes equipes
para cada fase do desenvolvimento)
◦ Bases de dados descentralizadas (uma
para cada microserviço)
Microserviços – Deployment independente
Habilidade de implantar um serviço
independentemente de outros
Microserviços – 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
Microserviços – 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
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
Microserviços – Casos de Sucesso
Microserviços – Outras Referências
◦ Microservice architecture - Chris Richardson
http://microservices.io/index.html
◦ Microservices - Martin Fowler
http://martinfowler.com/articles/microservices.html
Exemplo prático
Exemplo prático
Deployment de API REST no Microsoft Azure com as seguintes
tecnologias
◦ Azure API App
◦ SQL Azure
◦ ASP.NET Core 1.1
◦ Dapper
◦ Entity Framework Core
◦ Visual Studio 2017
Dúvidas?
Obrigado!

Mais conteúdo relacionado

Mais procurados

SOLID Principles and The Clean Architecture
SOLID Principles and The Clean ArchitectureSOLID Principles and The Clean Architecture
SOLID Principles and The Clean ArchitectureMohamed Galal
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方Masahiro Hidaka
 
The Shift Left Path and OWASP
The Shift Left Path and OWASPThe Shift Left Path and OWASP
The Shift Left Path and OWASPRiotaro OKADA
 
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞いiOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞いKen Morishita
 
Testes em métodos ágeis
Testes em métodos ágeisTestes em métodos ágeis
Testes em métodos ágeisQualister
 
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発慎一 古賀
 
Introduction to Agile - how business and engineer team up
Introduction to Agile - how business and engineer team upIntroduction to Agile - how business and engineer team up
Introduction to Agile - how business and engineer team upKenji Hiranabe
 
ソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かうソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう増田 亨
 
自動テストの誤解とアンチパターン in 楽天 Tech Talk
自動テストの誤解とアンチパターン in 楽天 Tech Talk自動テストの誤解とアンチパターン in 楽天 Tech Talk
自動テストの誤解とアンチパターン in 楽天 Tech Talkkyon mm
 
[DO03] 50 分でわかるテスト駆動開発
[DO03] 50 分でわかるテスト駆動開発[DO03] 50 分でわかるテスト駆動開発
[DO03] 50 分でわかるテスト駆動開発de:code 2017
 
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見るbacklogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見るTakeru Maehara
 
5分でわかるクリーンアーキテクチャ
5分でわかるクリーンアーキテクチャ5分でわかるクリーンアーキテクチャ
5分でわかるクリーンアーキテクチャKenji Tanaka
 
SQLインジェクション再考
SQLインジェクション再考SQLインジェクション再考
SQLインジェクション再考Hiroshi Tokumaru
 
Jenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションJenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションMasanori Satoh
 
Rusotoからaws-sdk-rustへ
Rusotoからaws-sdk-rustへRusotoからaws-sdk-rustへ
Rusotoからaws-sdk-rustへYusuke Mori
 
Scalable threat modelling with risk patterns
Scalable threat modelling with risk patternsScalable threat modelling with risk patterns
Scalable threat modelling with risk patternsStephen de Vries
 
Aula 12 - Diagrama de Atividades.pdf
Aula 12 - Diagrama de Atividades.pdfAula 12 - Diagrama de Atividades.pdf
Aula 12 - Diagrama de Atividades.pdfIvanFontainha
 
Arquitetura de Software Na Pratica
Arquitetura de Software Na PraticaArquitetura de Software Na Pratica
Arquitetura de Software Na PraticaAlessandro Kieras
 
Modelo de Prototipação
Modelo de PrototipaçãoModelo de Prototipação
Modelo de PrototipaçãoJuliano Pires
 

Mais procurados (20)

SOLID Principles and The Clean Architecture
SOLID Principles and The Clean ArchitectureSOLID Principles and The Clean Architecture
SOLID Principles and The Clean Architecture
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方
 
The Shift Left Path and OWASP
The Shift Left Path and OWASPThe Shift Left Path and OWASP
The Shift Left Path and OWASP
 
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞いiOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
 
Testes em métodos ágeis
Testes em métodos ágeisTestes em métodos ágeis
Testes em métodos ágeis
 
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
 
Introduction to Agile - how business and engineer team up
Introduction to Agile - how business and engineer team upIntroduction to Agile - how business and engineer team up
Introduction to Agile - how business and engineer team up
 
ソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かうソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう
 
自動テストの誤解とアンチパターン in 楽天 Tech Talk
自動テストの誤解とアンチパターン in 楽天 Tech Talk自動テストの誤解とアンチパターン in 楽天 Tech Talk
自動テストの誤解とアンチパターン in 楽天 Tech Talk
 
[DO03] 50 分でわかるテスト駆動開発
[DO03] 50 分でわかるテスト駆動開発[DO03] 50 分でわかるテスト駆動開発
[DO03] 50 分でわかるテスト駆動開発
 
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見るbacklogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見る
 
5分でわかるクリーンアーキテクチャ
5分でわかるクリーンアーキテクチャ5分でわかるクリーンアーキテクチャ
5分でわかるクリーンアーキテクチャ
 
SQLインジェクション再考
SQLインジェクション再考SQLインジェクション再考
SQLインジェクション再考
 
Jenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションJenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーション
 
Rusotoからaws-sdk-rustへ
Rusotoからaws-sdk-rustへRusotoからaws-sdk-rustへ
Rusotoからaws-sdk-rustへ
 
Scalable threat modelling with risk patterns
Scalable threat modelling with risk patternsScalable threat modelling with risk patterns
Scalable threat modelling with risk patterns
 
Aula 12 - Diagrama de Atividades.pdf
Aula 12 - Diagrama de Atividades.pdfAula 12 - Diagrama de Atividades.pdf
Aula 12 - Diagrama de Atividades.pdf
 
Arquitetura de Software Na Pratica
Arquitetura de Software Na PraticaArquitetura de Software Na Pratica
Arquitetura de Software Na Pratica
 
Modelo de Prototipação
Modelo de PrototipaçãoModelo de Prototipação
Modelo de Prototipação
 
Microsoft 365 Day Session 5
Microsoft 365 Day Session 5Microsoft 365 Day Session 5
Microsoft 365 Day Session 5
 

Semelhante a Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017

Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Renato Groff
 
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Renato Groff
 
Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015Renato Groff
 
Microservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev WeekendMicroservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev WeekendRenato Groff
 
Arquitetura de Microservicos
Arquitetura de MicroservicosArquitetura de Microservicos
Arquitetura de MicroservicosNorberto Enomoto
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesRodrigo Cândido da Silva
 
Integrating Microservices
Integrating MicroservicesIntegrating Microservices
Integrating MicroservicesThiago Ramos
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de MicroserviçosNorberto Enomoto
 
Overview arquitetura
Overview arquiteturaOverview arquitetura
Overview arquiteturaAgni Campos
 
Application Insights
Application InsightsApplication Insights
Application InsightsCDS
 
Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro ServiçosFernando Ike
 
Um método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosUm método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosThiago Pereira
 
Implementando Entrega Contínua
Implementando Entrega ContínuaImplementando Entrega Contínua
Implementando Entrega ContínuaMarco Valtas
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlabJackson F. de A. Mafra
 
Implementando Entrega Contínua - Marco Valtas
Implementando Entrega Contínua - Marco ValtasImplementando Entrega Contínua - Marco Valtas
Implementando Entrega Contínua - Marco ValtasThoughtworks
 
Microservices arquitetura - parte1
Microservices arquitetura - parte1Microservices arquitetura - parte1
Microservices arquitetura - parte1Agni Campos
 

Semelhante a Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017 (20)

Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016
 
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
 
Microservices
MicroservicesMicroservices
Microservices
 
Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015
 
Microservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev WeekendMicroservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev Weekend
 
Microservices 2
Microservices 2Microservices 2
Microservices 2
 
Arquitetura de Microservicos
Arquitetura de MicroservicosArquitetura de Microservicos
Arquitetura de Microservicos
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura Microservices
 
Integrating Microservices
Integrating MicroservicesIntegrating Microservices
Integrating Microservices
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
 
Overview arquitetura
Overview arquiteturaOverview arquitetura
Overview arquitetura
 
Microservices
MicroservicesMicroservices
Microservices
 
Application Insights
Application InsightsApplication Insights
Application Insights
 
Microservices
MicroservicesMicroservices
Microservices
 
Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro Serviços
 
Um método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosUm método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviços
 
Implementando Entrega Contínua
Implementando Entrega ContínuaImplementando Entrega Contínua
Implementando Entrega Contínua
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlab
 
Implementando Entrega Contínua - Marco Valtas
Implementando Entrega Contínua - Marco ValtasImplementando Entrega Contínua - Marco Valtas
Implementando Entrega Contínua - Marco Valtas
 
Microservices arquitetura - parte1
Microservices arquitetura - parte1Microservices arquitetura - parte1
Microservices arquitetura - parte1
 

Mais de Renato Groff

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

Mais de Renato Groff (20)

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

Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017

  • 1. Microserviços UMA NOVA ARQUITETURA PARA A IMPLEMENTAÇÃO DE SISTEMAS
  • 2. Renato Groffe ◦ Microsoft Most Valuable Professional (MVP) ◦ Multi-Plataform Technical Audience Contributor ◦ Mais de 15 anos de experiência na área de Tecnologia ◦ Autor Técnico e Palestrante
  • 4. Agenda ◦ Aplicações Monolíticas ◦ Microserviços: uma nova alternativa para serviços ◦ Exemplo prático
  • 6. 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
  • 7. Aplicações Monolíticas – Problemas Não é uma abordagem recomendável para aplicações mais complexas
  • 8. Aplicações Monolíticas – Problemas ◦ Costuma-se ficar preso a uma tecnologia ◦ Difícil entendimento e manutenção, com o crescimento da aplicação ◦ A adoção de práticas de continuous deployment torna-se mais difícil → indisponibilidade de todo o sistema durante implantações
  • 9. 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
  • 10. Solução para os problemas das aplicações monolíticas?
  • 11. O velho “dividir para conquistar” → Serviços
  • 12. Microserviços, uma nova alternativa para serviços
  • 13. Microserviços – O que são? Serviços pequenos e autônomos trabalhando de forma conjunta, a fim de atender a uma demanda específica
  • 14. 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
  • 15. 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)
  • 16. Microserviços - Benefícios ◦ Adoção de novas tecnologias com maior facilidade ◦ Alta disponibilidade ◦ Escalabilidade ◦ Facilidades no Deployment ◦ Melhor organização do trabalho
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. 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-functional teams ◦ Código mais simples e melhor estruturado
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. 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 o Visual Studio Team Services
  • 27. Microserviços – 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
  • 28. Microserviços – Descentralização ◦ Times multifuncionais cuidando de um produto (ao invés de diferentes equipes para cada fase do desenvolvimento) ◦ Bases de dados descentralizadas (uma para cada microserviço)
  • 29. Microserviços – Deployment independente Habilidade de implantar um serviço independentemente de outros
  • 30. Microserviços – 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
  • 31. Microserviços – 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
  • 32. 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
  • 34. Microserviços – Outras Referências ◦ Microservice architecture - Chris Richardson http://microservices.io/index.html ◦ Microservices - Martin Fowler http://martinfowler.com/articles/microservices.html
  • 36. Exemplo prático Deployment de API REST no Microsoft Azure com as seguintes tecnologias ◦ Azure API App ◦ SQL Azure ◦ ASP.NET Core 1.1 ◦ Dapper ◦ Entity Framework Core ◦ Visual Studio 2017