Go no Luiza Labs

15
Go no Luiza Labs

Transcript of Go no Luiza Labs

Page 1: Go no Luiza Labs

Go no Luiza Labs

Page 2: Go no Luiza Labs

Luiza Labs

● Desenvolve e opera os canais de venda do Magazine Luiza● 102 colaboradores● 2 HQs - São Paulo e Franca● ~200 apps● >700 lojas● R$ 10.5 (Magazine) bilhões de receita bruta em 2015● Python, Java, Javascript, Swift, Golang

Page 3: Go no Luiza Labs

Primeiro Go: sproxy● Proxy entre API de busca e solr● Permite troca de API de precificação do site a qualquer momento, sem

deploy ou restart: configurável através de interface REST● Com ~500 linhas, atende em média 1MM requests / hora● Último release novembro de 2015

● Sem channels, sem Goroutines● Mesmo sem eles, Go é extremamente eficiente

Page 4: Go no Luiza Labs

Primeiro Go: sproxy

● Persiste apenas a config no disco● Toml, Negroni● Gorilla context, Gorilla mux● Gabs ("dynamic json")

Page 5: Go no Luiza Labs

Segundo Go: acme

● Catálogo de produtos: API mais utilizada● Ingestão, entrega, busca separados● DynamoDB● Kinesis stream● SQS, s3, solr, etc

Page 6: Go no Luiza Labs

Segundo Go: acme

● Lógica de negócio subestimada● Prazo estourado● Projeto re-escrito em Python

Page 7: Go no Luiza Labs

O que houve?

● Não dominávamos a lógica de negócio● Linguagem nova● Equipe pequena● Prazo curto

Page 8: Go no Luiza Labs

Terceiro Go: Wally

● Microserviço de estoque● Desenvolvido por Rafael Correia e Abner Campanha● Negroni● Go-metrics, newrelic

Page 9: Go no Luiza Labs

Automação de infraestrutura

● Packer● Ansible● Terraform● Fabric

● Um microserviço por instância?

Page 10: Go no Luiza Labs

Kubernetes● Go, APIs baseadas em swagger● 3a geração de orquestrador de containeres do Google (Borg, Omega)● Rolling updates, horizontal pod (container) autoscaling, AB testing

Page 11: Go no Luiza Labs

Teresa

● Nosso PaaS● Faz build com heroku buildpacks, suporta Go, Python e Node● Roda como pod, no Kubernetes● API server, client e swagger-UI gerados via go-swagger● Torna o Kubernetes mais amigável para o desenvolvedor

Page 12: Go no Luiza Labs

Teresa

Teresa

Page 13: Go no Luiza Labs

Teresa

● Go-swagger: github.com/go-swagger/go-swagger● Cobra: github.com/spf13/cobra● Gorm: github.com/jinzhu/gorm

Page 14: Go no Luiza Labs

Referências

● Borg, Omega and Kubernetes: http://queue.acm.org/detail.cfm?id=2898444● Go-swagger Todo list tutorial: http://goswagger.io/tutorial/todo-list/● Goa, design first then win: http://goa.design

Page 15: Go no Luiza Labs

ObrigadoArnaldo Pereira - Luiza Labs

http://luizalabs.comhttp://twitter.com/arnaldostream