O Que É um Cold Start em CI? A Espera Antes do Seu Primeiro Step
Um cold start é o tempo gasto provisionando um runner novinho - bootando, registrando, preparando - antes que seu job possa rodar um único step.
Runners efêmeros dão a cada job uma máquina limpa, mas uma máquina limpa precisa primeiro ser criada. Esse tempo de setup é o cold start, e é tempo morto que você paga em latência de feedback em todo job que bate em um runner novo.
O que acontece durante um cold start
Lançar a instância, bootar o OS, iniciar e registrar o agente runner no GitHub, e então começar o job. Em um caminho totalmente frio, isso pode ir de dezenas de segundos a minutos dependendo do tamanho da imagem e da infraestrutura.
Cold start vs warm start
Um warm start entrega o job a um runner que já está bootado e registrado, então o primeiro step começa em cerca de um segundo. A diferença entre frio e quente é inteiramente o trabalho de provisionamento que você fez ou não fez com antecedência.
O que piora os cold starts
- Imagens de runner grandes que demoram mais para puxar e bootar.
- Escala a partir de zero, onde nenhum runner existe até um job chegar.
- Instalações pesadas de dependências sem cache do qual restaurar.
Como removê-lo
Mantenha um warm pool de runners pré-inicializados para que os jobs peguem uma máquina pronta, e use cache para que mesmo um runner novo restaure dependências rápido em vez de reconstruí-las.
Sem cold starts na Latchkey
A Latchkey serve jobs a partir de warm pools, então você tem o benefício do estado limpo dos runners efêmeros sem a espera do cold start - os jobs tipicamente começam em cerca de um segundo.
Principais conclusões
- Um cold start é o atraso de provisionamento antes de um runner novo poder rodar um job.
- Warm starts começam em cerca de um segundo; cold starts levam muito mais.
- Imagens grandes, escala a partir de zero e deps sem cache pioram isso.
- Warm pools mais cache eliminam o imposto de cold start.