Go no Luiza Labs

Post on 15-Jan-2017

221 views 2 download

Transcript of Go no Luiza Labs

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

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

Primeiro Go: sproxy

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

Segundo Go: acme

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

Segundo Go: acme

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

O que houve?

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

Terceiro Go: Wally

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

Automação de infraestrutura

● Packer● Ansible● Terraform● Fabric

● Um microserviço por instância?

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

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

Teresa

Teresa

Teresa

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

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

ObrigadoArnaldo Pereira - Luiza Labs

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