estratégias de escablabilidade para serviços online

20
Porque o Google (quase) sempre responde as minhas perguntas? Fernanda G Weiden Site Reliability Engineer Cluster Management

Upload: guto-xavier

Post on 25-Jun-2015

455 views

Category:

Education


1 download

DESCRIPTION

Estratégias de escablabilidade para serviços online - Fernanda Weiden (Google)

TRANSCRIPT

Page 1: Estratégias de escablabilidade para serviços online

Porque o Google (quase) sempre responde as minhas

perguntas?

Fernanda G WeidenSite Reliability EngineerCluster Management

Page 2: Estratégias de escablabilidade para serviços online

Missão

"to organize the world's information and make it universally accessible and useful"

Page 3: Estratégias de escablabilidade para serviços online

O que o Google faz?

e muito mais...

Page 4: Estratégias de escablabilidade para serviços online

O que está por trás disso tudo?

Page 5: Estratégias de escablabilidade para serviços online
Page 6: Estratégias de escablabilidade para serviços online

Sysadmin na indústria...

• Black-box softwareo pouca instrumentação, se existente

• Dimensionamento de hardwareo baseado nas necessidades do softwareo impulsionado por fornecedores

• Monitoramentoo Reação a falhas e imprevistos

Page 7: Estratégias de escablabilidade para serviços online

Ooops...

Page 8: Estratégias de escablabilidade para serviços online

Site Reliability Engineering

• "hope is not a strategy"o se você pensa que pode quebrar, provavelmente vaio se você pensa que não vai quebrar, definitivamente vaio de uma maneira que você não pensouo espetacular e "bizarramente"

Page 9: Estratégias de escablabilidade para serviços online

Reliability by Wikipedia

"Ability of a person or system to perform and maintain its functions in routine circumstances, as well as hostile or

unexpected circumstances."

Page 10: Estratégias de escablabilidade para serviços online

Site Reliability Engineering

• 50% sysadmins, 50% engenheiros de software• Acesso completo ao código fonte

o participação em revisão de design • PRR• Instalação

o dimensionamento “job” - CPU, RAM, disk, network • Capacity Planning

o crescimento orgânico, mudanças de infraestrutura, lançamento de funcionalidades

• Monitores/alertas• Gerenciamento de clusters• Lançamento de software • Engenharia de software

Page 11: Estratégias de escablabilidade para serviços online

Site Reliability Engineering

• Código fonte é tudoo código controladoo builds e rollouts automatizados

• Sistema de revisão em par o estritos critérios de aceitação o guias de estilo, testes de pre-submito subject ownership/expertise

• Processo flexível: time, experts• Engineering driven (not management)

o Critérios técnicos prevalecem

Page 12: Estratégias de escablabilidade para serviços online

Números que todos engenheir@s de computação deveria saber...L1 cache reference 0.5 ns Branch mispredict 5 ns L2 cache reference 7 ns Mutex lock/unlock 100 ns Main memory reference 100 ns Compress 1K bytes with Zippy 2,500 ns Send 2K bytes over 1 Gbps network 20,000 ns Read 1 MB sequentially from memory 250,000 ns Round trip within same datacenter 500,000 ns Disk seek 10,000,000 ns Read 1 MB sequentially from network 10,000,000 ns Read 1 MB sequentially from disk 30,000,000 ns Send packet CA->Netherlands->CA 150,000,000 ns

Page 13: Estratégias de escablabilidade para serviços online

Filosofia de hardware no Google

• Eficiência em consumo de energia• Datacenters com alta densidade de uso• Software deve sobreviver outages planejados ou não• Replique serviços inteiros, e não componentes de hardware

Page 14: Estratégias de escablabilidade para serviços online

Um ano na vida de um cluster...

~0.5 overheating (power down most machines in <5 mins, ~1-2 days to recover) ~1 PDU failure (~500-1000 machines suddenly disappear, ~6 hours to come back) ~1 rack-move (plenty of warning, ~500-1000 machines powered down, ~6 hours) ~1 network rewiring (rolling ~5% of machines down over 2-day span) ~20 rack failures (40-80 machines instantly disappear, 1-6 hours to get back) ~5 racks go “wonky” (40-80 machines see 50% packet loss) ~8 network maintenances (4 might cause ~30-minute random connectivity losses) ~12 router reloads (takes out DNS and external vips for a couple minutes) ~3 router failures (have to immediately pull traffic for an hour) ~dozens of minor 30-second blips for dns ~1000 individual machine failures ~thousands of hard drive failures

... slow disks, bad memory, misconfigured machines, flaky machines, etc.

Page 15: Estratégias de escablabilidade para serviços online

Google cluster

• 1000s máquinas, poucas configurações• Sistema de arquivos (GFS) + Cluster scheduling system• Geralmente 100s a 1000s de jobs ativos

o alguns com 1 task, outros com 1000s

Page 16: Estratégias de escablabilidade para serviços online

Redundância e failover

• Deployment: N+2 o com crescimento de N, overhead por redundância diminui

(%) o separação de dados de usuários e/ou aplicação

• Utilize balanceamento de carga como mecanismo de failovero desvia tráfego para outro cluster automaticamente

• Evita downtime de manutenção desviando tráfego

Page 17: Estratégias de escablabilidade para serviços online

Balanceamento de carga multi-layer

Page 18: Estratégias de escablabilidade para serviços online

Map reduce

• MapReduce o Lê um monte de dados o Mapeia: extrai somente a parte dos dados que são

interessante para determinado processo o Shuffle e Sort o Reduzir: agrega, resume, filtra ou transformao Escreve os resultados

Page 19: Estratégias de escablabilidade para serviços online

• Reliability faz parte do processo de design, desenvolvimento e deployment de um serviço.

• Assim como não existe queijo demais em pizza, não existe redundância demais em serviços. Quanto mais 9s, melhor!

E ainda assim, nós somente quase sempre respondemos suas perguntas...

Page 20: Estratégias de escablabilidade para serviços online

Perguntas?

Não se acanhe! Muito provavelmente sua pergunta será respondida :-)

Fernanda G Weiden <[email protected]>