SlideShare uma empresa Scribd logo
Arquitetura
de
Microsserviços
Raphael Almeida
Quem sou eu?
Raphael Almeida
Dev PHP desde 2006
Co-fundador do PHPRio, DojoRio,
RubyOnRio …
Community-a-holic
Sistema Monolíticos
Ecossistema de Microsserviços
Migrando o Legado
Sistema Monolíticos
Ecossistema de Microsserviços
Migrando o Legado
Sismetas Monolíticos: Benefícios
Simples
Baixa latência
Repositório e Deploy Únicos
Sismetas Monolíticos: Problemas
Muito código
Devs intimidados
Medo de mudança
Deploy gigante / complexo
Deploy falha, tudo falha
Maior tempo de testes
IDE sobrecarregada
Preso a tecnologia
“If you don’t end up regretting your early technology decisions, you probably over
engineered”
Randy Shoup (ex Google, eBay)
Sistema Monolíticos
Ecossistema de Microsserviços
Migrando o Legado
Microsserviços
Uma arquitetura orientada a serviços fracamente acoplada
com contextos limitados
Microsserviços
Fundamentada na explosão de uma aplicação grande e
monolítica em um conjunto de APIs e componentes muito
pequenos, com baixíssima capacidade funcional, visando
independência e autonomia dessas pequenas partes
Microsserviços: Princípios
Um único propósito
Interfaces simples e bem definidas
Modular e independente
Pequenos times
Autonomia
“... é aquela unidade de software que pode ser aprimorada e
substituída de forma independente”.
Fowler e Lewis sobre componentes
Microsserviços: Serviços externos
Quando utilizamos serviços
externos estamos com a
mesma mensalidade
Microsserviços: Benefícios
Acessando o mesmo front
Desenvolvimento simples
Fim inferno das dependências
Build e Deploy rápidos
fácil de escalar equipes
Liberdade para usar a melhor solução
Maior isolamento e menor risco de falha
Microsserviços: Problemas
Complexibilidade de distribuição e operação
Gestão de múltiplos DBs e Transações
Testes todos os serviços juntos
Sistema Monolíticos
Ecossistema de Microsserviços
Migrando o Legado
Migração: Opções
Comprar uma solução completa (Oracle/Java, .NET)
Escrever do ZERO. Tempo x Investimento
Refatoração (Iterativo e Incremental)
Migração: Opções
Comprar uma solução completa (Oracle/Java, .NET)
Escrever do ZERO. Tempo x Investimento
Refatoração (Iterativo e Incremental)
“The easiest way to encourage best practices is with *code*.
Make it really easy to do the right thing, and harder to do the wrong thing!”
Randy Shoup (ex Google, eBay)
Migração: Prepare a casa
Sistema de Versionamento de Código
Testes Automatizados (Unit > Integration)
Continuous Deploy (CI)
Migração: Refatoração
Procurar os piores gargalos de escalabilidade
Isole com uma interface
Substitua a implementação
Migração: Implementação
Escolha uma ferramenta que simplifique a criação e manutenção
Defina a interface
Protótipo de Implementação
Refatoração
Migração: Evite
Persistência compartilhada
Quebra o encapsulamento e gera acoplamento não mapeado
Microsserviço “Megazorde”
Muita responsabilidade e grande acúmulo de dependências
Migração: Padrões
API Gateway (Sensedia / Amazon)
Monitorar, Gerenciar, Autorizar, Controle de Tráfego
CircuitBreaker
Service Discovery And Balancing (Hystrix)
Reactive Programming
CanaryRelease
Content Router
Bounded Context
Migração: Ferramentas
Docker (Provisionamento)
MounteBank (Testes)
Swagger (Documentação)
Spring Boot, Apigility, ExpressJS …
Netflix OSS
Perguntas?
Raphael Almeida
@raph_almeida

Mais conteúdo relacionado

Mais procurados

Introdução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxIntrodução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptx
MarceloRosenbrock1
 
