Conceitos
Hardware comum e custo por consulta
Intuição
Pense em uma empresa de entregas que precisa decidir entre comprar poucos caminhões gigantes e caríssimos, que quase nunca quebram, ou muitas vans comuns e baratas, que de vez em quando quebram. O que importa pra ela não é quanto custa cada veículo nem qual é o mais veloz, e sim quanto custa entregar cada pacote. Se há pacotes de sobra para todas as vans e a empresa sabe lidar com uma van parada (mandando o pacote por outra), as vans comuns saem bem mais baratas por pacote entregue.
Como funciona
Barroso, Dean e Hölzle apontam que uma consulta média ao Google lê centenas de megabytes e consome dezenas de bilhões de ciclos de CPU, e que o pico chega a milhares de consultas por segundo, o que exige um cluster de mais de 15.000 PCs de classe comum. O critério final de escolha de hardware é o custo por consulta: despesas de capital (com depreciação) mais custos operacionais, divididos pelo desempenho. A depreciação pesa muito porque um servidor dificilmente dura mais que dois ou três anos. Como a carga é facilmente paralelizável (consultas diferentes rodam em processadores diferentes), o desempenho de pico de cada processador importa menos que o seu preço/desempenho, então se compra a geração de CPU com melhor desempenho por unidade de preço. No exemplo do artigo, um rack de PCs de cerca de US$ 278.000 (176 CPUs Xeon de 2 GHz, 176 GB de RAM, 7 TB de disco) é comparado a um servidor multiprocessado de cerca de US$ 758.000 (8 CPUs, 64 GB de RAM, 8 TB de disco): o multiprocessador custa cerca de três vezes mais, com 22 vezes menos CPUs e três vezes menos RAM, diferença que vem em grande parte da interconexão e da confiabilidade de máquinas de ponta. Para compensar a falta de hardware tolerante a falhas (fontes redundantes, RAID, componentes de alta qualidade), a confiabilidade é entregue em software: o serviço já é replicado para obter vazão, então a tolerância a falhas vem de graça, e uma máquina que cai só reduz a capacidade na proporção da fatia que ela representava. Há também um teto físico: um servidor de faixa média consome cerca de 120 W de corrente alternada, o que dá cerca de 10 kW por rack e ~400 W/pé², contra 70 a 150 W/pé² de um data center comercial típico. Energia e refrigeração custam cerca de US$ 1.500 por mês por rack, contra US$ 7.700 de depreciação, então o que conta é watts por unidade de desempenho, sem pagar muito mais por servidores de baixo consumo.
Na prática
Esse raciocínio é a base de engenharia de custos: compare alternativas por custo por unidade de trabalho (por consulta, por requisição), somando capital depreciado e operação, e não pelo preço ou pelo pico de desempenho de cada máquina. Ele funciona quando a carga tem paralelismo no nível da requisição e servidores sem estado privado, como o artigo observa para servidores web de alto volume, e quando a aplicação é homogênea o bastante para que administrar milhares de máquinas idênticas seja viável. Os autores também notam que computação mais barata permite gastar mais por consulta, com ranqueamento mais caro ou um índice maior. Os limites são reais, como a capacidade de refrigeração dos data centers comerciais.
Use em um desenho
Pratique na escola de System Design os casos que dependem deste conceito.