The Daily WTF на русском
Подписаться
CodeSOD: Найдите бар для этого
Текст критикует плохо спроектированное приложение "data pump", используемое для синхронизации данных между сущностями Foo и Bar. Приложение включает в себя ночную пакетную задачу, написанную на Quarkus и взаимодействующую с устаревшей системой. Основная функция пакетной задачи - идентифицировать и обновлять сущности Bar на основе сущностей Foo. Код извлекает все сущности Foo вместо фильтрации для отсутствующих сущностей Bar, что неэффективно. Основная проблема заключается в процессе обновления в рамках транзакции, которая выполняет несколько вызовов веб-сервисов. Этот дизайн приводит к проблемам с производительностью, включая таймауты, конфликты и исчерпание соединений с базой данных. Использование долгоживущих транзакций, количество вызовов веб-сервисов и отсутствие надлежащей конфигурации пула соединений - все это способствует возникновению этих проблем. Автор критикует необходимость ручного управления транзакциями и нестабильность веб-сервиса. Фундаментальной проблемой является сам подход пакетной задачи, который приводит к созданию реляционно несостоятельных данных. Автор указывает, что редизайн полностью устранит пакетную задачу, улучшив ситуацию. Текст завершается рекламой платформы управления пакетами.