Olá, mundo
Por que criei o devandroad e o que você vai encontrar por aqui.
1 min de leituraRead this post in English
Depois de sete anos construindo integrações, automações e chatbots, decidi juntar em um só lugar o que faço, o que estou construindo e o que gosto de fazer fora do código.
O nome devandroad vem daí: dev and road. Metade do tempo estou escrevendo código, a outra metade estou na estrada de moto.
O que vai ter aqui
- Integrações e backend: Go, PHP, filas, retries, SFTP, EDI e tudo que mantém sistemas conversando sem cair.
- Produtos: o desenvolvimento do Pétrus, plataforma de agendamento para estética automotiva.
- Hobbies: impressão 3D, automação residencial e algumas viagens.
Um exemplo para começar
Um padrão que uso em quase toda integração é o retry com backoff exponencial:
func withRetry(ctx context.Context, attempts int, fn func() error) error {
delay := 500 * time.Millisecond
for i := 0; i < attempts; i++ {
if err := fn(); err == nil {
return nil
}
select {
case <-time.After(delay):
delay *= 2
case <-ctx.Done():
return ctx.Err()
}
}
return fmt.Errorf("falhou após %d tentativas", attempts)
}
Foi um retry assim que zerou as falhas mensais recorrentes de uma integração que eu mantinha. Pequeno, mas resolve muita coisa.
Até o próximo post.