Desenvolvimento de aplicações para dispositivos móveis
Desenvolvimento de aplicações para dispositivos móveisDesenvolvimento de aplicações para dispositivos móveis
Desenvolvimento de aplicações para dispositivos móveis
Marcelo Quinta
 
SOA - Arquitetura Orientada a Serviços
SOA - Arquitetura Orientada a ServiçosSOA - Arquitetura Orientada a Serviços
SOA - Arquitetura Orientada a Serviços
alinebicudo
 
Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
Paulo Gandra de Sousa
 
20190427 arquitectura de microservicios con contenedores
20190427 arquitectura de microservicios con contenedores20190427 arquitectura de microservicios con contenedores
20190427 arquitectura de microservicios con contenedores
Ricardo González
 
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosAula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Daniel Brandão
 
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudDesenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
iMasters
 
Desenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosDesenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos Básicos
Fabio Moura Pereira
 
Arquitetura MVC
Arquitetura MVCArquitetura MVC
Arquitetura MVC
Thiago Pereira
 
Gerência de Aplicações com ITIL v3 - Um breve sumário
Gerência de Aplicações com ITIL v3 - Um breve sumárioGerência de Aplicações com ITIL v3 - Um breve sumário
Gerência de Aplicações com ITIL v3 - Um breve sumário
Alexandre Leão
 
Introdução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de SoftwareIntrodução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de Software
Daniel Cukier
 
Arquitetura orientada a serviços (SOA)
Arquitetura orientada a serviços (SOA)Arquitetura orientada a serviços (SOA)
Arquitetura orientada a serviços (SOA)
Helio Henrique L. C. Monte-Alto
 
Arquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADAArquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADA
Fábio Nogueira de Lucena
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
Fábio Nogueira de Lucena
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
Rodrigo Rodrigues
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
Gustavo Lopes
 
Aula 1. apresentação + frameworks
Aula 1. apresentação + frameworksAula 1. apresentação + frameworks
Aula 1. apresentação + frameworks
andreluizlc
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
tyrantbrian
 
Aula 2. frameworks js
Aula 2. frameworks jsAula 2. frameworks js
Aula 2. frameworks js
andreluizlc
 
Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
Moacir Jóse Ferreira Junior Ferreira
 

Mais procurados (20)

Introdução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxIntrodução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptx
 
Desenvolvimento de aplicações para dispositivos móveis
Desenvolvimento de aplicações para dispositivos móveisDesenvolvimento de aplicações para dispositivos móveis
Desenvolvimento de aplicações para dispositivos móveis
 
SOA - Arquitetura Orientada a Serviços
SOA - Arquitetura Orientada a ServiçosSOA - Arquitetura Orientada a Serviços
SOA - Arquitetura Orientada a Serviços
 
Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
 
20190427 arquitectura de microservicios con contenedores
20190427 arquitectura de microservicios con contenedores20190427 arquitectura de microservicios con contenedores
20190427 arquitectura de microservicios con contenedores
 
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosAula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
 
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudDesenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
 
Desenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosDesenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos Básicos
 
Arquitetura MVC
Arquitetura MVCArquitetura MVC
Arquitetura MVC
 
Gerência de Aplicações com ITIL v3 - Um breve sumário
Gerência de Aplicações com ITIL v3 - Um breve sumárioGerência de Aplicações com ITIL v3 - Um breve sumário
Gerência de Aplicações com ITIL v3 - Um breve sumário
 
Introdução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de SoftwareIntrodução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de Software
 
Arquitetura orientada a serviços (SOA)
Arquitetura orientada a serviços (SOA)Arquitetura orientada a serviços (SOA)
Arquitetura orientada a serviços (SOA)
 
Arquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADAArquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADA
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
 
Aula 1. apresentação + frameworks
Aula 1. apresentação + frameworksAula 1. apresentação + frameworks
Aula 1. apresentação + frameworks
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 
Aula 2. frameworks js
Aula 2. frameworks jsAula 2. frameworks js
Aula 2. frameworks js
 
Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
 

Destaque

Prepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHPPrepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHP
Raphael Almeida
 
