Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Arquitetura em Microservices - Você já deveria estar pensando nesta jornada

Arquitetura em Microservices - Você já deveria estar pensando nesta jornada

Palestra apresentada no PHPub edição #55. Nesta palestra nós vamos conversar sobre a arquitetura de microserviços, quais os motivos para utilizá-la ou não e também a jornada que é sua implantação.

Atmos Maciel

March 14, 2018
Tweet

More Decks by Atmos Maciel

Other Decks in Technology

Transcript

  1. Arquitetura em Microservices
    Você já deveria estar pensando nesta jornada.

    View full-size slide

  2. Stephen Hawking
    “Ele virou universo”
    14/03/2018

    View full-size slide

  3. Graduado Ciência da Computação
    Desenvolvedor Web
    Presidente do PHP MA
    CTO - Heptum
    CTO - Impacto Maker
    https://atmosmaciel.github.io
    Atmos Maciel

    View full-size slide

  4. Agradecimentos
    @rochacbruno
    @yanaga
    @susanthesquark

    View full-size slide

  5. "Now, every company is a software company"
    - Forbes

    View full-size slide

  6. micro serviços

    View full-size slide

  7. SOA
    SAAS
    CAAS
    PAAS
    serviços

    View full-size slide

  8. A tecnologia é servidora

    View full-size slide

  9. Software é feito por
    pessoas para
    pessoas.

    View full-size slide

  10. Sistemas
    Monolíticos
    Macro Serviços
    Quando sua aplicação realmente
    faz sucesso, você, muita vezes,
    precisa de mais
    desenvolvedores, têm mais
    clientes e requests para
    atender, precisa aumentar a
    disponibilidade, distribuir a
    aplicação globalmente com
    tempo de resposta recorde e
    baixa latência.

    View full-size slide

  11. Microservices
    O que são?
    Onde vivem?
    Do que se alimentam?
    Vários, pequenos(minimos)
    sistemas, desacoplados que
    conversam entre si de forma
    para entregar valor.
    Maciel, Atmos.

    View full-size slide

  12. O termo "Arquitetura de Microsserviços (Microservice Architecture)" surgiu nos últimos anos para
    descrever uma maneira específica de desenvolver software como suítes de serviços com deploy
    independente. Embora não exista uma definição precisa desse estilo de arquitetura, há certas
    características comuns em relação à organização, à capacidade de negócios, ao deploy
    automatizado, à inteligência nos terminais e ao controle descentralizado de linguagens e de dados.
    2014, Martin Fowler

    View full-size slide

  13. Microservices: a definition of this new architectural term
    https://martinfowler.com/articles/microservices.html
    James Lewis

    View full-size slide

  14. CAUTION!
    ● NOT HATER
    MONOLITHIC APPs
    ● CONTEXTO
    Aplicação em Nuvem, como
    serviço e monolítica.

    View full-size slide

  15. Vantagens / Desvantagens
    1. Controle de versão
    2. Teste automatizado
    3. Integração contínua
    4. Reusabilidade de código
    5. Única base de dados
    6. Segue os padrões da linguagem
    7. SOLID
    8. DDD
    9. * Fácil gerenciamento para o Devs do
    projeto.
    1. SPOF
    2. Base de código extensa
    3. Código complexo
    4. Alta dependência
    5. Problemas com Deploy
    6. Dificuldade com refactor
    7. Conflitos de versionamento
    8. Altera um Ponto do sistema para fazer
    deploy em toda aplicação.
    9. Escalabilidade se torna insustentável.
    10. Dificuldade de decisão
    11. Time desmotivado

    View full-size slide

  16. Vantagens / Desvantagens
    1. Microservices desconstroem conceitos que
    aprendemos
    2. Minimiza SPOF
    3. Base de código menor
    4. * Múltiplas tecnologias
    5. São reutilizáveis
    6. Baixo acoplamento
    7. Micro serviços ABSTRAEM A LÓGICA
    8. Capazes de se compor
    9. São Autônomos
    1. Alta complexidade de arquitetura
    2. Complexidade de gerenciamento
    3. * Repetição de código / Duplicidade de
    código
    4. Multiplos bancos de dados
    5. Repetição de dados
    6. Desenvolvimento Orientado ao Pessimismo.

    View full-size slide

  17. Estou convencido?
    Por onde eu começo minha jornada?

    View full-size slide

  18. Onde eu implanto meus microservices?

    View full-size slide

  19. PAAS - Platform as a service
    CAAS - Container as a service

    View full-size slide

  20. Strangler Application

    View full-size slide

  21. DDD
    Bounded Contexts

    View full-size slide

  22. Disponibilidade
    Design for failure

    View full-size slide

  23. https://github.com/Netflix/hystrix
    Circuit Breaker
    Bulkhead
    Try Catch

    View full-size slide

  24. Smart Routing
    Zuul
    https://github.com/Netflix/zuul

    View full-size slide

  25. Síncrono ou assíncrono?

    View full-size slide

  26. Techs
    Micro Frameworks: Symfony 4,
    Silex, Slim, Expressive, Flask,
    Nameko.
    Cloud
    Docker
    Ansible
    Terra Form

    View full-size slide

  27. Techs
    PHP Assíncrono
    http://php.net/manual/en/book.pthr
    eads.php
    https://reactphp.org/
    http://gearman.org

    View full-size slide

  28. E as consultas/relatórios?

    View full-size slide

  29. http://teiid.jboss.org

    View full-size slide

  30. Do monolito ao microservico
    É uma jornada...

    View full-size slide

  31. Onde eu continuo?
    Netflix
    Red Hat
    Google
    IBM

    View full-size slide