Архитектура распределенной автоматизации ломается не на коде, а на очередях и границах ответственности
Если система должна крутить сотни задач, не пытайтесь собрать всё в один “умный” сервис. Рабочая схема обычно проще: оркестратор решает что запускать, воркеры — как выполнять, а хранилище состояния — что уже сделано. Так легче переживать падения узлов, повторные запуски и частичную недоступность внешних API.
Опорные элементы:
— идемпотентные операции, чтобы повтор не превращался в дубль;
— очередь с явными статусами, а не “магией” в памяти процесса;
— дедупликация задач по ключу, если один и тот же сигнал прилетает несколько раз;
— таймауты и лимиты ретраев, иначе система сама себя кладет в цикл.
Отдельно смотрите на конфигурацию. Все, что можно вынести из кода — расписания, пороги, маршруты, приоритеты — должно жить в декларативном виде. Тогда развертывание сводится к смене правил, а не к пересборке логики. И да, наблюдаемость важнее красивой схемы: метрики очереди, процент успешных ретраев, среднее время выполнения, причины отказов.
Если у системы нет явной модели состояния, она быстро становится набором скриптов с общим доступом к базе. Оптимизируем пороговые значения, но не трогаем фундамент: сначала очередь, идемпотентность и аудит действий, потом все остальное.
Фармилки: операции
@account_farming_ops_arb
Архитектура распределенной автоматизации ломается не на коде, а на очередях и границах ответственности
Этот пост опубликован в Telegram-канале Фармилки: операции. Подписаться можно по ссылке: @account_farming_ops_arb.