Skip to content
Latchkey

O Que É um Fan-Out Build? Dividindo o Trabalho em Muitos Jobs

Um fan-out build divide um bloco de trabalho em muitos jobs paralelos que executam ao mesmo tempo, cortando o tempo de relógio.

Se o seu conjunto de testes leva trinta minutos em uma máquina, dividi-lo entre dez máquinas pode terminar em cerca de três. Isso é fan-out: pegue uma carga de trabalho divisível, espalhe-a por muitos jobs paralelos e execute-os simultaneamente. Um step de fan-in então coleta os resultados. O fan-out é uma das maneiras mais eficazes de tornar rápido um pipeline lento.

Como o fan-out funciona

Você divide o trabalho em shards (uma fatia de testes, um subconjunto de uma matrix) e lança um job por shard. Os jobs executam em paralelo em agentes separados. Como são independentes, o tempo total de relógio se aproxima do shard mais lento individual, não da soma.

Fan-out e depois fan-in

  • Fan-out: divide o trabalho em N jobs paralelos.
  • Cada job processa sua fatia de forma independente.
  • Fan-in: um job coleta e mescla os resultados.

Um exemplo rápido

O sharding de testes faz o fan-out de um conjunto: o shard 1 executa os testes 1-100, o shard 2 executa 101-200, e assim por diante em dez jobs. Um job final baixa o report de cada shard e os mescla em um único resultado.

Quando o fan-out compensa

O fan-out ajuda quando o trabalho é grande e divisível com pouco overhead por job. Ele prejudica quando cada job gasta mais tempo se preparando do que trabalhando, pois o custo fixo se multiplica. Equilibre a quantidade de shards com o startup por job.

Fan-out e capacidade de runner

O fan-out só acelera as coisas se houver agentes suficientes livres para executar os shards de uma vez; caso contrário, os jobs extras apenas entram na fila. Runners gerenciados (Latchkey) fornecem capacidade paralela sob demanda para que um fan-out realmente execute em paralelo em vez de esperar na fila.

Principais conclusões

  • Um fan-out build divide trabalho divisível entre muitos jobs paralelos.
  • Um step de fan-in então mescla os resultados de volta.
  • Ele só acelera as coisas se houver agentes suficientes executando os shards de uma vez.

Guias relacionados