construindo sites mais inteligentes com galeb - fernando carolo (globo.com), weop - the operations...
TRANSCRIPT
CONSTRUINDO SITES MAIS INTELIGENTES
COM GALEB
Fernando Carologlobo.com
Galeb?
Roteador/proxy HTTP/1.1
Inspiração: Heroku, App Engine
1990: 1 site = 1 servidor
2000: balanceador de carga
1 site = 1 IP = vários servidores
Vários sites?
Virtual hosts
Servidores precisam ser iguais
Mudança = reload, restart
HTTP
Roteamento HTTP
Virtual host = pool de servidores
Mudanças sem interrupção
galeb
one.example other.example
192.0.2.10
*.example
Galeb trabalha na camada 7
Redundância via camada 4
(hardware, ELB, etc)
Features
Políticas de balanceamento
round robin
least conn
IP hash
random
Métricas via statsd+Graphite [1,2]
conexões ativas
requisições/host
status code (2xx, 3xx, 4xx, 5xx)
tempo de resposta
Casos de uso
ambientes de teste/IC
red/black deploy
PaaS
Como funciona?
Primeira tentativa: hipache [3]
Node.js + node-http-proxy
Single-threaded
Versão atual: Galeb Router
Baseado em Vert.x [4]
Java
Multi-threaded
Não bloqueante
Operação em cluster
masterless
sincronismo via event bus
Escalabilidade horizontal
API RESTful
Reflexos na próxima requisição
Roadmap
–Eric S. Raymond
“Every good work of software starts by scratching a
developer's personal itch.”
Substituir o hardware
Roteamento por URI
vários back-ends para um site
um back-end para vários sites
galeb
one.example/blog one.example/*
192.0.2.10
one.example
Integração com Tsuru
Websockets
Tratamento de cookies
controle de sessão
teste A/B
Health-check ativo
Controle de acesso
HTTP/2.0
Demonstração
Onde?
galeb.io
github.com/globocom/galeb/
Use e contribua
Perguntas?
Este trabalho está licenciado com uma Licença Creative Commons Atribuição-NãoComercial-CompartilhaIgual 4.0 Internacional
OBRIGADO
Fernando [email protected]
Links:
[1] https://codeascraft.com/2011/02/15/measure-anything-measure-everything/
[2] http://graphite.wikidot.com/
[3] https://github.com/hipache/hipache/
[4] http://vertx.io/
Créditos:
Slide 2: paraflyer/Flickr, https://www.flickr.com/photos/paraflyer/5803595153
Slide 4: Simon Bisson/Flickr, https://www.flickr.com/photos/sbisson/298160250
Slide 5: Shannan Muskopf/Flickr, https://www.flickr.com/photos/40964293@N07/3821896226
Slide 8: Stephan Mosel/Flickr, https://www.flickr.com/photos/moe/38241195
Slide 12: Norlando Pobre/Flickr, https://www.flickr.com/photos/npobre/2601582256
Slide16: Darryl Braaten/Flickr, https://www.flickr.com/photos/dbraaten/323401934
Slide 18: Andrew Magill/Flickr, https://www.flickr.com/photos/amagill/87559968
Slide 20: Michael Allen Smith/Flickr, https://www.flickr.com/photos/digitalcolony/8489709854
Slide 21: Alika Seu/Flickr, https://www.flickr.com/photos/28863939@N04/5478630263
Slide 22: Alan Stark/Flickr, https://www.flickr.com/photos/squeaks2569/8114399667
Slide 25: mrhayata/Flickr, https://www.flickr.com/photos/mrhayata/5260658138
Slide 27: jerry john/Flickr, https://www.flickr.com/photos/jerryjohn/63351388
Slide 30: Toshihiro Gamo/Flickr, https://www.flickr.com/photos/dakiny/8299559189
Slide 31: Wes Peck/Flickr, https://www.flickr.com/photos/wespeck/4960579336
Slide 34: Rede Globo/Divulgação
Slide 35: velkr0/Flickr, https://www.flickr.com/photos/velkr0/4014689
Slide 36: Seattle Municipal Archives/Flickr, https://www.flickr.com/photos/seattlemunicipalarchives/2692491283
Slide 37: Sebastian Niedlich/Flickr, https://www.flickr.com/photos/42311564@N00/3577957474
Slide 38: Ged Carroll/Flickr, https://www.flickr.com/photos/renaissancechambara/5084900444
Slide 39: Matthias Ripp/Flickr, https://www.flickr.com/photos/56218409@N03/15371262455
Todas as imagens do Flickr utilizadas através de uma licença Creative Commons