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

67
Escalando uma Aplicação PHP com Docker Do monolito ao microserviço

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

Escalando uma Aplicação PHP com Docker

Do monolito ao microserviço

$ whoamiWellington 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-imaDEMO

–Wellington F. Silva

“Docker. Perfeito pra microservice”

Mais sobre Dockerhttp://bit.ly/curso-docker

http://docker-br.herokuapp.com https://telegram.me/dockerbr

Cupom 25% Novatec

DOCKER

DúvidasFeedback: https://joind.in/talk/18bb6 Slides: http://speakerdeck.com/wsilva