$30 off During Our Annual Pro Sale. View Details »

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

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

Palestra ministrada no PHPSP+IMA em Campinas-SP em 20/08/2016. Abordamos como sair do monolito e ir para o microserviço conforme sua aplicação cresce e simulamos isso com containers Docker

Wellington F. Silva

August 20, 2016
Tweet

More Decks by Wellington F. Silva

Other Decks in Technology

Transcript

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

    View Slide

  2. $ 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

    View Slide

  3. Agenda
    • Monolito
    • Ciclo de feedback
    • Evolução do Monolito
    • Jornada ao microserviço
    • Docker
    • Demo

    View Slide

  4. Monolith First

    View Slide

  5. Monolith First
    • http://martinfowler.com/bliki/
    MonolithFirst.html

    View Slide

  6. Monolith First
    • http://martinfowler.com/bliki/
    MonolithFirst.html
    • Começa rápido

    View Slide

  7. Monolith First
    • http://martinfowler.com/bliki/
    MonolithFirst.html
    • Começa rápido
    • Baixa complexidade entre
    desenvolvimento e a entrega

    View Slide

  8. Monolith First
    • http://martinfowler.com/bliki/
    MonolithFirst.html
    • Começa rápido
    • Baixa complexidade entre
    desenvolvimento e a entrega
    • Baixo Custo

    View Slide

  9. Monolith First
    • http://martinfowler.com/bliki/
    MonolithFirst.html
    • Começa rápido
    • Baixa complexidade entre
    desenvolvimento e a entrega
    • Baixo Custo
    • Meta: MVP

    View Slide

  10. Feedback Loop

    View Slide

  11. Feedback Loop
    • PDCA - Plan, Do, Check, Act

    View Slide

  12. Feedback Loop
    • PDCA - Plan, Do, Check, Act
    • Retomada de contexto é custosa

    View Slide

  13. Feedback Loop
    • PDCA - Plan, Do, Check, Act
    • Retomada de contexto é custosa
    • Testes diminuem o tempo de feedback loop

    View Slide

  14. Feedback Loop
    • PDCA - Plan, Do, Check, Act
    • Retomada de contexto é custosa
    • Testes diminuem o tempo de feedback loop
    • Continuous Integration e Continuous Deployment / Delivery

    View Slide

  15. 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

    View Slide

  16. –Conway’s Law
    “Organizations which design systems ... are constrained to
    produce designs which are copies of the communication
    structures of these organizations”

    View Slide

  17. Big Monolith

    View Slide

  18. Big Monolith
    • Aumento do sistema, mais pessoas para mantê-lo

    View Slide

  19. 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"

    View Slide

  20. 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

    View Slide

  21. 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

    View Slide

  22. –Desconhecido
    “Softwares são desenvolvidos por pessoas e para pessoas.”

    View Slide

  23. Microservice Journey

    View Slide

  24. Microservice Journey
    • Microservice não escala software, escala pessoas

    View Slide

  25. Microservice Journey
    • Microservice não escala software, escala pessoas
    • Art of Scalability - Arquitetos do Ebay - 3 dimensões escaláveis:

    View Slide

  26. Microservice Journey
    • Microservice não escala software, escala pessoas
    • Art of scalability - Arquitetos do Ebay - 3 dimensões escaláveis:
    • horizontal: mais máquinas

    View Slide

  27. 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

    View Slide

  28. 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

    View Slide

  29. Microservice Journey
    • Microservice diminui o contexto, permite serviço coeso, baixo
    acoplamento

    View Slide

  30. Microservice Journey
    • Microservice diminui o contexto, permite serviço coeso, baixo
    acoplamento
    • APIs para comunicação entre serviços distintos

    View Slide

  31. 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

    View Slide

  32. Microservice Journey
    • Problemas novos

    View Slide

  33. Microservice Journey
    • Problemas novos
    • aumento de complexidade

    View Slide

  34. Microservice Journey
    • Problemas novos
    • aumento de complexidade
    • confiabilidade tem que estar no software (hardware falha)

    View Slide

  35. Microservice Journey
    • Problemas novos
    • aumento de complexidade
    • confiabilidade tem que estar no software (hardware falha)
    • sempre previnir falhas (de comunicação, rede)

    View Slide

  36. 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

    View Slide

  37. Microservice Journey
    • Problemas novos
    • smart router - testes AB, deploys blue-green, cannary releases

    View Slide

  38. Microservice Journey
    • Problemas novos
    • smart router - testes AB, deploys blue-green, cannary releases
    • log unificado das instâncias

    View Slide

  39. 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

    View Slide

  40. 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

    View Slide

  41. 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

    View Slide

  42. Microservice Journey
    • Estratégia

    View Slide

  43. Microservice Journey
    • Estratégia
    • funções e serviços satélites

    View Slide

  44. 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

    View Slide

  45. 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)

    View Slide

  46. 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

    View Slide

  47. Microservice Journey
    • Estratégia
    • CQRS

    View Slide

  48. Microservice Journey
    • Estratégia
    • CQRS
    • consistência eventual de dados

    View Slide

  49. Microservice Journey
    • Estratégia
    • CQRS
    • consistência eventual de dados
    • aplicar o 12 factor apps para a criação dos novos serviços

    View Slide

  50. 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)

    View Slide

  51. 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

    View Slide

  52. Microservice Journey
    • Estratégia
    • utilizar a última geração de Paas, containers

    View Slide

  53. View Slide

  54. Docker
    • Evolução do LXC (Linux
    Containers)

    View Slide

  55. Docker
    • Evolução do LXC (Linux
    Containers)
    • Muito rápido (trabalha com
    processos)

    View Slide

  56. Docker
    • Evolução do LXC (Linux
    Containers)
    • Muito rápido (trabalha com
    processos)
    • Muito leve (não precisa do
    Kernel no Guest)

    View Slide

  57. Docker
    • Evolução do LXC (Linux
    Containers)
    • Muito rápido (trabalha com
    processos)
    • Muito leve (não precisa do
    Kernel no Guest)
    • Open Source

    View Slide

  58. Docker
    • Diversas Ferramentas para
    cluster e orquestração

    View Slide

  59. Docker
    • Diversas Ferramentas para
    cluster e orquestração
    • Melhora a distribuição de
    recursos

    View Slide

  60. Docker

    View Slide

  61. Docker

    View Slide

  62. Docker

    View Slide

  63. Docker

    View Slide

  64. https://github.com/wsilva/demo-phpsp-ima
    DEMO

    View Slide

  65. –Wellington F. Silva
    “Docker. Perfeito pra microservice”

    View Slide

  66. Mais sobre Docker
    http://bit.ly/curso-docker
    http://docker-br.herokuapp.com
    https://telegram.me/dockerbr
    Cupom 25% Novatec
    DOCKER

    View Slide

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

    View Slide