SlideShare uma empresa Scribd logo
Microserviços
UMA NOVA ARQUITETURA PARA A IMPLEMENTAÇÃO DE SOFTWARES
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
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
Agenda
◦ Aplicações Monolíticas
◦ Serviços: uma visão geral
◦ 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
◦ 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)
Microserviços
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 – 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
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)
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
◦ Application Insights
◦ Entity Framework Core
Dúvidas?
Obrigado!

Mais conteúdo relacionado

PPTX
Hexagonal architecture with Spring Boot
Mikalai Alimenkou
 
PPTX
A Practical Guide to Domain Driven Design: Presentation Slides
thinkddd
 
PDF
FEVR - Micro Frontend
Miki Lombardi
 
PPTX
Micro serviços ppt
Tiago Lorenzetti Canatelli, MBA
 
PPTX
Building CI/CD Pipelines with Jenkins and Kubernetes
Janakiram MSV
 
PPTX
Domain Driven Design
Ryan Riley
 
PDF
Infrastructure-as-Code with Pulumi - Better than all the others (like Ansible)?
Jonas Hecht
 
PPTX
Monoliths and Microservices
Bozhidar Bozhanov
 
Hexagonal architecture with Spring Boot
Mikalai Alimenkou
 
A Practical Guide to Domain Driven Design: Presentation Slides
thinkddd
 
FEVR - Micro Frontend
Miki Lombardi
 
Micro serviços ppt
Tiago Lorenzetti Canatelli, MBA
 
Building CI/CD Pipelines with Jenkins and Kubernetes
Janakiram MSV
 
Domain Driven Design
Ryan Riley
 
Infrastructure-as-Code with Pulumi - Better than all the others (like Ansible)?
Jonas Hecht
 
Monoliths and Microservices
Bozhidar Bozhanov
 

Mais procurados (20)

PPTX
Micro Front Ends : Divided We Rule by Parth Ghiya - AhmedabadJS
KNOWARTH - Software Development Company
 
PPTX
CouchDB
Jacob Diamond
 
PDF
Building better Node.js applications on MariaDB
MariaDB plc
 
PPTX
Mono Repo
Zacky Pickholz
 
PPSX
CI-CD Jenkins, GitHub Actions, Tekton
Araf Karsh Hamid
 
PPT
Oracle WebLogic Server Basic Concepts
James Bayer
 
PDF
Hands On Introduction To Ansible Configuration Management With Ansible Comple...
SlideTeam
 
PPTX
Microservices Part 3 Service Mesh and Kafka
Araf Karsh Hamid
 
PPT
Domain Driven Design (DDD)
Tom Kocjan
 
PPTX
Kotlin Basics & Introduction to Jetpack Compose.pptx
takshilkunadia
 
PDF
React new features and intro to Hooks
Soluto
 
PPTX
Intro to React
Eric Westfall
 
PPTX
ESB Presentation
F K
 
PPTX
Introduction to Angularjs
Manish Shekhawat
 
PDF
Laravel 5.6 デフォルトの例外ハンドリング処理をまとめてみた
Shohei Okada
 
PDF
Microservices architecture overview v3
Dmitry Skaredov
 
PPTX
Microservice architecture design principles
Sanjoy Kumar Roy
 
PDF
TeraStream for ETL
치민 최
 
PPTX
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
중선 곽
 
PPTX
Jenkins tutorial
Mamun Rashid, CCDH
 
Micro Front Ends : Divided We Rule by Parth Ghiya - AhmedabadJS
KNOWARTH - Software Development Company
 
CouchDB
Jacob Diamond
 
Building better Node.js applications on MariaDB
MariaDB plc
 
Mono Repo
Zacky Pickholz
 
CI-CD Jenkins, GitHub Actions, Tekton
Araf Karsh Hamid
 
Oracle WebLogic Server Basic Concepts
James Bayer
 
Hands On Introduction To Ansible Configuration Management With Ansible Comple...
SlideTeam
 
Microservices Part 3 Service Mesh and Kafka
Araf Karsh Hamid
 
Domain Driven Design (DDD)
Tom Kocjan
 
Kotlin Basics & Introduction to Jetpack Compose.pptx
takshilkunadia
 
React new features and intro to Hooks
Soluto
 
Intro to React
Eric Westfall
 
ESB Presentation
F K
 
Introduction to Angularjs
Manish Shekhawat
 
Laravel 5.6 デフォルトの例外ハンドリング処理をまとめてみた
Shohei Okada
 
Microservices architecture overview v3
Dmitry Skaredov
 
Microservice architecture design principles
Sanjoy Kumar Roy
 
TeraStream for ETL
치민 최
 
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
중선 곽
 
