SlideShare uma empresa Scribd logo
Escalando uma Aplicação PHP
com Docker
Do monolito ao microserviço
$ whoami
Wellington F. Silva
Técnico Telecom, Programador, Devops,
Instrutor, Escritor, Marido, Pai,
Apreciador de cafés e viciado em pizza.
AKA: wsilva | tom | boina | fisi
Agenda
• Monolito
• Ciclo de feedback
• Evolução do Monolito
• Jornada ao microserviço
• Docker
• Demo
Monolith First
Monolith First
• http://martinfowler.com/bliki/
MonolithFirst.html
Monolith First
• http://martinfowler.com/bliki/
MonolithFirst.html
• Começa rápido
Monolith First
• http://martinfowler.com/bliki/
MonolithFirst.html
• Começa rápido
• Baixa complexidade entre
desenvolvimento e a entrega
Monolith First
• http://martinfowler.com/bliki/
MonolithFirst.html
• Começa rápido
• Baixa complexidade entre
desenvolvimento e a entrega
• Baixo Custo
Monolith First
• http://martinfowler.com/bliki/
MonolithFirst.html
• Começa rápido
• Baixa complexidade entre
desenvolvimento e a entrega
• Baixo Custo
• Meta: MVP
Feedback Loop
Feedback Loop
• PDCA - Plan, Do, Check, Act
Feedback Loop
• PDCA - Plan, Do, Check, Act
• Retomada de contexto é custosa
Feedback Loop
• PDCA - Plan, Do, Check, Act
• Retomada de contexto é custosa
• Testes diminuem o tempo de feedback loop
Feedback Loop
• PDCA - Plan, Do, Check, Act
• Retomada de contexto é custosa
• Testes diminuem o tempo de feedback loop
• Continuous Integration e Continuous Deployment / Delivery
Feedback Loop
• PDCA - Plan, Do, Check, Act
• Retomada de contexto é custosa
• Testes diminuem o tempo de feedback loop
• Continuous Integration e Continuous Deployment / Delivery
• Muitos bugs - falta de confiança para colocar em produção
–Conway’s Law
“Organizations which design systems ... are constrained to
produce designs which are copies of the communication
structures of these organizations”
Big Monolith
Big Monolith
• Aumento do sistema, mais pessoas para mantê-lo
Big Monolith
• Aumento do sistema, mais pessoas para mantê-lo
• The Mythical Man-Month do Frederick Brooks: "Adding manpower
to a late software project makes it later"
Big Monolith
• Aumento do sistema, mais pessoas para mantê-lo
• The Mythical Man-Month do Frederick Brooks: "Adding manpower
to a late software project makes it later”
• 2 pizza team - tamanho dos times - Jeff Bezos da AWS
Big Monolith
• Aumento do sistema, mais pessoas para mantê-lo
• The Mythical Man-Month do Frederick Brooks: "Adding manpower
to a late software project makes it later”
• 2 pizza team - tamanho dos times - Jeff Bezos da AWS
• O crescimento leva naturalmente na divisão de equipes
–Desconhecido
“Softwares são desenvolvidos por pessoas e para pessoas.”
Microservice Journey
Microservice Journey
• Microservice não escala software, escala pessoas
Microservice Journey
• Microservice não escala software, escala pessoas
• Art of Scalability - Arquitetos do Ebay - 3 dimensões escaláveis:
Microservice Journey
• Microservice não escala software, escala pessoas
• Art of scalability - Arquitetos do Ebay - 3 dimensões escaláveis:
• horizontal: mais máquinas
Microservice Journey
• Microservice não escala software, escala pessoas
• Art of scalability - Arquitetos do Ebay - 3 dimensões escaláveis:
• horizontal: mais máquinas
• particionamento de dados: dividindo coisas similares
Microservice Journey
• Microservice não escala software, escala pessoas
• Art of scalability - Arquitetos do Ebay - 3 dimensões escaláveis:
• horizontal: mais máquinas
• particionamento de dados: dividindo coisas similares
• decomposição funcional: dividir responsabilidades diferentes
Microservice Journey
• Microservice diminui o contexto, permite serviço coeso, baixo
acoplamento
Microservice Journey
• Microservice diminui o contexto, permite serviço coeso, baixo
acoplamento
• APIs para comunicação entre serviços distintos
Microservice Journey
• Microservice diminui o contexto, permite serviço coeso, baixo
acoplamento
• APIs para comunicação entre serviços distintos
• Permite utilizar as melhores tecnologias (liguagem, stack) para
resolver cada problema
Microservice Journey
• Problemas novos
Microservice Journey
• Problemas novos
• aumento de complexidade
Microservice Journey
• Problemas novos
• aumento de complexidade
• confiabilidade tem que estar no software (hardware falha)
Microservice Journey
• Problemas novos
• aumento de complexidade
• confiabilidade tem que estar no software (hardware falha)
• sempre previnir falhas (de comunicação, rede)
Microservice Journey
• Problemas novos
• aumento de complexidade
• confiabilidade tem que estar no software (hardware falha)
• sempre previnir falhas (de comunicação, rede)
• diversos pipelines de entrega (CI/CD) que se interdependem
Microservice Journey
• Problemas novos
• smart router - testes AB, deploys blue-green, cannary releases
Microservice Journey
• Problemas novos
• smart router - testes AB, deploys blue-green, cannary releases
• log unificado das instâncias
Microservice Journey
• Problemas novos
• smart router - testes AB, deploys blue-green, cannary releases
• log unificado das instâncias
• dashboard central com status de todos os serviços
Microservice Journey
• Problemas novos
• smart router - testes AB, deploys blue-green, cannary releases
• log unificado das instâncias
• dashboard central com status de todos os serviços
• monitoria e alarmes para cada serviço
Microservice Journey
• Problemas novos
• smart router - testes AB, deploys blue-green, cannary releases
• log unificado das instâncias
• dashboard central com status de todos os serviços
• monitoria e alarmes para cada serviço
• testes integrados mais difíceis de realizar
Microservice Journey
• Estratégia
Microservice Journey
• Estratégia
• funções e serviços satélites
Microservice Journey
• Estratégia
• funções e serviços satélites
• achar os limites do contexto da aplicação - se foi usado DDD fica
mais fácil identificar
Microservice Journey
• Estratégia
• funções e serviços satélites
• achar os limites do contexto da aplicação - se foi usado DDD fica
mais fácil identificar
• automatização de pipeline (devops)
Microservice Journey
• Estratégia
• funções e serviços satélites
• achar os limites do contexto da aplicação - se foi usado DDD fica
mais fácil identificar
• automatização de pipeline (devops)
• utilizar APIs, pontos de comunicação síncronos e assíncronos
Microservice Journey
• Estratégia
• CQRS
Microservice Journey
• Estratégia
• CQRS
• consistência eventual de dados
Microservice Journey
• Estratégia
• CQRS
• consistência eventual de dados
• aplicar o 12 factor apps para a criação dos novos serviços
Microservice Journey
• Estratégia
• CQRS
• consistência eventual de dados
• aplicar o 12 factor apps para a criação dos novos serviços
• fazer um balanço de qual projeto geram mais valor e dão menos
trabalho (geralmente 1 ou 2 semanas)
Microservice Journey
• Estratégia
• CQRS
• consistência eventual de dados
• aplicar o 12 factor apps para a criação dos novos serviços
• fazer um balanço de qual projeto geram mais valor e dão menos
trabalho (geralmente 1 ou 2 semanas)
• com a evolução matamos o monólito por inanição
Microservice Journey
• Estratégia
• utilizar a última geração de Paas, containers
Docker
• Evolução do LXC (Linux
Containers)
Docker
• Evolução do LXC (Linux
Containers)
• Muito rápido (trabalha com
processos)
Docker
• Evolução do LXC (Linux
Containers)
• Muito rápido (trabalha com
processos)
• Muito leve (não precisa do
Kernel no Guest)
Docker
• Evolução do LXC (Linux
Containers)
• Muito rápido (trabalha com
processos)
• Muito leve (não precisa do
Kernel no Guest)
• Open Source
Docker
• Diversas Ferramentas para
cluster e orquestração
Docker
• Diversas Ferramentas para
cluster e orquestração
• Melhora a distribuição de
recursos
Docker
Docker
Docker
Docker
https://github.com/wsilva/demo-phpsp-ima
DEMO
–Wellington F. Silva
“Docker. Perfeito pra microservice”
Mais sobre Docker
http://bit.ly/curso-docker
http://docker-br.herokuapp.com
https://telegram.me/dockerbr
Cupom 25% Novatec
DOCKER
Dúvidas
Feedback: https://joind.in/talk/18bb6
Slides: http://speakerdeck.com/wsilva

