Здравствуйте, Аноним, Вы писали:
>Все это работает как одно приложение и задеплоино на app-сервер. Стоит задача сделать так чтобы рост данных не провоцировал новые эксепшины и перформанс был небольшой. Все приложение никто переписывать не будет (бюджет), хотя логично было бы вынести batch-задачи в отдельное приложение. Для кэша используем хибернейт. Как лучше реинженирить это приложение чтобы избежать описанных проблем? Спасибо.
Для начала нужно провести анализ. Очевидно для этого тоже нужно выделить какой-никакой бюджет. Во многих случаях можно обойтись оптимизацией БД с минимальными исправлениями кода приложения. "Во многих" — это если при начальной разработке на архитектуру базы наплевали, или ее лепил тот же Java кодер, что и приложение. В общем, для начала пригласите специалиста по Ораклу для анализа производительности БД.
Если же у вас в базе все грамотно, нужно рассматривать другие варианты, которые обойдутся уже дороже. Например апгрейд железа, которое является узким местом. Часто это дисковая подсистема.
У Оракла есть много фишек для масштабирования, в том числе и не требующих переписывания кода приложения. Правда, большинство из них доступны только в EE, так что может потребоваться апгрейд лицензии. И в большинстве случаев также затраты на железо. Например перенос read-only нагрузки на стендбай-базу.
Но для начала я бы аккуратно выяснил насколько текущие проблемы на самом деле остры и мешают бизнесу. Если мешают, но не очень, и руководство вообще не готово выделять бюджет на оптимизацию, я бы даже не чесался.