Oito dicas sobre Docker
Oito dicas sobre DockerOito dicas sobre Docker
Oito dicas sobre Docker
Mundo Docker
 
Conceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de softwareConceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de software
Ronney Moreira de Castro
 
Ética no serviço público
Ética no serviço públicoÉtica no serviço público
Ética no serviço público
Anderson Leite
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)
Rodrigo Kono
 
Webinar php extreme 5.3
Webinar php extreme 5.3Webinar php extreme 5.3
Webinar php extreme 5.3
Raphael Almeida
 
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
John Allspaw
 

Destaque (7)

Prepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHPPrepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHP
 
Oito dicas sobre Docker
Oito dicas sobre DockerOito dicas sobre Docker
Oito dicas sobre Docker
 
Conceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de softwareConceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de software
 
Ética no serviço público
Ética no serviço públicoÉtica no serviço público
Ética no serviço público
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)
 
Webinar php extreme 5.3
Webinar php extreme 5.3Webinar php extreme 5.3
Webinar php extreme 5.3
 
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
 

Semelhante a Arquitetura de microsserviços

Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016
Renato Groff
 
Quem e dev ops
Quem e dev opsQuem e dev ops
Quem e dev ops
Andre "Ramoni" Guimaraes
 
[DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps![DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps!
Camilla Gomes
 
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
Renato Groff
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
Mayara Fernandes
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em Delphi
Felipe Caputo
 
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Daniel Destro Do Carmo
 
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
Giovanni Bassi
 
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / GoiâniaAzure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Rodrigo Marques Teixeira
 
Continuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na NuvemContinuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na Nuvem
Amazon Web Services LATAM
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
Comunidade NetPonto
 
Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01
Douglas Roeder
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edted
brunoaalves
 
Desenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaDesenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageria
Paula Santana
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
Giovanni Bassi
 
Microserviços com DevOps
Microserviços com DevOpsMicroserviços com DevOps
Microserviços com DevOps
Matheus Hunsche
 
Conhecendo o Ruby on Rails
Conhecendo o Ruby on RailsConhecendo o Ruby on Rails
Conhecendo o Ruby on Rails
Jony dos Santos Kostetzer
 
Microserviços
MicroserviçosMicroserviços
Microserviços
Airton Fitarelli Junior
 
Mobicents - Plataforma VoIP Open Source
Mobicents - Plataforma VoIP Open SourceMobicents - Plataforma VoIP Open Source
Mobicents - Plataforma VoIP Open Source
Thiago Faria de Andrade
 
Dockerizando a vida - 8º Meetup - PHP Pernambuco
Dockerizando a vida - 8º Meetup - PHP PernambucoDockerizando a vida - 8º Meetup - PHP Pernambuco
Dockerizando a vida - 8º Meetup - PHP Pernambuco
matheuscmpm
 

Semelhante a Arquitetura de microsserviços (20)

Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016
 
Quem e dev ops
Quem e dev opsQuem e dev ops
Quem e dev ops
 
[DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps![DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps!
 
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
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em Delphi
 
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
 
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
 
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / GoiâniaAzure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
 
Continuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na NuvemContinuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na Nuvem
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edted
 
Desenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaDesenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageria
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
Microserviços com DevOps
Microserviços com DevOpsMicroserviços com DevOps
Microserviços com DevOps
 
Conhecendo o Ruby on Rails
Conhecendo o Ruby on RailsConhecendo o Ruby on Rails
Conhecendo o Ruby on Rails
 
Microserviços
MicroserviçosMicroserviços
Microserviços
 
Mobicents - Plataforma VoIP Open Source
Mobicents - Plataforma VoIP Open SourceMobicents - Plataforma VoIP Open Source
Mobicents - Plataforma VoIP Open Source
 
Dockerizando a vida - 8º Meetup - PHP Pernambuco
Dockerizando a vida - 8º Meetup - PHP PernambucoDockerizando a vida - 8º Meetup - PHP Pernambuco
Dockerizando a vida - 8º Meetup - PHP Pernambuco
 

Arquitetura de microsserviços