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

dev-summit-iv-Microsserviços: conceitos, boas p...

dev-summit-iv-Microsserviços: conceitos, boas práticas e padrões

More Decks by Kamila de fatima santos oliveira

Other Decks in Programming

Transcript

  1. Nesta palestra Boas práticas de se adotar em microsserviços O

    que são microsserviços? Características de microsserviços 1 3 2
  2. São uma abordagem de arquitetura na qual o software é

    composto de pequenos serviços independentes que se comunicam entre si e são organizados de acordo com seus domínios de negócio. O que são microsserviços?
  3. Autônomos - Cada serviço pode ser desenvolvido, escalado e implantado

    sem interferir em outros serviços. Características dos microsserviços
  4. Autônomos - Não é necessário compartilhar nenhum código e a

    comunicação acontece por meio de chamadas as APIs (síncronas) ou de forma assíncrona. Características dos microsserviços
  5. Especialistas - Cada serviço é desenhado para resolver um problema

    específico, se começar a ser necessário ter outras responsabilidades, é indicado que se crie um novo serviço. Características dos microsserviços
  6. Resilientes - A independência do serviço aumenta a resiliência a

    falhas na arquitetura , se um deles tiver algum problema , só afetará alguma parte do fluxo. Características dos microsserviços
  7. Reutilização de código - A divisão em módulos com responsabilidades

    bem definidas permite que funções específicas de algum serviço possam ser utilizadas para complementar features em outros sem precisar reescrever o código. Características dos microsserviços
  8. As características apresentadas aqui são as mesmas apresentadas no livro

    Microsserviços prontos para produção Boas práticas de se adotar em microsserviços
  9. Um microsserviço considerado estável é aquele que durante o desenvolvimento,

    deploy, inclusão de novas tecnologias e desativação de outros serviços não resulta em instabilidade do ecossistemas de microsserviços que ele faz parte. Estabilidade
  10. Tem um ciclo de desenvolvimento padronizado (para se proteger de

    más práticas de desenvolvimento) Um microsserviço pode ser considerado estável e confiável quando
  11. O código é submetido a testes de unidade, integração, e2e,

    regras de coverage (o tanto que um teste é coberto por testes) etc. Um microsserviço pode ser considerado estável e confiável quando
  12. Possui seus clientes (serviços que o consomem) conhecidos. Um microsserviço

    pode ser considerado estável e confiável quando
  13. Nunca deve existir uma parte do ecossistema de microsserviços que

    uma falha pode parar todo o fluxo. Tolerância a falhas
  14. Também não deve haver qualquer parte individual dentro da arquitetura

    de um microsserviço que possa derrubar o microsserviço todo quando ele falhar. Tolerância a falhas
  15. Microsserviços devem suportar falhas internas (do próprio microsserviço) e falhas

    externas (que acontecem em outras camadas e serviços externos). Tolerância a falhas
  16. Ele é testado por meio de testes de carga e

    teste de caos. Um microsserviço pode ser considerado tolerante a falhas quando
  17. Existe um procedimento padrão para tratar incidentes dentro das equipes.

    Um microsserviço pode ser considerado tolerante a falhas quando
  18. É possível acompanhar o que está acontecendo e o que

    já aconteceu com os seus microsserviços Monitoramento
  19. Seu logging reflete com precisão os estados passados do microsserviço

    Um microsserviço pode ser considerado com um bom monitoramento quando
  20. Seus dashboards são fáceis de interpretar e possuem todas as

    métricas principais. Um microsserviço pode ser considerado com um bom monitoramento quando
  21. Os logs não contêm informações sensíveis e só informações relevantes.

    Um microsserviço pode ser considerado com um bom monitoramento quando
  22. As pessoas que entram na equipe desse serviço conseguem ter

    acesso a esse histórico de informações, sabe como preparar o ambiente, desenho da arquitetura, dentre outras informações essenciais para que possa iniciar o desenvolvimento? Uma equipe que quiser saber desse microsserviço vai conseguir entender o papel dele somente com a documentação? Documentação
  23. Contém uma descrição da responsabilidade daquele microsserviço É atualizada frequentemente

    Um microsserviço pode ser considerado bem documentado quando a documentação
  24. Contém um diagrama de arquitetura Contatos das pessoas responsáveis Guia

    de bordo de desenvolvimento Collections Faq Um microsserviço pode ser considerado bem documentado quando a documentação
  25. Qual o papel dele/em que parte esse microsserviço entra dentro

    daquele ecossistema. Todas as pessoas da equipe devem saber do conteúdo e pessoas de fora devem compreender. Um microsserviço pode ser considerado bem documentado quando a documentação
  26. Alguns dos principais padrões apresentados por Chris Richardson no site

    Microsservices.io Padrões de microsserviços
  27. Strangler Patterns - cria uma nova aplicação em torno do

    monolito legado, fazendo as funções do antigo monolito e adicionando novas, agregando mais valor ao novo serviço Padrões de refatoração
  28. AntiCorruption Layers - cria uma camada de anticorrupção que se

    traduz entre os modelos de domínio (do monolito que foi herdado e do microsserviço novo que está sendo desenvolvido) Padrões de refatoração
  29. Database per Service - cada serviço tem seu próprio banco

    de dados privado Padrões de gerenciamento de dados
  30. Saga - trabalha com uma sequência de transações locais, para

    manter a consistência dos dados entre os serviços Padrões de gerenciamento de dados
  31. Saga - Orquestração - um objeto orquestrador informa as aplicações

    participantes quais transações locais executar. Padrões de gerenciamento de dados
  32. Saga - Coreografia - decisões distribuídas , cada transação publica

    eventos que acionam transações locais em outros serviços. Padrões de gerenciamento de dados
  33. Api Composition - implementar consultas invocando os serviços que possuem

    os dados e realizando uma junção na memória Padrões de gerenciamento de dados
  34. CQRS - Define um banco de dados read-only, que é

    uma réplica somente leitura projetada para oferecer suporte a essa consulta. O aplicativo mantém a réplica atualizada por meio de eventos Padrões de gerenciamento de dados
  35. Domain Event - publica um evento sempre que os dados

    forem alterados Padrões de gerenciamento de dados
  36. API Gateway - um serviço que fornece a cada cliente

    uma interface unificada para serviços, adicionando uma camada a mais de segurança, fazendo balanceamento de carga etc Padrões de APIs externas
  37. Spring possui uma grande variedade de projetos para os mais

    variados cenários e necessidades dentro de uma aplicação Spring Cloud
  38. Facilita a criação de sistemas distribuídos que são cloud native

    https://spring.io/projects/spring-cloud Spring Cloud
  39. Possibilita que microsserviços descubram facilmente a rota de outros serviços

    que precisem acessar, os mais conhecidos são Spring Cloud Consul e Spring Cloud Netflix Eureka Service Discovery
  40. Tem o papel de ser um intermediário nas nossas requisições

    para outros serviços. Os mais conhecidos são o Zuul e o Spring Cloud Gateway Gateway
  41. Permite armazenar configurações de modo centralizado, para isso temos o

    Spring Cloud Config Server Configuração centralizada - Config Server
  42. Controle sobre falhas e altas taxas de latência dentre os

    serviços, mais conhecido: Resilience4J Circuit Breaker
  43. Inclui id único a cada requisição que entra na aplicação,

    o que facilita o rastreamento de requisições que passam por um grande fluxo dentro do serviço Sleuth