Что каждый разработчик должен знать об аннотации @Transactional

Оглавление Введение В современных приложениях важно обеспечивать атомарность операций с данными. Если выполнение бизнес-логики включает несколько обращений к базе данных, они должны выполняться все как единое целое или не выполняться вовсе. Например, при переводе денег со счета покупателя на счет продавца нужно либо уменьшить баланс покупателя и увеличить баланс продавца, либо не делать ничего, если … —Читать далее—

Loading

20 типовых ошибок Java-разработчиков в пул реквестах

Оглавление Введение Code review (ревью кода) – ключевой этап в корпоративной разработке, позволяющий повысить качество программного обеспечения. Опытные инженеры при проверке pull request’ов обращают внимание на типичные ошибки, которые повторяются из проекта в проект. Эти системные проблемы затрагивают разные аспекты: от архитектуры и читабельности кода до производительности, устойчивости и безопасности приложения. Игнорирование этих аспектов приводит … —Читать далее—

Loading

Dead Letter Queue / Dead Letter Topic в распределенных системах

Оглавление Введение Надежная обработка событий – ключевой вызов в архитектуре распределенных систем. В реальных условиях часть сообщений неминуемо сталкивается с проблемами: потребитель недоступен, данные сообщения повреждены или не соответствуют схеме, возникают сетевые сбои и т.п. Без специальных механизмов такие ситуации могут привести к блокировке очередей, потере событий или дублированию обработки. Необходимо спроектировать систему так, чтобы … —Читать далее—

Loading

Soft Delete в Spring Boot JPA: лучшие практики и практическая реализация

Оглавление Введение Почти в каждом приложении наступает момент, когда возникает необходимость удалять данные. Однако прямое физическое удаление записей (DELETE FROM…) далеко не всегда лучший подход. Часто требуется сохранить возможность восстановления данных, проводить аудит изменений или выполнять нормативные требования законодательства, согласно которым удаление записей может быть нежелательным или вовсе запрещенным. В таких случаях на помощь приходит … —Читать далее—

Loading

Паттерн API Gateway в распределенных системах

Оглавление Введение Переход от монолитной архитектуры к микросервисной приносит новые задачи: приложения разделяются на множество мелких сервисов, каждый со своим API. Клиентам зачастую приходится вызывать сразу несколько сервисов, чтобы собрать данные для одной операции. Например, страница продукта в интернет-магазине может требовать данные из сервисов информации о товаре, цен, отзывов, наличия на складе и т.д. Без … —Читать далее—

Loading