Mais conteúdo relacionado

Semelhante a Do monolito aos microserviços com Docker (PHPSP+IMA)

Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance Rails
Vitor Pellegrino
 
Computacao-em-nuvem-slides.pdf
Computacao-em-nuvem-slides.pdfComputacao-em-nuvem-slides.pdf
Computacao-em-nuvem-slides.pdf
AlexandreBonnamain5
 
Desenvolvimento para tv digital interativa [ dia 2]
Desenvolvimento para tv digital interativa [ dia 2]Desenvolvimento para tv digital interativa [ dia 2]
Desenvolvimento para tv digital interativa [ dia 2]
Diemesleno Souza Carvalho
 
Uso estratégico do MySQL para empresas de TI: Novidades e Futuro
Uso estratégico do MySQL para empresas de TI: Novidades e FuturoUso estratégico do MySQL para empresas de TI: Novidades e Futuro
Uso estratégico do MySQL para empresas de TI: Novidades e Futuro
assertimarilia
 
Docker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na PráticaDocker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na Prática
Renato Groff
 
Utilização de DevOps
Utilização de DevOpsUtilização de DevOps
Utilização de DevOps
Caio Candido
 
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
Renato Groff
 
Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
 Alternativas para a Implementação de Microservices no Microsoft Azure - Jane... Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
