Teoria das Filas

A teoria das filas é o estudo de linhas ou filas de espera. Nós, certamente, temos filas no desenvolvimento de software – temos listas de requisições de clienres e listas de defeitos que pretendemos corrigir. A teoria das filas tem muito a oferecer para ajudar a gerenciar essas filas.

Lei de Little

A Lei de Little diz que, em um sistema estável, a quantidade média de tempo que algo leva para atravessar um processo é igual ao número de coisas no processo dividido por sua taxa de conclusão média (figura 5.2).

Tempo do ciclo = Coisas no processo / Taxa média de Conclusão

Uma forma de reduzir o tempo de ciclo é fazer as coisas mais depresa – aumentar a taxa de conclusão média. Isso geralmente significa gastar mais dinheiro. Se nao temos dinheiro para gastar, a outra maneira para reduzir o tempo do ciclo é reduzir o número de coisas no processo. Isso exige muito vigor intelectual, mas geralmente não requer muito dinheiro.

Variação e utilização

A Lei de Little se aplica a sistemas estáveis, mas há um punhado de coisas que tornam o sistemas instáveis. Primeiro, há variação – coisas acontecem. A variação é frequentimente tratada pela redução do tamanho de lotes se movendo ao logo do sistema. Por exemplo, muitas lojas têm filas de pagamento para “10 itens ou menos” para reduzir a variação no tempo de saída para aquela fila. Digamos que você tenha um código de integrar em um sistema. Se é trabalho valoroso de seis semanas, pode ter certeza de que haverá um monte de problemas. Porém se é apenas um trabalho de 60 minutos, a quantidade de coisas que podem dar erradas é limitada. Se você tem projetos grandes, a variação do planejamento será enorme. Projetos pequenos apresentarão menos variação de planejamento.

Alta utilização é outra coisa que torna os sistemas instáveis. Isso é óbvio para qualquer um que tenha ficado preso em um engarrafamento. Quando a utilização de uma estrada chega a mais de 80%, a velocidade do tráfego começa a diminuir. Adicione alguns poucos carros e muito em breve você está se arrastando. Quando gerentes de operação veem seus servidores rodando a 80% da capacidade em momento de pico, eles sabem que o tempo de resposta esta começando a sofrer e eles rapidamente arrumam mais servidores.

Como a Google foir organizado por um bando de cientistas estudando mineração de dados, não é surpresa que sua estrutura de servidores reflita um profundo entendimento de teoria de filas. Primeiro de tudo, eles armazenam dados em lotes pequenos. Em vez de grandes servidores com quantidades massivas de dados em cada um, a Google tem milhares e milhares de pequenos servidores baratos espalhados pelo mundo, conectados por meio de uma rede muito sofisticada. Os servidores não esperam ser 100% confiáveis; em vez disso, falhas são esperadas e detectadas imediatamente. Não é um grande problema quando servidores falham, pois os dados foram divididos em pequenos pedaços e armazenados em vários lugares. Assim, quando servidores falham e são automaticamente removidos da rede, os dados foram divididos em pequenos pedaços e armazenados em vários lugares. Assim, quando servidores falham e são automáticamente removidos da rede, os dados que eles mantinham são encontrados em algum outro lugar e replicados novamente em outro servidor. Os usários nunca sabem que algo aconteceu, eles ainda têm respostas quase instantâneas.

Se você já se perguntou po que a Google escolhe dedicar 20% do tempo de seus cientistas e engenheiros para trabalhar em seus próprios projetos, dê uma olhada no gráfico no final do artigo. Essa figura mostra que o tempo de ciclo começa a aumentar apenas acima de 80% de utilização e que esse efeito é amplificado por grandes lotes (alta variação). Imagine um grupo de cientistas que estudaram a teoria das filas a vida toda. Suponha que eles se encontrem dirigindo uma empresa que deve colocar como mais alta prioridade trazer novos produtos para o mercado. Para eles, criar 20% de folga na organização de desenvolvimento “software” seria a decisão mais lógica do mundo. É curioso que os observadores aplaudam a Google por servidores redundantes, mas não entendam o conceito de folga na organização de desenvolvimento.

A maioria dos gerentes de operação seria demitida por tentar obter a utilização máxima de cada servidor, pois é conhecimento comum que a alta utilização retarda servidores até se arrastarem. Por que, então quando gerentes de desenvolvimento veem um relatório dizendo que 90% de suas horas disponíveis foram usadas no último mês, sua reação é, “Veja ! Temos tempo para outro projeto!”? Claramente, esses gerentes não estão aplicando a teoria das filas no iminente engarrafamento em seus departamentos.

Você não pode escapar das leis da matemática, nem mesmo em organização de desenvolvimento. Se você tem como foco aumentar a utilização, as coisas vão ficar mais lentas. Se você acha que grandes lotes de trabalho são o caminho para a alta utilização, vai retardar as coias ainda mais e reduzir a utilização no processo. Se, contudo, você atribuir trabalho em pequenas cargas e se concetrar no fluxo, pode relamente atingir uma utilização muito boa –  mas utilização numa deveria ser seu objetivo primordial.

untitled

Deixe um comentário