Pular para o conteúdo
devandroad
Todos os posts

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.