Вот интересно , а проводились ли сравнительные испытания производительности информационной системы - до и после переноса бизнес логики с уровня СУБД на уровень backend ?
Теоретически наверное можно сделать синтетические тесты . Очень было бы интересно, сравнить производительность. Разница однозначно должна быть . Но пока не встречал подобных работ. Наверное потому, что тема чисто академическая, а с НИОКР в области СУБД и информационных технологий вообще дело не очень.
Вчера вот , уже опять про больное, встретил лекцию доцента на тему "Производительность СУБД" - как обычно - лекция есть , что такое "производительность" определения нет . В лекции рассказывается о планах запросов , видах соединения и способах доступа. При чем тут производительность СУБД, непонятно.
Но ещё более интересен другой вопрос - а проводились ли расчёты стоимости владения и сопровождения информационных систем с разными уровнями хранения бизнес логики.
Например, в самом общем, простейшем случае:
Бизнес логика в СУБД: 1 сервер СУБД + 1 сервер middle level
Бизнес логика в backend: 1 сервер СУБД + 1 application сервер.
Меня терзают смутные сомнения:
вариант 2-не масштабируем. Хотя тут могут быть варианты решения.
вариант 2- будет существенно дороже - вот это самое интересное .
в случае существенного роста объёмов и нагрузки у варианта 2 будут проблемы (это утверждение кстати, реально подтверждается практикой - наращиваются ресурсы серверов приложений , сервер СУБД не перегружен)- ситуация информационная система тормозит , но нагрузка и производительность СУБД средние - стандартная .
Система называется масштабируемой, если она способна увеличивать производительность пропорционально дополнительным ресурсам. Масштабируемость можно оценить через отношение прироста производительности системы к приросту используемых ресурсов. Чем ближе это отношение к единице, тем лучше. Также под масштабируемостью понимается возможность наращивания дополнительных ресурсов без структурных изменений центрального узла системы.
Это в теории , а в реальной жизни - проектирование информационных систем , начинается не с планирования ресурсов и исполнителей под конкретно поставленную задачу и бюджет , а наоборот- набор, состав и уровень знаний и умений конкретной команды исполнителей - определяют способ решения задачи и архитектуру решения. Реальный случай из практики - разработчики использовали фреймворк , который использует эксклюзивные блокировки, не потому , что была какая то причина или эффективность решения , просто они привыкли работать с этим фреймворком. Результат закономерен и ожидаем - после передачи в промышленную эксплуатацию каждую неделю - аварийные ситуации. После рефакторинга - все работает штатно . Вопрос - что мешало сразу сделать по человечески ? Ничего , кроме привычки и косности мышления - сработало раньше , наверное заработает и сейчас .
Или другими словами - решение о выборе архитектурного решения "бизнес логика в приложении" принимается не потому, что это решение эффективнее и ниже по стоимости сопровождения , а просто - нет уже исполнителей способных реализовать бизнес-логику на уровне СУБД. Все используют фреймворки и ORM. И никто в принципе не будет считать и анализировать - решения основываются исключительно на субъективном мнении конкретных архитекторов и руководителей команды разработки продукта.
А если нет конкретных результатов исследований о более низкой стоимости сопровождения решения с размещением бизнес логики на уровне приложения - какой смысл в разговорах не подкрепленных конкретными цифрами о более удобном и гибком подходе ? Это же просто слова и личное мнение за которым не стоят данные объективных и независимых тестов.
В общем , как говорится - тема ждет своего исследователя . Жаль доценты кафедр прикладной математики или информатики занимаются не научной работой, а озвучиванием документации.
И очень жаль, что когда нам читали теорию систем , я был сильно увлечен C++ и не уделял должного внимания фундаментальным дисциплинам . Теперь приходится вспоминать и наверстывать.
P.S.Вряд ли конечно ситуция изменится , нет причин меняться - бюджеты никто не считает , современному поколению разрабов и манагеров ничего не объяснить- они в тренде "фигак, фигак и в продакшн" , но с научной точки зрения наверное тема интересная , может быть кто и возьмётся . Было бы интересно ознакомится с результатами.
Комментарии (32)
turbo_nyasha
10.08.2024 08:35А, собственно, что предлагается? Делать из сервиса прокси-репозиторий, а логику хранить на PL/SQL? И где тут масштабирование?
ky0
10.08.2024 08:35+4Корень диспута "где хранить" далеко не в первую очередь про производительность - а для начала про простоту поддержки и гибкость (ну и про то, хотите ли вы на каждый чих заходить к DBD).
rinace Автор
10.08.2024 08:35для начала про простоту поддержки
Лично мне интересно - почему , я пока не встречал, не озвучивается вопрос - а сколько это стоит ? В цифрах.
Fadmin
10.08.2024 08:35Цифры на более менее серьезный проект, в долгосрочной перспективе вас расстроят, так как монолит написанный на бд приведет к тому что основной бюджет будет тратиться на управление сложностью, забрасывание ресурсов на устранение последствий факапов и найм новых людей, ведь старые не успевают за бизнес требованиями. А так конечно можно попробовать попадать со своего велосипеда, заодно подсчитаете, сколько это будет стоить.
rinace Автор
10.08.2024 08:35Цифры на более менее серьезный проект, в долгосрочной перспективе вас расстроят
А эти цифры есть ? Кто то проводил исследование ?
А расстроится я не боюсь. с чего мне расстраиваться ? Я же не Product Owner , я бюджеты не считаю. С точки зрения спокойной жизни DBA - чем меньше нагрузка на СУБД - тем лучше.
Я всегда повторяю коллегам - в области чистого DBA у нас работы навалом и чисто академической и практической . То, что они всё считают приложении - нам лучше . При очередной аварии - "с СУБД аномалий нет " и занимаем места в партере , чем можем поможем , но почему у вас форма открывается 5 минут и отчет считается час- этот не к нам вопросы , мы вам не поможем , при всем желании.
ky0
10.08.2024 08:35+2Потому что чтобы объективно ответить на ваш вопрос - нужно разработать один и тот же проект в двух парадигмах, а потом сравнить затраты. С академической точки зрения, конечно, интересно - но мы же про реальные задачи бизнеса, там никто дважды платить не будет, максимум - расскажут "было плохо, мы переделали - и стало хорошо".
Soupbreak
Это даже не смешно
upd
Стейтлесс сервис можно масштабировать условно до бесконечности
Реляционную бд(а я не очень представляю как поверх носкл писать логику даже при наличии желания) нет