Sobes.tech
Senior

Wszyscy wiemy, że tylko ten, kto nic nie robi, nie popełnia błędów. Opowiedz o zapadającym w pamięć błędzie na produkcji: co poszło nie tak, jak to naprawiłeś i jakie wyciągnąłeś wnioski?

sobes.tech AI

Odpowiedź od AI

Один из запоминающихся факапов на продакшене произошёл из-за некорректной обработки ошибки в сервисе на Go. В результате при определённых условиях приложение падало, что приводило к недоступности части функционала.

Что пошло не так:

  • В коде была допущена ошибка: функция возвращала ошибку, но она не проверялась должным образом.
  • Из-за этого ошибка не обрабатывалась, и приложение продолжало работать в некорректном состоянии.

Как исправил:

  • Быстро выявил проблему через логи и мониторинг.
  • Внёс исправления, добавив проверку ошибок и корректную обработку с возвратом ответа клиенту.
  • Развернул патч через CI/CD пайплайн с минимальным временем простоя.

Выводы:

  • Всегда проверять и обрабатывать ошибки, особенно в критичных местах.
  • Внедрять автоматические тесты, покрывающие сценарии с ошибками.
  • Использовать мониторинг и алерты для быстрого обнаружения проблем.

Пример проверки ошибки в Go:

result, err := someFunction()
if err != nil {
    log.Errorf("Ошибка при выполнении someFunction: %v", err)
    return err
}
// продолжение работы с result

Этот опыт подчеркнул важность дисциплины в обработке ошибок и качественного тестирования.