Post Thumbnail

Вторая статья автора в серии "Beyond Happy Path Engineering". Автор разбирает, как наивное обращение со временем в продакшене приводит к багам.

Разработчики часто используют now() и wall-clock там, где нужны монотонные часы для измерения длительности, guarded-транзиции состояния вместо сравнения таймстемпов для истечения срока, и явные часовые пояса/календари вместо голого UTC для пользовательских дат.

Автор на примере резервирования товара при покупке показывает, как дрейф часов между машинами вызывает преждевременное освобождение брони, сравнение таймстемпов не доказывает порядок событий, просроченный cron-воркер при наверстывании создает лавину обновлений, а отсутствие монотонного времени приводит к отрицательным измерениям производительности.

А надо явно разделять время на четыре категории: длительность, момент, порядок, бизнес-календар. Подробности в статье

Непростое время

Похожее