George Nordic |
---|
Итак, коллеги, кто что думает про типовую архитектуру? Какой сервер приложений использовать, на чем писать бизнес-логику?
|
1. Нужно определиться с термином бизнес-логика. Под ним тоже, много чего понимают. Например валидация входных данных, это бизнес логика или UI ?
2. Тут тоже возможен смешанный подход. AFAIK например в OeBS часть бизнес логики на стороне апп-сервера (Forms, OAF), часть критической бизнес логики (расчеты, проведение транзакций) в БД.
В принципе, можно посмотреть достоинства и недостатки всех подходов, для современных a la WEB приложений:
2.1. Все на сервере приложений. Как крайний случай, Java, бизнес объекты в классах, Hibernate в полный рост.
Недостатки:
2.1.1. Данные в БД, а ВСЯ обработка на сервере приложений.
Недостатки:
Значительная потеря производительности на передаче данных и конвертации (ORM) данных.
Увеличение трудозатрат при разработке/сопровождении т.к. конвертацию данных и лишний слой (ORM) в той или иной форме все равно нужно поддерживать.
Достоинства:
Еще один уровень абстракции при грамотной архитектуре, добавляет возможность масштабировать систему методом добавления блейдов с апп-серверами.
Это так же может повысить отказоустойчивость к аппаратным сбоям (упал один апп-сервер)
Насколько это компенсируется недостатки - не понятно.
Спорное:
Приложение может не зависить от вендора СУБД. Можно расматривать как достоинство, можно как недостаток.
2.1.2. Все в БД или максимально близко к БД. Например PL/SQL HTTP картридж, Oracle APEX.
Достоинства:
Можно обеспечить максимально высокую производительность.
Недостатки:
Меньшее кол-во развитых фреймворков, фраймворки сильно привязаны к вендору и зависят от его капризов и не всегда логичных решений (вендора).
2.1.3. Промежуточный подход
Какая-то бизнес-логика (валидация и прочее) на апп-сервере, сложные бизнес процессы (вычисления,проводка транзакций и пр) в слое БД.
Достоинства: компромиссный подход, теоретически можно взять самое лучшее от разных систем
Недостатки:
В штате сотрудников нужно держать специалистов по двум разным веткам продуктов
Сложная архитектура, можно легко попасть в какую нибудь крайность или нагородить велосипедостроение
Масштабирование СУБД обычно более дорогое, чем масштабирование апп-сервера. Поэтому AFAIK, например в OeBS, можно выделить даже 3-и слоя абстракции:
UI-бизнес логика: Forms или OAF
Основная бизнес логика в БД
"Тяжелая" бизнес логика в виде concurent процессов
AFAIK Другие системы также часто содержат что-то подобное concurrent manager'у из OeBS с целью вывести "тяжелые процессы" из СУБД или, как минимум, изолировать их работу от остальной работы СУБД (фоновое выполнение).
IMHO & AFAIK