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.