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

Escalando um App Go usando Serverless e Kafka

Escalando um App Go usando Serverless e Kafka

Uma degustação de como poderíamos escalar uma aplicação utilizando serverless, nesta apresentação utilizamos Google Cloud Functions, mas nada impede de utilizar AWS lambdas ou qualquer outro que convier para sua necessidade.
Utilizamos serverless para escalar o finalizar compra de um e-commerce que é um marketplace e pode haver picos de mais de 200k/reqs e ao invés de bater direto em um banco de dados relacional e escalar o banco para tomar esta porrada, utilizei o kafka para isto, e como a mesma informação será utilizada e consumida por diversos serviços nada que utilizar uma tecnologia para stream e o mais legal que é distribuído, sabemos que kafka também é um banco de dados e exploro um pouco deste recurso também na apresentação.
Nossos serviços lambdas são todos feitos em Go, e todo back também.

Jefferson Otoni Lima

August 28, 2020
Tweet

More Decks by Jefferson Otoni Lima

Other Decks in Technology

Transcript

  1. http://s3wf.com
    @jeffotoni
    TDC ONLINE 2020 São Paulo 27/08
    Jefferson Otoni
    Escalando um App Go
    usando Serverless e Kafka

    View Slide

  2. View Slide

  3. @jeffotoni
    Fácil de
    implementar
    Altamente
    escalável
    Resiliente
    desafios

    View Slide

  4. arquitetura
    @jeffotoni
    Go Go Goc
    o
    mongo rethinkDB postgres
    app
    browsers

    View Slide

  5. nossa arquitetura
    s3shop
    @jeffotoni

    View Slide

  6. @jeffotoni

    View Slide

  7. @jeffotoni

    View Slide

  8. modelo 1
    @jeffotoni

    View Slide

  9. 1
    @jeffotoni

    View Slide

  10. 1
    @jeffotoni

    View Slide

  11. meio Pagamento
    Pub/Sub Cloud Function
    Cloud Function
    Cloud Function
    Cloud Function
    sucesso
    @jeffotoni

    View Slide

  12. postgres
    Pub/Sub
    microservice
    @jeffotoni
    consumer
    rest
    rpc
    write

    View Slide

  13. Pub/Sub
    @jeffotoni
    RabbitMQ
    Sqs
    kubemq.io

    View Slide

  14. @jeffotoni
    consumer

    View Slide

  15. @jeffotoni
    Cloud function

    View Slide

  16. @jeffotoni
    Cloud function

    View Slide

  17. novo Cenário
    @jeffotoni

    View Slide

  18. @jeffotoni
    mongo rethinkDB

    View Slide

  19. postgres
    BigQuery
    Redis
    RethinkDB
    mongo
    nossos BDs
    @jeffotoni
    Spanner

    View Slide

  20. Solução 2
    @jeffotoni

    View Slide

  21. @jeffotoni

    View Slide

  22. @jeffotoni
    service service service
    service service service
    service service service
    apache kafka

    View Slide

  23. Event Streams
    @jeffotoni
    possível solução

    View Slide

  24. @jeffotoni
    possível solução

    View Slide

  25. @jeffotoni
    possível solução

    View Slide

  26. @jeffotoni
    possível solução

    View Slide

  27. @jeffotoni
    Kafka producer

    View Slide

  28. @jeffotoni
    Kafka consumer

    View Slide

  29. Por quê usar Go?
    @jeffotoni

    View Slide

  30. @jeffotoni
    @jeffotoni
    Ritchie

    View Slide

  31. @jeffotoni
    25 Keywords
    break default func interface select
    case defer go map struct
    chan else goto package switch
    const fallthrough if range type
    continue for import return var

    View Slide

  32. @jeffotoni
    Goroutines

    View Slide

  33. @jeffotoni
    Pprof
    Profiling Go
    https://eltonminetto.dev/post/2020-04-08-golang-pprof

    View Slide

  34. https://golang.org/pkg/testing @jeffotoni

    View Slide

  35. @jeffotoni
    Comunidade
    Telegram
    https://t.me/go_br
    https://t.me/go_bh
    https://t.me/golangcwb
    Slack
    https://gophers.slack.com
    (members >~45k)
    GopherCon Brasil 2020
    https://2020.gopherconbr.org
    Wiki Conferencias
    https://github.com/golang/go/wiki/Conferences
    Meetup
    https://www.meetup.com/go-belo-horizonte
    https://www.meetup.com/pt-BR/golangbr
    https://www.meetup.com/pt-BR/Women-Who-Go-Sampa
    https://www.meetup.com/pt-BR/Golang-Campinas/
    https://www.meetup.com/pt-BR/golang-poa/
    https://www.meetup.com/pt-BR/GolangCWB/

    View Slide

  36. @jeffotoni
    Paradigma
    concorrente
    Compilada
    estaticamente
    Tipagem
    estática
    Multi
    Plataformas
    Retrocompa-
    tibilidade

    View Slide

  37. @jeffotoni
    https://golang.org
    https://golang.org/doc/effective_go.html
    https://golang.org/ref/spec
    https://golang.org/doc
    https://tour.golang.org/welcome/1

    View Slide

  38. Thanks := &Obrigado{...}
    Obrigado...
    github.com/jeffotoni
    instagram.com/jeffotoni
    https://t.me/devopsbh
    https://t.me/go_br
    https://t.me/awsbrasil
    linkedin.com/in/jeffotoni/

    View Slide