SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
Microservices
Emmanuel Neri
Mais que uma arquitetura de software, uma filosofia de
desenvolvimento de software
Agenda
● O que é microservices
● Comunicação entre serviços
● Um exemplo de aplicação
● Boas práticas
● Mudanças
● Conclusões
Microservices
“Microservices are small, autonomous services that work together”
Sam Newman
“A small application that can be deployed independently, scaled independently, and
tested independently and that has a single responsibility.”
Johannes Thönes
Linha do tempo
Lei de Conway
“Any organization that designs a system (defined more broadly here than just information
systems) will inevitably produce a design whose structure is a copy of the organization’s
communication structure. “
Melvin Conway’s
Características
FOWLER; LEWIS (2014)
● Composto por um conjunto de serviços “pequenos”
● Serviços autônomos
● Permite ser escalado horizontal e vertical
● Possui liberdade de tecnologia
● Flexibilidade de deploy
● Facilidade para integrações
● Maior tolerância a falhas
Escalabilidade
● Eixo X - Duplicação horizontal
● Eixo Y - Decomposição vertical
● Eixo Z - Separação dos dados
Microservices é igual SOA?
“SOA é algo maior, utilizando para
integração de monolitos”
FOLWER; LEWIS (2014)
● Serviços reutilizáveis
● Serviços compartilham um contrato formal
● Serviços possuem baixo acoplamento
● Serviços autônomos
● Etc...
Princípios de SOA:
Como organizar os serviços?
Comunicação entre os serviços
● “HTTP é o padrão de comunicação no microservices”
○ Martin Fowler
● “O serviços devem ser assíncronos”
○ Jonar Bonér (Reactive Microservices Architecture)
■ Terceira onda de bigdata: “data in motion”
Características das comunicações
● Síncrona
○ Espera resposta
○ Comunicação em “tempo real”
○ Balanceador de carga a nível de infraestrutura
○ Tratamento de erros pode ser pelo status do http
● Assíncrona
○ Não espera resposta
○ Comunicação entre os dados pode ser “delay” entre as estruturas
○ Balanceador de carga pode ser uma fila
○ Possibilidade de Service Discovery / Message broker
○ Tratamento de erros pode ficar no gerenciador da fila
○ Em caso de erros o gerenciador de mensagens pode tratar o reenvio
Implementações de comunicação
● Síncrona
○ Rest, SOAP, CDI
● Assíncrona
○ Mensagens, Eventos, Replicação de base
Exemplo
Síncrona Assíncrona
Síncrona Assíncrona
Síncrona Assíncrona
Síncrona Assíncrona
Síncrona Assíncrona
Comparativo de tempo execução do
relatório que utiliza dados das
aplicações de pedidos e cadastros.
Testes Tempo
Execução 1 175
Execução 2 31
Execução 3 31
Execução 4 30
Execução 5 29
Média: 59,2 milissegundos
Testes Tempo
Execução 1 15
Execução 2 9
Execução 3 10
Execução 4 10
Execução 5 9
Média: 10,6 milissegundos
Conclusões do exemplo
Síncrona Assíncrona
Vantagens Desvantagens
Dados em tempo real Maior tempo entre as
comunicações (maior
preocupação com
performance)
Dados Centralizados Baixa integridade entre os
relacionamentos
Maior reaproveitamento dos
serviços
Serviços impactante em
outras funcionalidades
Vantagens Desvantagens
Sincronizações
transparentes para o usuário
Possibilidade de
indisponibilidade dos dados
Serviços totalmente
independentes
Replicação dos dados /
Replicação de código
Maior complexidade com
sincronizações
Frameworks
● Dropwizard
● KumuluzEE
○ Duke's Choice Award Winner 2015
● Micro Profile
○ Wildfly Swarm
● Spring Boot
Boas práticas
● Baixo acoplamento ● Bounded Context (DDD)
Boas práticas
● Single Responsibility Principle ● Single Point of Failure
Mudanças no desenvolvimento
● Desenvolvimentos voltados a APIs
● Desafios de Sistemas distribuídos
○ Base de dados distribuídas, Transações distribuídas, Latência de rede
● Complexidade nos testes automatizados
○ Testes distribuídos
● Segurança
Mudanças na cultura
● DevOps
● Maior número de aplicações / instâncias
● Integrações constantes
● Governança dos serviços (APIs)
● Desenvolvimento multiprojetos
Por onde começar?
● Migração por camadas
○ Aplicação? Banco de dados?
● Começar de uma aplicação existente
Padrões de migração de monolitos
● Strangler Application ● Depedency Inversion Principles
Conclusão
● Vários trade-offs
○ Como fazer comunicação entre os serviço?
○ Como separar os serviços?
● Mudanças de cultura
● Mudança na forma de desenvolvimento
Referências
● Building Microservices: Designing Fine-Grained Systems - Sam Newman
● The Art of Scalability - Martin L, Abbott, Michael T. Fisher
● Domain-Driven Design - Eric Evans
● DevOps: A Software Architect's Perspective - Len Bass, Ingo Weber, Liming Zhu
● Reactive Microservices Architecture - Jonas Bonér
● http://martinfowler.com/articles/microservices.html
● http://pt.slideshare.net/adriancockcroft/dockercon-state-of-the-art-in-microservices
● http://pt.slideshare.net/gutomcosta/como-ddd-e-strategic-design-esto-nos-ajudando-a-m
odernizar-um-legado
● http://pt.slideshare.net/ewolff/rest-vs-messaging-for-microservices
● https://www.infoq.com/br/presentations/microservicos-uma-jornada-inesperada
● http://pt.slideshare.net/tdc-globalcode/tdc2016sp-trilha-microservices-64181673

