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

Microserviços em um contexto nada favorável

Microserviços em um contexto nada favorável

Descobrimos que microservices seria uma decisão precipitada por diversos fatores, dentre os quais apresento na palestra como pontos de atenção antes de mergulhar em águas desconhecidas.

Avatar for Rogério Zambon

Rogério Zambon

May 14, 2016

More Decks by Rogério Zambon

Other Decks in Programming

Transcript

  1. Globalcode – Open4education Trilha Ruby – Microserviços em um contexto

    nada favorável Rogério Zambon Desenvolvedor - MATERA Systems
  2. Globalcode – Open4education Agenda • Visão geral • Introdução •

    Problemas encontrados • Proposta de trabalho • Conclusão
  3. Globalcode – Open4education Visão geral Consideramos como um conjunto de

    técnicas usadas há algum tempo no desenvolvimento de aplicações.
  4. Globalcode – Open4education Visão geral Surgiu nos últimos anos com

    a proposta de construir aplicações como suítes de serviços com deploy independente.
  5. Globalcode – Open4education Visão geral “construção de serviços com alta

    granularidade (divisão) que dão suporte às capacidades necessárias ao funcionamento do negócio.”
  6. Globalcode – Open4education Visão geral Coesão Serviços devem estar alinhados

    com a capacidade do negócio e não devem executar ações fora dos limites desta capacidade.
  7. Globalcode – Open4education Visão geral Automação Entrega contínua deve ser

    um investimento obrigatório. Caso não seja possível testar e entregar automaticamente, não use microserviços.
  8. Globalcode – Open4education Visão geral Arquitetura em camadas Foco na

    coesão funcional ao invés da coesão técnica. Serviços devem ser altamente autônomos, ou seja, não podem depender de outros serviços. O uso de camadas aumenta a complexidade e dificulta a entrega.
  9. Globalcode – Open4education Visão geral De acordo com alguns “especialistas”,

    microserviços ainda precisa seguir com o rótulo de experimentação.
  10. Globalcode – Open4education Introdução • Empresa • 5 anos •

    Ruby on Rails • 3 desenvolvedores • 120 gems dependentes • Refactoring de ecommerce • Arquitetura indefinida • iOS & Android app • 1 desenvolvedor
  11. Globalcode – Open4education Introdução +----------------------+-------+-------+ | Name | Lines |

    LOC | +----------------------+-------+-------+ | Controllers | 6179 | 4892 | | Models | 5703 | 3603 | | Javascripts | 7880 | 5836 | +----------------------+-------+-------+ | Total | ..... | ..... | +----------------------+-------+-------+
  12. Globalcode – Open4education Problemas encontrados Arquitetura Construído à muitas mãos,

    não há compreensão de todas as decisões técnicas e de negócio. Cada parte da aplicação respeita uma “época” do desenvolvimento.
  13. Globalcode – Open4education Problemas encontrados Integração Não há completo domínio

    dos efeitos colaterais da divisão de cada capacidade do negócio e nem mesmo em como ser tolerante às falhas decorrentes da integração dos serviços.
  14. Globalcode – Open4education Proposta de trabalho Abortar Após quase duas

    semanas de discussões, foi decido não iniciar os trabalhos diretamente com microserviços.
  15. Globalcode – Open4education Proposta de trabalho Abortar No entanto, optou-se

    por desenvolver um pequeno serviço, a fim de tentar compreender todas as dificuldades futuras.
  16. Globalcode – Open4education Proposta de trabalho Abortar No entanto, optou-se

    por desenvolver um pequeno serviço, a fim de tentar compreender todas as dificuldades futuras. Fracasso!
  17. Globalcode – Open4education Proposta de trabalho Abortar • Coesão •

    Completamente inútil, se usado isoladamente • Causou dependência entre serviços • Automação • Devido a dependência, dependendo da modificação, o serviço dependente era afetado.
  18. Globalcode – Open4education Proposta de trabalho Divisão interna Propormos uma

    organização das regras de negócio internamente, uma vez que elas podem estar em diversos lugares da aplicação.
  19. Globalcode – Open4education Proposta de trabalho Divisão interna Deixando a

    parte de infraestrutura de lado, optamos por construir os serviços isoladamente dentro da aplicação monolítica.
  20. Globalcode – Open4education Conclusão Sua atual aplicação pode, ou deve,

    sofrer mudanças antes de partir para microserviços.
  21. Globalcode – Open4education Conclusão Os “arquitetos” da aplicação devem conhecer

    profundamente as regras do negócio, a fim da granularidade ser coesa.
  22. Globalcode – Open4education Conclusão Microserviços em um contexto cuja “senioridade”

    é baixa, pode render danos a produtividade e aumento de custos.