A Lei de Moore e a Arte da Manutenção de Plataforma
Tim Walls é CTO e Group Architect da EveryMatrix desde 2015, ajudando a empresa a entregar um portfólio de produtos modular e orientado por API para cassino, apostas esportivas, pagamentos e affiliate management de afiliados/agentes. Tendo atuado no setor de tecnologia profunda desde os anos 90, ele escreve sobre os desenvolvimentos de sua área e seu trabalho na EveryMatrix.
Na minha mesa, tenho uma lembrança que remonta ao início da minha carreira profissional – uma placa de processador MIPS R5000 de uma workstation da Silicon Graphics de meados dos anos 90. Além de ser uma bela peça de engenharia por si só (e um prático peso de papel), ela é um lembrete útil de quanto avançamos em apenas algumas décadas.
A workstation da qual esse processador foi retirado estava na minha mesa há cerca de 20 anos, quando eu estava escrevendo a justificativa para os servidores Sun Microsystems V880 que seriam necessários se quiséssemos manter nosso site de apostas em funcionamento por muito mais tempo — servidores que custavam dezenas de milhares de dólares cada. Mais do que os detalhes da negociação em si, lembro do meu nervosismo ao me aproximar do escritório do diretor-geral para pedir, de longe, o maior cheque que eu já havia cogitado — mas tenho quase certeza de que foi a frase “mas lembre-se do Grand National do ano passado…” que selou o acordo.
Claro que, desde então, nomes como Sun Microsystems e Silicon Graphics se tornaram lembranças distantes, engolidas pela comoditização. Enquanto escrevo isto, também sobre minha mesa está meu celular. Ele é apenas um pouco menor do que o processador da minha antiga workstation e, com seu processador de 8 núcleos a 2,9 GHz, é aproximadamente duas vezes mais potente do que apenas um daqueles antigos servidores de banco de dados.
De fato, vivemos em uma era de abundância quando se trata de poder computacional — se o Bitcoin prova alguma coisa, é que temos mais ciclos de CPU do que sabemos usar de forma útil. E, ainda assim, em algum lugar hoje, outra pessoa está tendo sua experiência formativa ao pedir recursos para alimentar o apetite voraz de uma plataforma por servidores de banco de dados feitos de puro Unobtainium, e tentando calcular qual será o impacto na sua taxa de licença se tiver sockets demais ou Processor Value Units de menos…
Então, o que explica isso? Meu celular tem poder de processamento suficiente para processar uma década de apostas do Grand National em uma fração de segundo, mas a demanda por grandes máquinas em nossos datacentres não desapareceu. A resposta é que a Lei de Moore — a regra prática formulada por Gordon Moore, da Intel, nos anos 1960, de que o número de transistores em nossos chips de computador dobraria a cada dois anos — praticamente cumpriu sua parte do acordo, mas a forma como isso aconteceu mudou.
Antes, podíamos esperar com confiança que nossos processadores dobrassem em velocidade de processamento de forma direta a cada dois anos — mas por volta de 2005 isso começou a mudar. A taxa de melhoria de desempenho por thread começou a desacelerar ou, nos últimos anos — à medida que passamos a entender que o consumo de energia também é importante — até mesmo a se inverter; em vez disso, temos usado esses transistores extras não para fazer as coisas mais rápido, mas para fazer mais delas em paralelo.
Isso significa que as arquiteturas que projetamos hoje precisam ser muito diferentes daquelas que projetávamos há 20 anos. Não importa quantos Processor Value Units você licenciou se sua plataforma estiver canalizando cada transação por meio de um único bloqueio de banco de dados; por outro lado, agora temos threads suficientes para fazer coisas que antes pareceriam inimaginavelmente ineficientes — como processar cada transação por meia dúzia de serviços diferentes, cada um rodando em seu próprio processador virtual, cada um separado por uma fila ou chamada de rede.
Essas mudanças às quais precisamos nos adaptar não são uma moda passageira nem apenas a forma mais recente de fazer as coisas; elas são impulsionadas por fundamentos do que podemos alcançar com aqueles transistores que Gordon Moore tão generosamente nos presenteou. A boa notícia é que, ao adotar isso em nossas arquiteturas — paralelismo e execução assíncrona, pagando o custo adicional de um pouco mais de latência em cada transação, ou transformando regras de negócio para funcionar em um modelo de consistência eventual — não apenas colhemos os benefícios em escalabilidade, ou deixamos de continuar financiando modelos legados de licenciamento de software: também podemos transformar a capacidade de manutenção de nossas plataformas por meio de componentes mais simples, mais fáceis de entender, mais fáceis de desenvolver e naturalmente redundantes.
Naturalmente, toda mudança encontra resistência — desde o desejo infalível dos desenvolvedores de otimizar sem necessidade ou de valorizar o complexo mais do que o simples, até SLAs que priorizam mais o tempo de resposta do que a vazão e, ao fazer isso, sacrificam ambos quando o pico chega — mas é nosso trabalho, como líderes técnicos, estar à altura desse desafio.
Hoje, conseguimos processar mais apostas em um segundo em uma noite média de sexta-feira do que aquele antigo sistema processava em todo o Grand National há 20 anos, não construindo algo maior e mais rápido — mas construindo algo menor e mais simples, e implantando muito disso. Adote o assíncrono e abandone o banco de dados monolítico — você vai dormir melhor sabendo que nunca mais precisará ler outro Virtualisation Capacity (Sub-Capacity) License Agreement.
Sinto falta das workstations, no entanto. A Silicon Graphics fazia workstations *excelentes*.
A versão original desta entrevista foi publicada na edição de inverno de 2021 da SiGMA Magazine sob o título Toda mudança encontra resistência.