Mais conteúdo relacionado

Mais procurados

Introdução aos Sistemas Distribuídos
Introdução aos Sistemas DistribuídosIntrodução aos Sistemas Distribuídos
Introdução aos Sistemas DistribuídosFrederico Madeira
 
Desenvolvimento Mobile
Desenvolvimento MobileDesenvolvimento Mobile
Desenvolvimento MobileElton Minetto
 
Arquitetura cliente servidor
Arquitetura cliente servidorArquitetura cliente servidor
Arquitetura cliente servidorMarcia Abrahim
 
Red Hat OpenShift V3 Overview and Deep Dive
Red Hat OpenShift V3 Overview and Deep DiveRed Hat OpenShift V3 Overview and Deep Dive
Red Hat OpenShift V3 Overview and Deep DiveGreg Hoelzer
 
Containers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes IstioContainers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes IstioAraf Karsh Hamid
 
DevOps, por onde começar
DevOps, por onde começarDevOps, por onde começar
DevOps, por onde começarAdriano Tavares
 
Visão Geral: Estruturas do Sistema Operacional
Visão Geral: Estruturas do Sistema OperacionalVisão Geral: Estruturas do Sistema Operacional
Visão Geral: Estruturas do Sistema OperacionalAlexandre Duarte
 
A Evolucao dos Processos de Desenvolvimento de Software
A Evolucao dos Processos de Desenvolvimento de SoftwareA Evolucao dos Processos de Desenvolvimento de Software
A Evolucao dos Processos de Desenvolvimento de SoftwareRobson Silva Espig
 
SI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosSI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosFrederico Madeira
 
Terraform GitOps on Codefresh
Terraform GitOps on CodefreshTerraform GitOps on Codefresh
Terraform GitOps on CodefreshCodefresh
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de RequisitosCloves da Rocha
 
O que é Computação Gráfica?
O que é Computação Gráfica?O que é Computação Gráfica?
O que é Computação Gráfica?Liliane Machado
 
Aula 1 - Introdução ao Mobile
Aula 1 - Introdução ao MobileAula 1 - Introdução ao Mobile
Aula 1 - Introdução ao MobileCloves da Rocha
 
Arquitetura Evolutiva - A retomada do ágil 18 anos depois
Arquitetura Evolutiva - A retomada do ágil 18 anos depoisArquitetura Evolutiva - A retomada do ágil 18 anos depois
Arquitetura Evolutiva - A retomada do ágil 18 anos depoisAndré Paulovich
 

Mais procurados (20)

