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

Arquitetura de Micro Serviços

Arquitetura de Micro Serviços

Arquitetura de Micro Serviços não é uma bala de prata, esta é uma introdução comparando com Arquittura Monolítica. Como também as vantagens e desvantagens de usá-las.

Fernando ike

August 23, 2018
Tweet

More Decks by Fernando ike

Other Decks in Technology

Transcript

  1. Arquitetura de Micro
    Serviços
    Fernando Ike

    View Slide

  2. Fernando Ike
    // [email protected]
    // linkedin.com/in/fernandoike
    // twitter.com/fernandoike
    // www.10deploys.com
    // https://events.docker.com/sao-paulo/

    View Slide

  3. Conway’s law
    “Organizações que desenvolvem sistemas tendem a produzir sistemas que são
    cópias da comunicação das mesmas.”

    View Slide

  4. View Slide

  5. View Slide

  6. Arquitetura Monolítica
    “É um único programa que faz praticamente tudo, mostra a interface do usuário,
    acessa os dados, processa as compras dos clientes, imprime notas fiscais, lança
    mísseis e qualquer outra coisa que a aplicação precise fazer.”
    Rod Stephens - Beginning Software Engineering

    View Slide

  7. View Slide

  8. Benefícios de um monolito
    ● Facilidade para desenvolver
    ○ Alcança rapidamente o protótipo ou produto final
    ● Fácil de atualizar versão
    ○ basta atualizar o diretório específico da aplicação e reiniciar o serviço
    ● Fácil de escalar
    ○ basta subir novas instâncias com o mesmo artefato atrás de balanceador de carga
    ● Padronização
    ○ Uniformidade da stack/linguagem de programação no desenvolvimento

    View Slide

  9. Mais comum usar o Monolito
    ● Uma equipe precisa desenvolver rapidamente uma aplicação
    ● Os novos membros da equipe devem-se tornar rapidamente produtivos
    ● A aplicação deve ser fácil de entender e modificar
    ● Testar as tecnologias emergentes (Frameworks, linguagem de programação,
    etc. )

    View Slide

  10. Desvantagens do Monolito
    ● Quando com uma base de código muito grande são difíceis de manter
    ● Intimida pessoas que entram na equipe a desenvolver rapidamente
    ● O medo em mexer no código diminui a velocidade de entrega e também a
    qualidade do código
    ● Continuous Deployment, escalabilidade e confiabilidade tornam-se cada vez
    mais complexas e demoradas

    View Slide

  11. View Slide

  12. Influências
    ● DevOps
    ● Cloud
    ● Continuous Delivery
    ● Immutable Infrastructure
    ● Domain-Driven Design

    View Slide

  13. E o que é arquitetura de Micro Serviços?
    Uma arquitetura orientada a serviço compostas de elementos levemente
    acoplados que possuem contextos delimitados
    Adrian Crockcroft

    View Slide

  14. E o que é arquitetura de Micro Serviços?
    Micro Serviços são serviços pequenos e autônomos que trabalham em conjunto
    Sam Newman

    View Slide

  15. E o que é arquitetura de Micro Serviços?
    “É uma forma de desenvolver uma aplicação como uma suíte de pequenos
    serviços, cada qual rodando em seu próprio processo (...). Esses serviços são
    construídos ao redor de capacidades de negócio e são implantados
    independentemente com processos automatizados. (...) Podem ser escritos em
    diferentes linguagens e usar tecnologias diferentes de armazenamento de dados”
    James Lewis e Martin Fowler

    View Slide

  16. View Slide

  17. Vantagens
    ● Arquitetura por serviço mais simples
    ● “Padronização da comunicação (HTTP Rest, Message Broker)
    ● Serviços “independentes”
    ● Tende ser mais fácil aplicar Continuous Delivery

    View Slide

  18. Vantagens
    ● Aplicação de testes unitários e sistêmicos mais facilmente
    ● Liberdade de escolher a tecnologia
    ● Times autocontidos
    ● Diminuição de potenciais pontos de falhas

    View Slide

  19. Desvantagens
    ● Exige uma boa maturidade em automação, rastreamento de bugs e
    monitoramento
    ● Aumento da coordenação e comunicação entre equipes para evolução do que
    existe ou novos serviços
    ● Torna mais difícil testes de integração

    View Slide

  20. Desvantagens
    ● Exige uma boa maturidade em automação, rastreamento de bugs e
    monitoramento
    ● Aumento da coordenação e comunicação entre equipes para evolução do que
    existe ou novos serviços
    ● Torna mais difícil testes de integração
    ● Mais difícil contratação de pessoas. Mais habilidade são requeridas

    View Slide

  21. View Slide

  22. Premissas
    ● Centralização dos logs
    ● “Instâncias” (VMs e containers) stateless
    ● Distributed Tracing
    ● Circuit Breaking
    ● Health Check

    View Slide

  23. Premissas
    ● Monitoramento “das regras de negócio”
    ● Use um serviço de “mensageria” para comunicação entre os Micro Serviços
    ● Cada Micro Serviço tem sua própria instância de banco de dados
    ● Múltiplas versões da aplicação rodando ao mesmo tempo
    ● Uso de um gerenciador de segredos “Secrets”

    View Slide

  24. Orquestrado Coreografado

    View Slide

  25. View Slide

  26. As Equipes
    ● Organização das equipes capazes de desenvolver um Micro Serviço/Sistema
    de forma autônoma
    ● Desenvolvimento baseado no Trunk/Master
    ● Autonomia
    ● Independência

    View Slide

  27. E o legado?

    View Slide

  28. Quando não usar
    ● Aplicações CRUD simples
    ● Quando a complexidade e custo de Micro serviços > Monolito

    View Slide

  29. Obrigado
    Fernando Ike - [email protected]

    View Slide