Renato Groff
 
Internet das coisas - A revolução já começou
Internet das coisas - A revolução já começouInternet das coisas - A revolução já começou
Internet das coisas - A revolução já começou
Jose Wilker
 
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
Renato Groff
 
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Renato Groff
 
Por dentro do .NET Core
Por dentro do .NET CorePor dentro do .NET Core
Por dentro do .NET Core
Giovanni Bassi
 
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
Thiago Pereira
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
Flávio Lisboa
 
Minicurso IOT com javascript - SBTI
Minicurso IOT com javascript - SBTIMinicurso IOT com javascript - SBTI
Minicurso IOT com javascript - SBTI
marcochella
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Tiago Marchetti Dolphine
 
Escalando infra em ops em um ambiente de hiper crescimento
Escalando infra em ops em um ambiente de hiper crescimentoEscalando infra em ops em um ambiente de hiper crescimento
Escalando infra em ops em um ambiente de hiper crescimento
Renan Capaverde
 
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
Guilherme Vierno
 
Internet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começouInternet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começou
Jose Wilker
 

Semelhante a Do monolito aos microserviços com Docker (PHPSP+IMA) (20)

Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance Rails
 
Computacao-em-nuvem-slides.pdf
Computacao-em-nuvem-slides.pdfComputacao-em-nuvem-slides.pdf
Computacao-em-nuvem-slides.pdf
 
DevOps Exame.com
DevOps Exame.comDevOps Exame.com
DevOps Exame.com
 
Desenvolvimento para tv digital interativa [ dia 2]
Desenvolvimento para tv digital interativa [ dia 2]Desenvolvimento para tv digital interativa [ dia 2]
Desenvolvimento para tv digital interativa [ dia 2]
 
Uso estratégico do MySQL para empresas de TI: Novidades e Futuro
Uso estratégico do MySQL para empresas de TI: Novidades e FuturoUso estratégico do MySQL para empresas de TI: Novidades e Futuro
Uso estratégico do MySQL para empresas de TI: Novidades e Futuro
 
Docker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na PráticaDocker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na Prática
 
Utilização de DevOps
Utilização de DevOpsUtilização de DevOps
Utilização de DevOps
 
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
 
Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
 Alternativas para a Implementação de Microservices no Microsoft Azure - Jane... Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
 
Internet das coisas - A revolução já começou
Internet das coisas - A revolução já começouInternet das coisas - A revolução já começou
Internet das coisas - A revolução já começou
 
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
 
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
 
Por dentro do .NET Core
Por dentro do .NET CorePor dentro do .NET Core
Por dentro do .NET Core
 
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
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
 
Minicurso IOT com javascript - SBTI
Minicurso IOT com javascript - SBTIMinicurso IOT com javascript - SBTI
Minicurso IOT com javascript - SBTI
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
 
Escalando infra em ops em um ambiente de hiper crescimento
Escalando infra em ops em um ambiente de hiper crescimentoEscalando infra em ops em um ambiente de hiper crescimento
Escalando infra em ops em um ambiente de hiper crescimento
 
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
 
Internet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começouInternet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começou
 

Mais de Wellington Silva

Aplicação Distribuída com Docker Swarm (Meetup GruPy-SP)
Aplicação Distribuída com Docker Swarm (Meetup GruPy-SP)Aplicação Distribuída com Docker Swarm (Meetup GruPy-SP)
Aplicação Distribuída com Docker Swarm (Meetup GruPy-SP)
Wellington Silva
 
Afinal, o que é Docker? (Meetup Laravel #12)
Afinal, o que é Docker? (Meetup Laravel #12)Afinal, o que é Docker? (Meetup Laravel #12)
Afinal, o que é Docker? (Meetup Laravel #12)
Wellington Silva
 
Afinal, o que é Docker? (Webinar Umbler)
Afinal, o que é Docker? (Webinar Umbler)Afinal, o que é Docker? (Webinar Umbler)
Afinal, o que é Docker? (Webinar Umbler)
Wellington Silva
 
O que é o Docker afinal? (Workshop Novatec)
O que é o Docker afinal? (Workshop Novatec)O que é o Docker afinal? (Workshop Novatec)
O que é o Docker afinal? (Workshop Novatec)
Wellington Silva
 
Começando com o Docker (HackerHouseBR)
Começando com o Docker (HackerHouseBR)Começando com o Docker (HackerHouseBR)
Começando com o Docker (HackerHouseBR)
Wellington Silva
 
O poder do Docker (7º meetup de Docker SP)
O poder do Docker (7º meetup de Docker SP)O poder do Docker (7º meetup de Docker SP)
O poder do Docker (7º meetup de Docker SP)
Wellington Silva
 
O poder do Docker (7 Masters)
O poder do Docker (7 Masters)O poder do Docker (7 Masters)
O poder do Docker (7 Masters)
Wellington Silva
 
Aplicações 12 fatores, melhor com Docker
Aplicações 12 fatores, melhor com DockerAplicações 12 fatores, melhor com Docker
Aplicações 12 fatores, melhor com Docker
Wellington Silva
 
Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)
Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)
Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)
Wellington Silva
 
