Кэширование в Symfony: как мы сломали авторизацию и починили ее через Lock

Привет, Хабр! На связи команда «Исходного Кода». Когда бэкенд на Symfony начинает тормозить, одним из первых инструментов оптимизации почти всегда становится кэширование. И это логично: правильно настроенный кэш круто снижает нагрузку на базу данных, режет latency API и убирает лишние ресурсоемкие операции внутри приложения. Но на практике мы редко ограничиваемся простым cache->get() и базовым TTL, особенно когда приложение крутится не на одном сервере, а в Kubernetes-кластере с пачкой внешних API и жесткой конкуренцией запросов. В таких условиях кэш - это уже не только про скорость, но и про синхронизацию состояния между процессами и pod'ами.

https://habr.com/ru/articles/1040522/

#Symfony_Lock #Symfony_Cache #JWT_кэширование #race_condition #distributed_lock #Memcached #401_Unauthorized #doublecheck

Кэширование в Symfony: как мы сломали авторизацию и починили ее через Lock

Привет, Хабр! На связи команда «Исходного Кода». Введение Когда бэкенд на Symfony начинает тормозить, одним из первых инструментов оптимизации почти всегда становится кэширование. И это логично:...

Хабр

Postgres advisory locks на Neon ломаются от TCP-сброса. История четырёх фиксов retry-логики

Расскажу про четыре production-инцидента на одном куске кода за десять дней. В каждом я думал, что разобрался. Закончилось тем, что я выкинул pg_advisory_lock из retry-пути и поставил FOR UPDATE SKIP LOCKED . Day-generation лок остался advisory-ным, но утечка там не критична - почему именно, разберу в конце. Полезно, если у вас Postgres на Neon (или Supabase, или Aiven serverless) и где-то по коду есть session-scoped advisory locks для координации задач между репликами.

https://habr.com/ru/articles/1031236/

#postgresql #advisory_lock #neon #serverless #retry #идемпотентность #distributed_lock

Postgres advisory locks на Neon ломаются от TCP-сброса. История четырёх фиксов retry-логики

Расскажу про четыре production-инцидента на одном куске кода за десять дней. В каждом я думал, что разобрался. Закончилось тем, что я выкинул pg_advisory_lock из retry-пути и поставил FOR UPDATE SKIP...

Хабр