Introdução aos Sistemas Distribuídos
Introdução aos Sistemas DistribuídosIntrodução aos Sistemas Distribuídos
Introdução aos Sistemas Distribuídos
 
Desenvolvimento Mobile
Desenvolvimento MobileDesenvolvimento Mobile
Desenvolvimento Mobile
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Arquitetura cliente servidor
Arquitetura cliente servidorArquitetura cliente servidor
Arquitetura cliente servidor
 
Computação em nuvem
Computação em nuvemComputação em nuvem
Computação em nuvem
 
Red Hat OpenShift V3 Overview and Deep Dive
Red Hat OpenShift V3 Overview and Deep DiveRed Hat OpenShift V3 Overview and Deep Dive
Red Hat OpenShift V3 Overview and Deep Dive
 
Containers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes IstioContainers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes Istio
 
DevOps, por onde começar
DevOps, por onde começarDevOps, por onde começar
DevOps, por onde começar
 
Visão Geral: Estruturas do Sistema Operacional
Visão Geral: Estruturas do Sistema OperacionalVisão Geral: Estruturas do Sistema Operacional
Visão Geral: Estruturas do Sistema Operacional
 
A Evolucao dos Processos de Desenvolvimento de Software
A Evolucao dos Processos de Desenvolvimento de SoftwareA Evolucao dos Processos de Desenvolvimento de Software
A Evolucao dos Processos de Desenvolvimento de Software
 
SI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosSI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas Distribuidos
 
Engenharia de software
Engenharia de softwareEngenharia de software
Engenharia de software
 
Terraform GitOps on Codefresh
Terraform GitOps on CodefreshTerraform GitOps on Codefresh
Terraform GitOps on Codefresh
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
 
Computação nas nuvens
Computação nas nuvensComputação nas nuvens
Computação nas nuvens
 
Aula - Metodologias Ágeis
Aula - Metodologias ÁgeisAula - Metodologias Ágeis
Aula - Metodologias Ágeis
 
O que é Computação Gráfica?
O que é Computação Gráfica?O que é Computação Gráfica?
O que é Computação Gráfica?
 
Aula 1 - Introdução ao Mobile
Aula 1 - Introdução ao MobileAula 1 - Introdução ao Mobile
Aula 1 - Introdução ao Mobile
 
Arquitetura Evolutiva - A retomada do ágil 18 anos depois
Arquitetura Evolutiva - A retomada do ágil 18 anos depoisArquitetura Evolutiva - A retomada do ágil 18 anos depois
Arquitetura Evolutiva - A retomada do ágil 18 anos depois
 

Destaque

O Impacto da arquitetura de Micro Serviços nas soluções de software
O Impacto da arquitetura de Micro Serviços nas soluções de softwareO Impacto da arquitetura de Micro Serviços nas soluções de software
O Impacto da arquitetura de Micro Serviços nas soluções de softwareEmmanuel Neri
 
A Cultura do Home Office
A Cultura do Home OfficeA Cultura do Home Office
A Cultura do Home OfficeEmmanuel Neri
 
Criando uma arquitetura escalável para processamento de arquivos com micro s...
Criando uma arquitetura escalável para processamento de arquivos com micro s...Criando uma arquitetura escalável para processamento de arquivos com micro s...
Criando uma arquitetura escalável para processamento de arquivos com micro s...Emmanuel Neri
 
Construindo APIs de forma produtiva com Spring Boot, Spring Data e Spring MVC
Construindo APIs de forma produtiva com Spring Boot, Spring Data e Spring MVCConstruindo APIs de forma produtiva com Spring Boot, Spring Data e Spring MVC
Construindo APIs de forma produtiva com Spring Boot, Spring Data e Spring MVCEmmanuel Neri
 
Desenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFDesenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFEmmanuel Neri
 
Combatendo code smells em aplicações Java
Combatendo code smells em aplicações JavaCombatendo code smells em aplicações Java
Combatendo code smells em aplicações JavaEmmanuel Neri
 
Jett: Exporte Excel do jeito que seu cliente sempre sonhou
Jett: Exporte Excel do jeito que seu cliente sempre sonhouJett: Exporte Excel do jeito que seu cliente sempre sonhou
Jett: Exporte Excel do jeito que seu cliente sempre sonhouEmmanuel Neri
 
