«Мой код не работает!» или как я превратила баг в фичу (почти случайно)

Кейс с «» о сбое в продуктовой аналитике, вызванном несогласованностью часовых поясов: крон в 23:30 по сравнивал локальный datetime.now с полем в БД в UTC, из-за чего порог 90 дней смещался, и задача очистки вычищала почти весь актуальный слой событий.

После восстановления из бэкапа команда превратила инцидент в улучшение: вместо физического удаления внедрили перенос событий старше 90 дней в архивный шард и мягкое удаление; при этом сохранены ретеншен и еженедельная агрегация. Это позволило отвечать на ретроспективные запросы и снизить риск необратимых потерь.

  • Ключевые параметры: ретеншен 90 дней; источник — события мобильного приложения; агрегация еженедельно; запуск по крону.
  • Причина: сравнение локального времени и UTC при вычислении cutoff.
  • Решения: архивирование перед purge, флаги soft-delete, восстановление из бэкапа.
  • Выводы для data/MarTech: принудительный UTC сквозь пайплайн; dry-run и защитные фильтры для задач очистки; алерты на аномально пустые отчёты; политика «архив вместо удаления» для запросов по длинным периодам.

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

Ключевые инсайты из новости (по версии ChatGPT)
  • UTC-first в событиях и расписаниях: Все этапы пайплайна (ингест, хранение, агрегации, сравнения дат) должны работать в UTC с tz-aware типами. Крон-задачи и вычисление cutoff выполняем в UTC, конвертации в локаль делаем только на уровне отображения.
    [процесс]
Для получения полного доступа оформите подписку PubMag PRO.
Зарегистрированные пользователи видят только два тезиса.
Зарегистрироваться
Инсайты автоматически генерируются с помощью искусственного интеллекта на основе текста статьи.
← Назад в лентуЧитать оригинал →
✈️ Подписывайтесь на мой Telegram-канал — там еще больше интересного про AdTech, MarTech, AI и многое другое!