Вот интересно , а проводились ли сравнительные испытания производительности информационной системы - до и после переноса бизнес логики с уровня СУБД на уровень backend ?

Теоретически наверное можно сделать синтетические тесты . Очень было бы интересно, сравнить производительность. Разница однозначно должна быть . Но пока не встречал подобных работ. Наверное потому, что тема чисто академическая, а с НИОКР в области СУБД и информационных технологий вообще дело не очень.

Вчера вот , уже опять про больное, встретил лекцию доцента на тему "Производительность СУБД" - как обычно - лекция есть , что такое "производительность" определения нет . В лекции рассказывается о планах запросов , видах соединения и способах доступа. При чем тут производительность СУБД, непонятно.

Но ещё более интересен другой вопрос - а проводились ли расчёты стоимости владения и сопровождения информационных систем с разными уровнями хранения бизнес логики.

Например, в самом общем, простейшем случае:

  1. Бизнес логика в СУБД: 1 сервер СУБД + 1 сервер middle level

  2. Бизнес логика в backend: 1 сервер СУБД + 1 application сервер.

Меня терзают смутные сомнения:

  1. вариант 2-не масштабируем. Хотя тут могут быть варианты решения.

  2. вариант 2- будет существенно дороже - вот это самое интересное .

  3. в случае существенного роста объёмов и нагрузки у варианта 2 будут проблемы (это утверждение кстати, реально подтверждается практикой - наращиваются ресурсы серверов приложений , сервер СУБД не перегружен)- ситуация информационная система тормозит , но нагрузка и производительность СУБД средние - стандартная .

Система называется масштабируемой, если она способна увеличивать производительность пропорционально дополнительным ресурсам. Масштабируемость можно оценить через отношение прироста производительности системы к приросту используемых ресурсов. Чем ближе это отношение к единице, тем лучше. Также под масштабируемостью понимается возможность наращивания дополнительных ресурсов без структурных изменений центрального узла системы.

Это в теории , а в реальной жизни - проектирование информационных систем , начинается не с планирования ресурсов и исполнителей под конкретно поставленную задачу и бюджет , а наоборот- набор, состав и уровень знаний и умений конкретной команды исполнителей - определяют способ решения задачи и архитектуру решения. Реальный случай из практики - разработчики использовали фреймворк , который использует эксклюзивные блокировки, не потому , что была какая то причина или эффективность решения , просто они привыкли работать с этим фреймворком. Результат закономерен и ожидаем - после передачи в промышленную эксплуатацию каждую неделю - аварийные ситуации. После рефакторинга - все работает штатно . Вопрос - что мешало сразу сделать по человечески ? Ничего , кроме привычки и косности мышления - сработало раньше , наверное заработает и сейчас .

Или другими словами - решение о выборе архитектурного решения "бизнес логика в приложении" принимается не потому, что это решение эффективнее и ниже по стоимости сопровождения , а просто - нет уже исполнителей способных реализовать бизнес-логику на уровне СУБД. Все используют фреймворки и ORM. И никто в принципе не будет считать и анализировать - решения основываются исключительно на субъективном мнении конкретных архитекторов и руководителей команды разработки продукта.

А если нет конкретных результатов исследований о более низкой стоимости сопровождения решения с размещением бизнес логики на уровне приложения - какой смысл в разговорах не подкрепленных конкретными цифрами о более удобном и гибком подходе ? Это же просто слова и личное мнение за которым не стоят данные объективных и независимых тестов.

В общем , как говорится - тема ждет своего исследователя . Жаль доценты кафедр прикладной математики или информатики занимаются не научной работой, а озвучиванием документации.

И очень жаль, что когда нам читали теорию систем , я был сильно увлечен C++ и не уделял должного внимания фундаментальным дисциплинам . Теперь приходится вспоминать и наверстывать.

P.S.Вряд ли конечно ситуция изменится , нет причин меняться - бюджеты никто не считает , современному поколению разрабов и манагеров ничего не объяснить- они в тренде "фигак, фигак и в продакшн" , но с научной точки зрения наверное тема интересная , может быть кто и возьмётся . Было бы интересно ознакомится с результатами.

Комментарии (32)


  1. Soupbreak
    10.08.2024 08:35
    +5

    Это даже не смешно

    upd

    Стейтлесс сервис можно масштабировать условно до бесконечности

    Реляционную бд(а я не очень представляю как поверх носкл писать логику даже при наличии желания) нет


  1. turbo_nyasha
    10.08.2024 08:35

    А, собственно, что предлагается? Делать из сервиса прокси-репозиторий, а логику хранить на PL/SQL? И где тут масштабирование?


  1. ky0
    10.08.2024 08:35
    +4

    Корень диспута "где хранить" далеко не в первую очередь про производительность - а для начала про простоту поддержки и гибкость (ну и про то, хотите ли вы на каждый чих заходить к DBD).


    1. rinace Автор
      10.08.2024 08:35

      для начала про простоту поддержки

      Лично мне интересно - почему , я пока не встречал, не озвучивается вопрос - а сколько это стоит ? В цифрах.


      1. Fadmin
        10.08.2024 08:35

        Цифры на более менее серьезный проект, в долгосрочной перспективе вас расстроят, так как монолит написанный на бд приведет к тому что основной бюджет будет тратиться на управление сложностью, забрасывание ресурсов на устранение последствий факапов и найм новых людей, ведь старые не успевают за бизнес требованиями. А так конечно можно попробовать попадать со своего велосипеда, заодно подсчитаете, сколько это будет стоить.


        1. rinace Автор
          10.08.2024 08:35

          Цифры на более менее серьезный проект, в долгосрочной перспективе вас расстроят

          А эти цифры есть ? Кто то проводил исследование ?

          А расстроится я не боюсь. с чего мне расстраиваться ? Я же не Product Owner , я бюджеты не считаю. С точки зрения спокойной жизни DBA - чем меньше нагрузка на СУБД - тем лучше.

          Я всегда повторяю коллегам - в области чистого DBA у нас работы навалом и чисто академической и практической . То, что они всё считают приложении - нам лучше . При очередной аварии - "с СУБД аномалий нет " и занимаем места в партере , чем можем поможем , но почему у вас форма открывается 5 минут и отчет считается час- этот не к нам вопросы , мы вам не поможем , при всем желании.


      1. ky0
        10.08.2024 08:35
        +2

        Потому что чтобы объективно ответить на ваш вопрос - нужно разработать один и тот же проект в двух парадигмах, а потом сравнить затраты. С академической точки зрения, конечно, интересно - но мы же про реальные задачи бизнеса, там никто дважды платить не будет, максимум - расскажут "было плохо, мы переделали - и стало хорошо".