A trilogia Spring MVC + Spring Data + AngularJS
A trilogia  Spring MVC + Spring Data + AngularJSA trilogia  Spring MVC + Spring Data + AngularJS
A trilogia Spring MVC + Spring Data + AngularJSEmmanuel Neri
 

Destaque (8)

O Impacto da arquitetura de Micro Serviços nas soluções de software
O Impacto da arquitetura de Micro Serviços nas soluções de softwareO Impacto da arquitetura de Micro Serviços nas soluções de software
O Impacto da arquitetura de Micro Serviços nas soluções de software
 
A Cultura do Home Office
A Cultura do Home OfficeA Cultura do Home Office
A Cultura do Home Office
 
Criando uma arquitetura escalável para processamento de arquivos com micro s...
Criando uma arquitetura escalável para processamento de arquivos com micro s...Criando uma arquitetura escalável para processamento de arquivos com micro s...
Criando uma arquitetura escalável para processamento de arquivos com micro s...
 
Construindo APIs de forma produtiva com Spring Boot, Spring Data e Spring MVC
Construindo APIs de forma produtiva com Spring Boot, Spring Data e Spring MVCConstruindo APIs de forma produtiva com Spring Boot, Spring Data e Spring MVC
Construindo APIs de forma produtiva com Spring Boot, Spring Data e Spring MVC
 
Desenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFDesenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSF
 
Combatendo code smells em aplicações Java
Combatendo code smells em aplicações JavaCombatendo code smells em aplicações Java
Combatendo code smells em aplicações Java
 
Jett: Exporte Excel do jeito que seu cliente sempre sonhou
Jett: Exporte Excel do jeito que seu cliente sempre sonhouJett: Exporte Excel do jeito que seu cliente sempre sonhou
Jett: Exporte Excel do jeito que seu cliente sempre sonhou
 
A trilogia Spring MVC + Spring Data + AngularJS
A trilogia  Spring MVC + Spring Data + AngularJSA trilogia  Spring MVC + Spring Data + AngularJS
A trilogia Spring MVC + Spring Data + AngularJS
 

Semelhante a Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro ServiçosFernando Ike
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesRodrigo Cândido da Silva
 
Introdução a Service Mesh com Istio
Introdução a Service Mesh com IstioIntrodução a Service Mesh com Istio
Introdução a Service Mesh com IstioJonh Wendell
 
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
 
Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Renato Groff
 
Palestra cloud-computing
Palestra cloud-computingPalestra cloud-computing
Palestra cloud-computingNaptec
 
Cloud Computing: uma abordagem objetiva sobre o novo ambiente computacional
Cloud Computing: uma abordagem objetiva sobre o novo ambiente computacionalCloud Computing: uma abordagem objetiva sobre o novo ambiente computacional
Cloud Computing: uma abordagem objetiva sobre o novo ambiente computacionalJosé Morelli Neto
 
DISCIPLINA REDES 1 TRABALHO A1
 DISCIPLINA REDES 1 TRABALHO A1 DISCIPLINA REDES 1 TRABALHO A1
DISCIPLINA REDES 1 TRABALHO A1Marcus Java
 
Microservices & Service Mesh Pattern presentation
Microservices & Service Mesh Pattern presentationMicroservices & Service Mesh Pattern presentation
Microservices & Service Mesh Pattern presentationClaudio Acquaviva
 
Integrating Microservices
Integrating MicroservicesIntegrating Microservices
Integrating MicroservicesThiago Ramos
 
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
 
Microserviços: uma introdução
Microserviços: uma introduçãoMicroserviços: uma introdução
Microserviços: uma introduçãoDaniel Baptista Dias
 
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de MicroservicesDeep Tech Brasil
 
Microservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev WeekendMicroservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev WeekendRenato Groff
 
Microservices em Python: desafios e soluções
Microservices em Python: desafios e soluçõesMicroservices em Python: desafios e soluções
Microservices em Python: desafios e soluçõesGuilherme Vierno
 

Semelhante a Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software (20)

