almdev Разработка с ИИ
almdev/Архив/Бэкенд
Архив

Бэкенд

Изначально almdev был блогом о бэкенде, фронтенде и инфраструктуре. Эти материалы остаются доступными. Сегодня основной фокус — работа с ИИ; решения и ответственность за результат остаются у человека.

Инженер изучает схему в открытом блокноте среди полок с техническими книгами

Материалы архива

Добавление новых записей без потери существующих данных
Архив 6 мин

Идемпотентные сидеры: демо-данные и контент без потерь

Три роли сидера, выбор ключа идемпотентности, разница между созданием и перезаписью, контролируемое переименов...

27 сен 2026 11 просм.

Различие ленты активности и подробного журнала аудита
Архив 6 мин

Аудит и лента активности одной таблицей

Схема журнала активности с контекстом в JSON, спор между явной записью и подпиской на события Doctrine, пагина...

23 сен 2026 24 просм.

Общая модель связей между модулями
Архив 6 мин

Связи между модулями без десяти таблиц

Как связать задачу со страницей, страницу со страницей и задачу с задачей одной таблицей: схема обобщённой свя...

19 сен 2026 12 просм.

Единый интерфейс для локального и удалённого хранилища
Архив 6 мин

Хранилище файлов за интерфейсом: локальный диск и S3

Как развести локальный диск и объектное хранилище за одним интерфейсом: что должно быть в контракте, чего в нё...

16 сен 2026 24 просм.

Разделение повторов, ошибок и очереди неудачных задач
Архив 6 мин

Когда очередь падает: повторы, dead letter и мониторинг

Классификация отказов в Symfony Messenger, своя стратегия повторов под разные исключения, обработчик проваленн...

3 сен 2026 42 просм.

Согласование запроса, ответа и ошибок API
Архив 7 мин

Swagger в PHP: как я начал документировать API только в 2022 году

Как Swagger превратил документацию из заметок в контракт API: Form Request и Resource в Laravel, DTO в Symfony...

1 сен 2026 50 просм.

Последовательные этапы обработки документа
Архив 6 мин

Конвейер обработки документов на Symfony Messenger

Разбиение долгой обработки файла на цепочку сообщений: почему шаги отдельные, что передавать между ними, как р...

23 июл 2026 47 просм.

Иерархия анкеты: шаги, блоки и поля
Архив 6 мин

Конструктор анкет: анкета, шаг, блок, поле

Как устроен конструктор многошаговых анкет: зачем блок отдельно от шага, как одна структура живёт и в коде, и...

23 июн 2026 19 просм.

Сборка пользовательских полей без изменения схемы базы
Архив 6 мин

Пользовательские поля без миграций

Кастомные поля анкеты, которые заводит заказчик без релиза: две сущности, типизированное хранилище значений, в...

19 мая 2026 35 просм.

Одна кодовая база для собственного сервера и облачного сервиса
Архив 6 мин

Self-hosted и SaaS из одного кода

Режим развёртывания как параметр конфигурации: что реально различается между коробкой и облаком, как скрыть ра...

16 апр 2026 31 просм.

Проверка изоляции данных разных организаций
Архив 5 мин

Мультиарендность без отдельной базы на клиента

Как устроена изоляция арендаторов в общей базе: org-scoped маршруты, выбор места для фильтра, voters вместо пр...

17 мар 2026 25 просм.

Упорядоченные уникальные ключи в структуре данных
Архив 5 мин

UUID v7 как первичный ключ: что меняется в Doctrine и в шаблонах

Переход на UUID v7 в Symfony-проекте: генерация в конструкторе, выбор типа колонки в PostgreSQL, ловушка сравн...

10 фев 2026 25 просм.