Frete vs Black Friday
Jéssica Bonson
Principal Engineer no Olist
TDC São Paulo 2020, Trilha Go
Slide 2
Slide 2 text
Jéssica Pauli de C Bonson
● +-8 anos de exp em pesquisa/desenvolvimento
● graduação/mestrado em Ciências da Computação
● foco em dev backend, machine learning e big data
Jogar RPG
Praticar Canto
Ler Lovecraft
Hobbies:
Slide 3
Slide 3 text
Maior loja nos principais marketplaces do Brasil.
Arquitetura em microsserviços e serverless.
Python. Go. PostgreSQL. AWS. Heroku.
20+ APIs
120+ serviços
3m+ produtos
30k+ logistas
10m+ anúncios
200k+ pedidos
por mês
Slide 4
Slide 4 text
Cálculo
de Frete
Slide 5
Slide 5 text
No content
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
Desafios
● Prazo e preço competitivos
● Prazo e preço corretos
● Tempo de resposta rápido
● Quantidade de requisições
● Quantidade de rotas
Problemas
● Tempo médio de resposta da API: ~200ms
● Cálculo baseado nos Correios
● Performance de entrega: ~78%
● Mais de 40 milhões de rotas
Slide 11
Slide 11 text
Desafios de Frete na
Black Friday
Slide 12
Slide 12 text
Desafios
● Prazo e preço competitivos
● Prazo e preço corretos
● Tempo de resposta rápido
● Quantidade de requisições
● Quantidade de rotas
Slide 13
Slide 13 text
Desafios na Black Friday
● Prazo e preço competitivos
● Prazo e preço corretos
● Tempo de resposta rápido
● Quantidade de requisições
● Quantidade de rotas
Slide 14
Slide 14 text
Desafios na Black Friday
● Prazo e preço competitivos
● Prazo e preço corretos
● Tempo de resposta rápido: < 100ms
● Quantidade de requisições: 10~15x maior
● Quantidade de rotas
Slide 15
Slide 15 text
Desafios na Black Friday
● Prazo e preço competitivos
● Prazo e preço corretos
● Tempo de resposta rápido: < 100ms
● Quantidade de requisições: 10~15x maior
● Quantidade de rotas
Sendo que…
...dia normal
...só B2W
~60k RPM
Slide 16
Slide 16 text
Nova API de Frete!
Slide 17
Slide 17 text
Nova Techstack
● Golang
● Serverless
● AWS
○ Lambda
○ API Gateway
○ RDS
Slide 18
Slide 18 text
No content
Slide 19
Slide 19 text
Por que serverless?
Slide 20
Slide 20 text
Por que serverless?
Escalabilidade
Gerenciamento & Disponibilidade
AWS Lambda + API Gateway
Slide 21
Slide 21 text
Por que serverless?
Escalabilidade
Gerenciamento & Disponibilidade
AWS Lambda + API Gateway
AWS Serverless Application Model (SAM)
Slide 22
Slide 22 text
Lambda + Go
Slide 23
Slide 23 text
template.yaml
Slide 24
Slide 24 text
api.yaml
Slide 25
Slide 25 text
helloworld/main.go
Slide 26
Slide 26 text
helloworld/utils.go
Slide 27
Slide 27 text
helloworld/handler.go
Slide 28
Slide 28 text
Organização de Código
● Package
○ Regras de negócio
○ Model / Repository / Service
● API
○ Enxuta
○ Trata o evento e repassa para o recurso no package
○ Sem regras de negócio
○ Cria a conexão com o BD e repassa para o package
○ Validações
Slide 29
Slide 29 text
Resultado Final
Slide 30
Slide 30 text
Resultado Final
Tempo médio de resposta: ~45ms
Slide 31
Slide 31 text
Resultado Final
Tempo médio de resposta: ~45ms
Obs.: Sem goroutines, ainda dá para melhorar!