Microservices
MicroservicesMicroservices
Microservices
 
Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro Serviços
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura Microservices
 
Introdução a Service Mesh com Istio
Introdução a Service Mesh com IstioIntrodução a Service Mesh com Istio
Introdução a Service Mesh com Istio
 
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
 
World Wide Web
World Wide WebWorld Wide Web
World Wide Web
 
Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016
 
Palestra cloud-computing
Palestra cloud-computingPalestra cloud-computing
Palestra cloud-computing
 
Cloud Computing: uma abordagem objetiva sobre o novo ambiente computacional
Cloud Computing: uma abordagem objetiva sobre o novo ambiente computacionalCloud Computing: uma abordagem objetiva sobre o novo ambiente computacional
Cloud Computing: uma abordagem objetiva sobre o novo ambiente computacional
 
DISCIPLINA REDES 1 TRABALHO A1
 DISCIPLINA REDES 1 TRABALHO A1 DISCIPLINA REDES 1 TRABALHO A1
DISCIPLINA REDES 1 TRABALHO A1
 
Microservices & Service Mesh Pattern presentation
Microservices & Service Mesh Pattern presentationMicroservices & Service Mesh Pattern presentation
Microservices & Service Mesh Pattern presentation
 
Integrating Microservices
Integrating MicroservicesIntegrating Microservices
Integrating Microservices
 
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
 
Microserviços: uma introdução
Microserviços: uma introduçãoMicroserviços: uma introdução
Microserviços: uma introdução
 
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
 
Microservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev WeekendMicroservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev Weekend
 
Microservices em Python: desafios e soluções
Microservices em Python: desafios e soluçõesMicroservices em Python: desafios e soluções
Microservices em Python: desafios e soluções
 
Monolith - An epic journey
Monolith - An epic journeyMonolith - An epic journey
Monolith - An epic journey
 

Mais de Emmanuel Neri

Arquitetura orientada a eventos
Arquitetura orientada a eventosArquitetura orientada a eventos
Arquitetura orientada a eventosEmmanuel Neri
 
Iniciando com Docker
Iniciando com DockerIniciando com Docker
Iniciando com DockerEmmanuel Neri
 
Arquitetura reativa, a solução para os microserviços?
Arquitetura reativa,  a solução para os microserviços?Arquitetura reativa,  a solução para os microserviços?
Arquitetura reativa, a solução para os microserviços?Emmanuel Neri
 
Preparando nossas aplicações para falharem com feature toggle e configurações...
Preparando nossas aplicações para falharem com feature toggle e configurações...Preparando nossas aplicações para falharem com feature toggle e configurações...
Preparando nossas aplicações para falharem com feature toggle e configurações...Emmanuel Neri
 
Preparando nossa aplicação para falhar com feature toggle e configurações dis...
Preparando nossa aplicação para falhar com feature toggle e configurações dis...Preparando nossa aplicação para falhar com feature toggle e configurações dis...
Preparando nossa aplicação para falhar com feature toggle e configurações dis...Emmanuel Neri
 
Combatendo code smells em Java
Combatendo code smells em Java Combatendo code smells em Java
Combatendo code smells em Java Emmanuel Neri
 
Configurações distribuídas com Spring Cloud Config
Configurações distribuídas com Spring Cloud ConfigConfigurações distribuídas com Spring Cloud Config
Configurações distribuídas com Spring Cloud ConfigEmmanuel Neri
 
Lidando com desafios dos microserviços com a stack Spring Cloud Netflix
Lidando com desafios dos microserviços com a stack Spring Cloud NetflixLidando com desafios dos microserviços com a stack Spring Cloud Netflix
Lidando com desafios dos microserviços com a stack Spring Cloud NetflixEmmanuel Neri
 
Aplicação da arquitetura de micro serviços em softwares corporativos
Aplicação da arquitetura de micro serviços em softwares corporativosAplicação da arquitetura de micro serviços em softwares corporativos
Aplicação da arquitetura de micro serviços em softwares corporativosEmmanuel Neri
 
Análise e Design - RUP
Análise e Design - RUPAnálise e Design - RUP
Análise e Design - RUPEmmanuel Neri
 
