1.5 KiB
1.5 KiB
ADR-002: Асинхронный событийный индексатор поверх GitHub Releases
Дата: 2026-09-06 Статус: Принято
Контекст
Нужен дешёвый и устойчивый к лимитам GitHub способ индексировать моды. Хранить .jar у себя дорого, проксировать трафик — упрёмся в bandwidth и rate limits.
Решение
Бэкенд не хранит артефакты. GitHub Releases CDN — источник правды для файлов. Мы только:
- принимаем webhook
release.published(HMAC + queue + 202), - воркер читает zip central directory через Range Request,
- парсит манифест (
fabric.mod.jsonи т.д.), - пишет метаданные в Postgres,
- отдаёт прямые
download_urlнаobjects.githubusercontent.com.
Подробнее в docs/architecture.md.
Последствия
- Плюс: минимальный storage, нет egress costs, +5k–12.5k RPH через GitHub App.
- Минус: зависимость от доступности GitHub CDN (приемлемо — моды и так там).
- Вынесен malware-скан и SHA-256 сверка как обязательные.
Альтернативы
- Хранить файлы у себя (S3) — отклонено: дорого, дублирование.
- Полный pull
.jarна каждый релиз — отклонено: трафик, медленно.