12 factor app. Melhor com Docker
12 factor app. Melhor com Docker12 factor app. Melhor com Docker
12 factor app. Melhor com Docker
Wellington Silva
 
Docker from basics to orchestration (PHPConfBr2015)
Docker from basics to orchestration (PHPConfBr2015)Docker from basics to orchestration (PHPConfBr2015)
Docker from basics to orchestration (PHPConfBr2015)
Wellington Silva
 
Talk on PHP Day Uruguay about Docker
Talk on PHP Day Uruguay about DockerTalk on PHP Day Uruguay about Docker
Talk on PHP Day Uruguay about Docker
Wellington Silva
 
Vagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerVagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + docker
Wellington Silva
 
Gnu/Linux - Workshop EACH-USP
Gnu/Linux - Workshop EACH-USPGnu/Linux - Workshop EACH-USP
Gnu/Linux - Workshop EACH-USP
Wellington Silva
 
Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3
Wellington Silva
 
Light Talk Docker Compose
Light Talk Docker ComposeLight Talk Docker Compose
Light Talk Docker Compose
Wellington Silva
 

Mais de Wellington Silva (16)

Aplicação Distribuída com Docker Swarm (Meetup GruPy-SP)
Aplicação Distribuída com Docker Swarm (Meetup GruPy-SP)Aplicação Distribuída com Docker Swarm (Meetup GruPy-SP)
Aplicação Distribuída com Docker Swarm (Meetup GruPy-SP)
 
Afinal, o que é Docker? (Meetup Laravel #12)
Afinal, o que é Docker? (Meetup Laravel #12)Afinal, o que é Docker? (Meetup Laravel #12)
Afinal, o que é Docker? (Meetup Laravel #12)
 
Afinal, o que é Docker? (Webinar Umbler)
Afinal, o que é Docker? (Webinar Umbler)Afinal, o que é Docker? (Webinar Umbler)
Afinal, o que é Docker? (Webinar Umbler)
 
O que é o Docker afinal? (Workshop Novatec)
O que é o Docker afinal? (Workshop Novatec)O que é o Docker afinal? (Workshop Novatec)
O que é o Docker afinal? (Workshop Novatec)
 
Começando com o Docker (HackerHouseBR)
Começando com o Docker (HackerHouseBR)Começando com o Docker (HackerHouseBR)
Começando com o Docker (HackerHouseBR)
 
O poder do Docker (7º meetup de Docker SP)
O poder do Docker (7º meetup de Docker SP)O poder do Docker (7º meetup de Docker SP)
O poder do Docker (7º meetup de Docker SP)
 
O poder do Docker (7 Masters)
O poder do Docker (7 Masters)O poder do Docker (7 Masters)
O poder do Docker (7 Masters)
 
Aplicações 12 fatores, melhor com Docker
Aplicações 12 fatores, melhor com DockerAplicações 12 fatores, melhor com Docker
Aplicações 12 fatores, melhor com Docker
 
Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)
Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)
Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)
 
12 factor app. Melhor com Docker
12 factor app. Melhor com Docker12 factor app. Melhor com Docker
12 factor app. Melhor com Docker
 
Docker from basics to orchestration (PHPConfBr2015)
Docker from basics to orchestration (PHPConfBr2015)Docker from basics to orchestration (PHPConfBr2015)
Docker from basics to orchestration (PHPConfBr2015)
 
Talk on PHP Day Uruguay about Docker
Talk on PHP Day Uruguay about DockerTalk on PHP Day Uruguay about Docker
Talk on PHP Day Uruguay about Docker
 
Vagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerVagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + docker
 
Gnu/Linux - Workshop EACH-USP
Gnu/Linux - Workshop EACH-USPGnu/Linux - Workshop EACH-USP
Gnu/Linux - Workshop EACH-USP
 
Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3
 
Light Talk Docker Compose
Light Talk Docker ComposeLight Talk Docker Compose
Light Talk Docker Compose
 

Do monolito aos microserviços com Docker (PHPSP+IMA)