Solução técnica - CMMI nível 3
Solução técnica - CMMI nível 3Solução técnica - CMMI nível 3
Solução técnica - CMMI nível 3Emmanuel Neri
 

Mais de Emmanuel Neri (13)

Arquitetura orientada a eventos
Arquitetura orientada a eventosArquitetura orientada a eventos
Arquitetura orientada a eventos
 
Iniciando com Docker
Iniciando com DockerIniciando com Docker
Iniciando com Docker
 
Arquitetura reativa, a solução para os microserviços?
Arquitetura reativa,  a solução para os microserviços?Arquitetura reativa,  a solução para os microserviços?
Arquitetura reativa, a solução para os microserviços?
 
Preparando nossas aplicações para falharem com feature toggle e configurações...
Preparando nossas aplicações para falharem com feature toggle e configurações...Preparando nossas aplicações para falharem com feature toggle e configurações...
Preparando nossas aplicações para falharem com feature toggle e configurações...
 
Preparando nossa aplicação para falhar com feature toggle e configurações dis...
Preparando nossa aplicação para falhar com feature toggle e configurações dis...Preparando nossa aplicação para falhar com feature toggle e configurações dis...
Preparando nossa aplicação para falhar com feature toggle e configurações dis...
 
Combatendo code smells em Java
Combatendo code smells em Java Combatendo code smells em Java
Combatendo code smells em Java
 
Configurações distribuídas com Spring Cloud Config
Configurações distribuídas com Spring Cloud ConfigConfigurações distribuídas com Spring Cloud Config
Configurações distribuídas com Spring Cloud Config
 
Lidando com desafios dos microserviços com a stack Spring Cloud Netflix
Lidando com desafios dos microserviços com a stack Spring Cloud NetflixLidando com desafios dos microserviços com a stack Spring Cloud Netflix
Lidando com desafios dos microserviços com a stack Spring Cloud Netflix
 
Trabalho Remoto
Trabalho RemotoTrabalho Remoto
Trabalho Remoto
 
Aplicação da arquitetura de micro serviços em softwares corporativos
Aplicação da arquitetura de micro serviços em softwares corporativosAplicação da arquitetura de micro serviços em softwares corporativos
Aplicação da arquitetura de micro serviços em softwares corporativos
 
Análise e Design - RUP
Análise e Design - RUPAnálise e Design - RUP
Análise e Design - RUP
 
Solução técnica - CMMI nível 3
Solução técnica - CMMI nível 3Solução técnica - CMMI nível 3
Solução técnica - CMMI nível 3
 
