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

Arquitetura resiliente usando microserviços

Arquitetura resiliente usando microserviços

Nesta palestra explico um pouco como funciona a arquitetura de microserviços da Olist e porque ela é altamente resiliente.

Tweet

Transcript

  1. Arquitetura resiliente usando microserviços

  2. Eu Rafael Henrique da Silva Correia @rafaelhenrique http://blog.abraseucodigo.com.br - Desenvolvedor

    Python na Olist (temos vagas!) - Aprendiz de Golang - Rogue em World of Warcraft (Horda) - Não gosto de Java!
  3. “Resiliência: A incrível arte de se foder dar mal e

    continuar de pé” Autor desconhecido
  4. Arquitetura de microserviços Fonte: “Microservices: a definition of this new

    architectural term” https://martinfowler.com/articles/microservices.html
  5. Vantagens da arquitetura de microserviços • Arquitetura individual do microserviço

    é simples • Sistemas totalmente independentes • Serviços com responsabilidade específica (coeso) e desacoplados • Facilidade de deploy • Não se prende a uma tecnologia específica • Times trabalhando em paralelo • Ausência de um ponto de falha único Fonte: “Microserviços: dos grandes monólitos às pequenas rotas” https://bit.ly/2rLYmsz
  6. Desvantagens da arquitetura de microserviços • O planejamento tem que

    ser maior • A arquitetura geral se torna complexa se não for bem documentada • Monitorar, monitorar e monitorar • O desenvolvimento de recursos novos que abrangem mais de um serviço devem ser cuidadosamente orquestrado em todas as equipes Fonte: Microserviços: dos grandes monólitos às pequenas rotas: https://bit.ly/2rLYmsz
  7. Cenário demonstrativo A Olist publica produtos de X vendedores (sellers)

    em Y canais, porém quando um vendedor atualiza preço de um determinado produto na plataforma Olist este produto precisa ser re-eleito para depois ser publicado/atualizado nos Y canais.
  8. Mundo feliz: Usando requests HTTP [1]

  9. Mundo real: Usando requests HTTP [1] Problema: Muitas regras de

    eleição/publicação em uma única API.
  10. Mundo feliz: Usando requests HTTP [2]

  11. Mundo real: Usando requests HTTP [2]

  12. Mundo real que funciona (Pub/Sub + HTTP)

  13. Como é na Olist? apis • APIs em RestFULL usando

    Django ou Go ou Apistar ou <whatever> • Só persistem e fazem leitura das informações nos bancos de dados services • Consumidores das filas AWS SQS • Contém regra de negócio brokers • Um agregado de serviços com um objetivo comum (b2w-broker por exemplo) apps • “Interfaces” para conversar com os nossos queridos usuários <3 • Não tem persistência
  14. A mágica por trás de um service Mais sobre o

    Loafer: https://loafer.readthedocs.io/en/latest/ https://bit.ly/2DAgMCW • Usamos o projeto Loafer para construir todos os nossos services • Loafer é um projeto Python que consome filas do serviço Amazon SQS de forma bem robusta • Vamos a um exemplo prático… https://github.com/rafaelhenrique/simple-sqs-consumer
  15. Referências • Microserviços: dos grandes monólitos às pequenas rotas: https://bit.ly/2rLYmsz

    • Blog da Olist: https://engineering.olist.com • Microservices: https://martinfowler.com/articles/microservices.html • Temos vagas! https://www.99jobs.com/olist
  16. Obrigado! Perguntas!? Rafael Henrique da Silva Correia @rafaelhenrique http://blog.abraseucodigo.com.br https://speakerdeck.com/rafaelhenrique