RU

Как мы заменили 30-минутный polling на IMAP IDLE и построили маленькую распределённую систему

Когда-то наш почтовый загрузчик был обычным методом с @Scheduled . Раз в 30 минут он подключался к ящикам, искал новые вложения и запускал их обрабо…

JavaSpring BootIMAP IDLEdistributed systemsPostgreSQL leasesidempotencybackpressurevirtual threadsconcurrencyat-least-once delivery
Habr
RU

Интеграция платёжных систем в high-risk вертикалях: архитектура, риски и практический опыт

Последние несколько лет я собираю платёжные интеграции для продуктов, которые банки вежливо называют «high‑risk». Под «high‑risk» обычно попада…

платежные системыэквайрингhigh-risk бизнесchargebackантифродstate machine платежейidempotencyretry логикарекуррентные платежи
Habr
RU

Idempotency keys: 5 граблей, которые мы поймали на проде

Пятница, 23:47. PagerDuty: “Платёж AmEx, провайдер вернул 5xx три раза подряд, билеты не зарезервированы.” Открываю логи – действительно три ответа…

идемпотентностьidempotencyплатежираспределённые системы.NETC#APIintent-keyrace conditionграбли
Habr
RU

TeachTrack: NestJS + Telegram-бот напоминаний + РКН — как я в одиночку собрал CRM для частных репетиторов

Месяц назад я выложил на Хабр статью про TripTrack — GPS-трекер для машины на iOS, который собрал будучи бэкендером без опыта в Swift. Статья неожид…

nestjspostgresqltypeormtelegram botoutbox patternidempotencyкейсиндихакерpet-проектбэкенд