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

Go no Luiza Labs

Go no Luiza Labs

Pequena timeline da adoção de Go no Luiza Labs / Magazine Luiza, apresentada no TDC São Paulo 2016.

More Decks by Arnaldo de Moraes Pereira

Other Decks in Technology

Transcript

  1. 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
  2. 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
  3. Primeiro Go: sproxy • Persiste apenas a config no disco

    • Toml, Negroni • Gorilla context, Gorilla mux • Gabs ("dynamic json")
  4. Segundo Go: acme • Catálogo de produtos: API mais utilizada

    • Ingestão, entrega, busca separados • DynamoDB • Kinesis stream • SQS, s3, solr, etc
  5. Segundo Go: acme • Lógica de negócio subestimada • Prazo

    estourado • Projeto re-escrito em Python
  6. O que houve? • Não dominávamos a lógica de negócio

    • Linguagem nova • Equipe pequena • Prazo curto
  7. Terceiro Go: Wally • Microserviço de estoque • Desenvolvido por

    Rafael Correia e Abner Campanha • Negroni • Go-metrics, newrelic
  8. 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
  9. 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
  10. 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