Usando “Back-of-the-envelope calculations” para projetar sistemas escaláveis

Fernando Paiva

A boa engenharia de software ajuda a suportar mudanças de escala, preservando a eficiência, ao longo do tempo. Entretanto, tudo começa com um bom “primeiro design”. Ou seja, uma organização de componentes capaz de suportar a demanda inicial, sem desperdícios nem descuidos. 

Evidentemente, ninguém deseja projetar um sistema que “não pare de pé”. Por outro lado, recursos computacionais podem custar caro e, se mal aproveitados, acabam consumindo recursos financeiros valiosos.

De forma inadvertida, é relativamente fácil “gastar demais” construindo soluções muito mais sofisticadas do que as exigidas pela demanda inicial. Principalmente, se a escala não for claramente definida durante o projeto da arquitetura. O problema é que, infelizmente, análises exaustivas envolvem muitas variáveis, facilitando enganos.

Ainda mais grave que sistemas desperdiçando recursos são as falhas para suportar a demanda decorrentes de infraestruturas mal dimensionadas. Infelizmente, não é raro ver sistemas que não aguentam o “peso do ambiente produtivo”, causando prejuízos difíceis de recuperar.

Jeff DeanGoogle Senior Fellow, um dos responsáveis pelo motor de busca da empresa,  BigTable, MapReduce e ProtocolBuffers – defende a utilização da técnica simples chamada “Back-of-the-Envelope calculations”. Trata-se de uma combinação de estimativas de uso com números que todo programador deveria saber. Ela permite ter uma boa ideia do comportamento de uma solução antes mesmo de desenvolvê-la.

Um bom ponto de partida, segundo Dean, ao projetar uma API, seria estimar quantas requisições os principais endpoints vão ter que atender (importante, também, para o estabelecimento de Rate Limiters). Daí, considerando horários comuns de consumo, é possível inferir quantas requisições precisam ser suportadas por hora, minuto e segundo balizando o throughput ideal. Adicionadas às margens de segurança, tem-se uma boa ideia de dimensionamento de infraestrutura, frente a arquitetura.

O custo computacional e de tempo para o atendimento de cada requisição também pode ser calculado considerando operações como busca e leitura de dados em dispositivos de armazenamento, transferência de dados na rede, compactação e etc. Daí, projetando o volume de requisições esperadas, pode-se avaliar a eficiência de uma solução proposta.

Em uma palestra em que Dean conta um pouco da trajetória da arquitetura do sistema de buscas da Google, ele demonstra a eficácia da técnica para projetar um sistema de thumbnails (aliás, esse é um desafio clássico em entrevistas de System Design para grandes companhias).

Oren Eini (Ayende), fez uso dessa técnica em um post de uma série discutindo o desafio de reconstruir uma rede social como o twitter.

A ideia de “Back-of-the-envelope calculations”, que em bom português seria algo como “conta de padeiro”, é utilizar cálculos simples para fundamentar a tomada de decisões técnicas. Funciona para a Google, provavelmente funcionará também para sua empresa. É uma solução simples, talvez até em demasia, mas é “mais do que o nada” que parece ser o padrão comum nas organizações.

Em resumo

O problema
Sistemas bem projetados precisam levar em consideração a carga que precisam suportar. O problema é que, infelizmente, análises exaustivas envolvem muitas variáveis, facilitando enganos.
A solução
Adotar “Back-of-the-Envelope calculations”. Trata-se de uma combinação de estimativas de uso com parâmetros conhecidos de performance. Essa técnica a permite ter uma boa ideia do comportamento de uma solução antes mesmo de desenvolvê-la.

Compartilhe este insight:

Comentários

Participe deixando seu comentário sobre este artigo a seguir:

Subscribe
Notify of
guest
0 Comentários
Inline Feedbacks
View all comments

AUTOR

Fernando Paiva
Larga experiência como CTO, especialista em execução tecnológica e estruturação de times ágeis de desenvolvimento de software.

SOLUÇÕES EXIMIACO

Desenvolvimento de Software

Gestão de times para acelerar entregas e atuar na resolução de problemas complexos.

NOVOS HORIZONTES PARA O SEU NEGÓCIO

Nosso time está preparado para superar junto com você grandes desafios tecnológicos.

Entre em contato e vamos juntos utilizar a tecnologia do jeito certo para gerar mais resultados.

Insights EximiaCo

Confira os conteúdos de negócios e tecnologia desenvolvidos pelos nossos consultores:

Engenharia de Software

O seu time de engenharia atua de forma colaborativa para atender os objetivos do negócio?

Arquiteto de Software com experiência executiva em Tecnologia
Infraestrutura e Nuvem

As principais operações da sua empresa já estão rodando na nuvem?

Engenheiro de nuvem, arquiteto de software e especialista em Containers e Devops
Governança e Transformação Digital

A importância da governança de TI na transformação digital

Consultor em gestão de negócios, governança e compras estratégicas

Acesse nossos canais

Simplificamos, potencializamos e aceleramos resultados usando a tecnologia do jeito certo

EximiaCo 2022 – Todos os direitos reservados

0
Queremos saber a sua opinião, deixe seu comentáriox
()
x

Usando “Back-of-the-envelope calculations” para projetar sistemas escaláveis

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Condição especial de pré-venda: R$ 14.000,00 - contratando a mentoria até até 31/01/2023 e R$ 15.000,00 - contratando a mentoria a partir de 01/02/2023, em até 12x com taxas.

Tenho interesse nessa capacitação

Para solicitar mais informações sobre essa capacitação para a sua empresa, preencha o formulário a seguir:

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

O seu insight foi excluído com sucesso!

O seu insight foi excluído e não está mais disponível.

O seu insight foi salvo com sucesso!

Ele está na fila de espera, aguardando ser revisado para ter sua publicação programada.

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse nessa solução

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse neste serviço

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

× Precisa de ajuda?