Jenkins
JenkinsJenkins
Jenkins
 

Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

  • 1. Microservices Emmanuel Neri Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software
  • 2. Agenda ● O que é microservices ● Comunicação entre serviços ● Um exemplo de aplicação ● Boas práticas ● Mudanças ● Conclusões
  • 3. Microservices “Microservices are small, autonomous services that work together” Sam Newman “A small application that can be deployed independently, scaled independently, and tested independently and that has a single responsibility.” Johannes Thönes
  • 5. Lei de Conway “Any organization that designs a system (defined more broadly here than just information systems) will inevitably produce a design whose structure is a copy of the organization’s communication structure. “ Melvin Conway’s
  • 6. Características FOWLER; LEWIS (2014) ● Composto por um conjunto de serviços “pequenos” ● Serviços autônomos ● Permite ser escalado horizontal e vertical ● Possui liberdade de tecnologia ● Flexibilidade de deploy ● Facilidade para integrações ● Maior tolerância a falhas
  • 7. Escalabilidade ● Eixo X - Duplicação horizontal ● Eixo Y - Decomposição vertical ● Eixo Z - Separação dos dados
  • 8. Microservices é igual SOA? “SOA é algo maior, utilizando para integração de monolitos” FOLWER; LEWIS (2014) ● Serviços reutilizáveis ● Serviços compartilham um contrato formal ● Serviços possuem baixo acoplamento ● Serviços autônomos ● Etc... Princípios de SOA:
  • 9. Como organizar os serviços?
  • 10. Comunicação entre os serviços ● “HTTP é o padrão de comunicação no microservices” ○ Martin Fowler ● “O serviços devem ser assíncronos” ○ Jonar Bonér (Reactive Microservices Architecture) ■ Terceira onda de bigdata: “data in motion”
  • 11. Características das comunicações ● Síncrona ○ Espera resposta ○ Comunicação em “tempo real” ○ Balanceador de carga a nível de infraestrutura ○ Tratamento de erros pode ser pelo status do http ● Assíncrona ○ Não espera resposta ○ Comunicação entre os dados pode ser “delay” entre as estruturas ○ Balanceador de carga pode ser uma fila ○ Possibilidade de Service Discovery / Message broker ○ Tratamento de erros pode ficar no gerenciador da fila ○ Em caso de erros o gerenciador de mensagens pode tratar o reenvio
  • 12. Implementações de comunicação ● Síncrona ○ Rest, SOAP, CDI ● Assíncrona ○ Mensagens, Eventos, Replicação de base
  • 18. Síncrona Assíncrona Comparativo de tempo execução do relatório que utiliza dados das aplicações de pedidos e cadastros. Testes Tempo Execução 1 175 Execução 2 31 Execução 3 31 Execução 4 30 Execução 5 29 Média: 59,2 milissegundos Testes Tempo Execução 1 15 Execução 2 9 Execução 3 10 Execução 4 10 Execução 5 9 Média: 10,6 milissegundos
  • 19. Conclusões do exemplo Síncrona Assíncrona Vantagens Desvantagens Dados em tempo real Maior tempo entre as comunicações (maior preocupação com performance) Dados Centralizados Baixa integridade entre os relacionamentos Maior reaproveitamento dos serviços Serviços impactante em outras funcionalidades Vantagens Desvantagens Sincronizações transparentes para o usuário Possibilidade de indisponibilidade dos dados Serviços totalmente independentes Replicação dos dados / Replicação de código Maior complexidade com sincronizações
  • 20. Frameworks ● Dropwizard ● KumuluzEE ○ Duke's Choice Award Winner 2015 ● Micro Profile ○ Wildfly Swarm ● Spring Boot
  • 21. Boas práticas ● Baixo acoplamento ● Bounded Context (DDD)
  • 22. Boas práticas ● Single Responsibility Principle ● Single Point of Failure
  • 23. Mudanças no desenvolvimento ● Desenvolvimentos voltados a APIs ● Desafios de Sistemas distribuídos ○ Base de dados distribuídas, Transações distribuídas, Latência de rede ● Complexidade nos testes automatizados ○ Testes distribuídos ● Segurança
  • 24. Mudanças na cultura ● DevOps ● Maior número de aplicações / instâncias ● Integrações constantes ● Governança dos serviços (APIs) ● Desenvolvimento multiprojetos
  • 25. Por onde começar? ● Migração por camadas ○ Aplicação? Banco de dados? ● Começar de uma aplicação existente
  • 26. Padrões de migração de monolitos ● Strangler Application ● Depedency Inversion Principles
  • 27. Conclusão ● Vários trade-offs ○ Como fazer comunicação entre os serviço? ○ Como separar os serviços? ● Mudanças de cultura ● Mudança na forma de desenvolvimento
  • 28. Referências ● Building Microservices: Designing Fine-Grained Systems - Sam Newman ● The Art of Scalability - Martin L, Abbott, Michael T. Fisher ● Domain-Driven Design - Eric Evans ● DevOps: A Software Architect's Perspective - Len Bass, Ingo Weber, Liming Zhu ● Reactive Microservices Architecture - Jonas Bonér ● http://martinfowler.com/articles/microservices.html ● http://pt.slideshare.net/adriancockcroft/dockercon-state-of-the-art-in-microservices ● http://pt.slideshare.net/gutomcosta/como-ddd-e-strategic-design-esto-nos-ajudando-a-m odernizar-um-legado ● http://pt.slideshare.net/ewolff/rest-vs-messaging-for-microservices ● https://www.infoq.com/br/presentations/microservicos-uma-jornada-inesperada ● http://pt.slideshare.net/tdc-globalcode/tdc2016sp-trilha-microservices-64181673