Jenkins tutorial
Mamun Rashid, CCDH
 
Anúncio

Semelhante a Arquitetura de Microserviços - Stone Tech Saturday - Março/2017 (20)

PPTX
Microservices - Canal .NET Dev Weekend
Renato Groff
 
PPTX
Microservices - ALM Roadshow 2015
Renato Groff
 
PPTX
Microservices
Renato Groff
 
PPTX
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Renato Groff
 
PPTX
Microserviços - Universidade Metodista - EETI 2016
Renato Groff
 
PDF
Arquitetura de microsserviços
Raphael Almeida
 
PDF
Arquitetura de Micro Serviços
Fernando Ike
 
PDF
Microservices com ASP.NET 5
Waldyr Felix
 
PDF
Workshop Microservices - Arquitetura Microservices
Rodrigo Cândido da Silva
 
PDF
Um método para o desenvolvimento de software baseado em microsserviços
Thiago Pereira
 
PDF
Panorâmica sobre Microsserviços
Adriano Gomes Batista dos Santos
 
PPTX
Alternativas para implementação de Microsserviços no Azure | MVPConf Latam 2021
Renato Groffe
 
PDF
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Emmanuel Neri
 
PPTX
Microservices
Rafael Sousa
 
PDF
Arquitetura de Microservicos
Norberto Enomoto
 
PPTX
Architecture performance using micro services
Joao Galdino Mello de Souza
 
PDF
Microservices
Diego Pacheco
 
PDF
Preparando sua arquitetura para microservicos
Bruno Luiz Pereira da Silva
 
PPTX
Do Monolítico aos Micro Serviços no Azure
balta.io - Develop your career
 
PDF
Aula-17-Semana-06-Microserviços Aula.pdf
acessoneutro
 
Microservices - Canal .NET Dev Weekend
Renato Groff
 
Microservices - ALM Roadshow 2015
Renato Groff
 
Microservices
Renato Groff
 
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Renato Groff
 
Microserviços - Universidade Metodista - EETI 2016
Renato Groff
 
Arquitetura de microsserviços
Raphael Almeida
 
Arquitetura de Micro Serviços
Fernando Ike
 
Microservices com ASP.NET 5
Waldyr Felix
 
Workshop Microservices - Arquitetura Microservices
Rodrigo Cândido da Silva
 
Um método para o desenvolvimento de software baseado em microsserviços
Thiago Pereira
 
Panorâmica sobre Microsserviços
Adriano Gomes Batista dos Santos
 
Alternativas para implementação de Microsserviços no Azure | MVPConf Latam 2021
Renato Groffe
 
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Emmanuel Neri
 
Microservices
Rafael Sousa
 
Arquitetura de Microservicos
Norberto Enomoto
 
Architecture performance using micro services
Joao Galdino Mello de Souza
 
Microservices
Diego Pacheco
 
Preparando sua arquitetura para microservicos
Bruno Luiz Pereira da Silva
 
Do Monolítico aos Micro Serviços no Azure
balta.io - Develop your career
 
Aula-17-Semana-06-Microserviços Aula.pdf
acessoneutro
 
Anúncio

Mais de Renato Groff (20)

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

Arquitetura de Microserviços - Stone Tech Saturday - Março/2017

  • 1. Microserviços UMA NOVA ARQUITETURA PARA A IMPLEMENTAÇÃO DE SOFTWARES
  • 2. 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
  • 3. 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
  • 4. Agenda ◦ Aplicações Monolíticas ◦ Serviços: uma visão geral ◦ 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 ◦ 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
  • 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. Modelos arquiteturais possíveis - Serviços SOA (Service Oriented Architecture) REST (Representational State Transfer) Microserviços
  • 13. 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
  • 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. Microserviços, uma nova alternativa para serviços
  • 18. 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
  • 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. Microserviços - Benefícios ◦ Adoção de novas tecnologias com maior facilidade ◦ Alta disponibilidade ◦ Escalabilidade ◦ Facilidades no Deployment ◦ Melhor organização do trabalho
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. 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
  • 28. 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
  • 29. 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
  • 30. 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
  • 31. 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
  • 32. 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
  • 33. Microserviços – Descentralização ◦ Times multifuncionais cuidando de um produto (ao invés de diferentes equipes para cada fase do desenvolvimento)
  • 34. Microserviços – Deployment independente Habilidade de implantar um serviço independentemente de outros
  • 35. 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
  • 36. 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
  • 37. 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
  • 39. Microserviços – Outras Referências ◦ Microservice architecture - Chris Richardson http://microservices.io/index.html ◦ Microservices - Martin Fowler http://martinfowler.com/articles/microservices.html
  • 41. 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