|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
Коллеги, привет. За последние 4 года работал в двух компаниях, где все "распиливают монолит". Что это значит: есть большая легаси оракловая база данных, где вся логика зашита в plsql процедуры. Скорость работы - почти на пределе возможности весьма недешёвой железки. Набрана куча народу в разработку, они по-немногу весь функционал переделывают в микросервисы (на джаве). У меня большой вопрос: какова цель этого действа? Правильно я понимаю, что пока мы не распилим саму базу на кусочки (на несколько независимых баз), то мы не получим выигрыш в быстродействии? Объясню тезис про распил базы. Грубо говоря: если база крутится на одной машине, то чтобы получить ускорение существующией базы в 2 раза, нужно заплатить за железку в 4 раз больше денег. Если же мы распилим одну базу на 2 независимых кусочка (с некоторой самопальной интеграцией, которая жрёт немного ресурсов), то чтобы ускорить работу, нам надо будет докупить железку такую же, как сейчас. Тратим денег в 2 раза меньше! Разумеется, не считая денег, потраченных на распил монолита. Джава-разработчики, кого я спрашивал, не могут внятно ответить на этот вопрос. Типа: мне сказали копать, я и копаю. Дополнительно говорят умные слова, мол: 1) простота установки 2) независимость (упал один сервис, но он не потянул за собой все остальные сервисы) 3) А вот про быстродействие никто внятно не ответил. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 06:13 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
shurka22 У меня большой вопрос: какова цель этого действа? Большую кучу говна растаскивают на маленькие. Зачем? В большую надо нырять уходя с головой, а в мелкие достаточно погрузиться руками по локоть. Ну и масштабирование вширь и пр. бла-бла-бла. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 07:57 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
crutchmaster Большую кучу говна растаскивают на маленькие. Зачем? В большую надо нырять уходя с головой, а в мелкие достаточно погрузиться руками по локоть. Это можно решить и в рамках одной базы: каждая кучка крутится в своей схеме. Должно работать заметно быстрее, чем если логику вытащить наружу из базы. Правильно я понимаю, что вынос логики из оракл-пакетов наружу в джаву - не даст прироста производительности без распила самой базы? А даже скорее наоборот - производительность просядет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 08:09 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
shurka22 Это можно решить и в рамках одной базы Не можно. shurka22 Должно работать заметно быстрее Кому должно и на каком основании? EAV будет работать херово. Графы будут работать херово. shurka22 чем если логику вытащить наружу из базы. В абсолютно любых случаях? Тут наша дискуссия из технической становится религиозной. shurka22 Правильно я понимаю, что вынос логики из оракл-пакетов наружу в джаву - не даст прироста производительности без распила самой базы? В общем случае нельзя сделать однозначного вывода. Но если пилят, значит есть смысл пилить. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 08:14 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
shurka22 Коллеги, привет. У меня большой вопрос: какова цель этого действа? Очень просто и грубо говоря. Решение проблем со сложностью проекта. Перенос части сложности на "уровень вверх". С уровня кода на архитектуру связей. shurka22 Правильно я понимаю, что пока мы не распилим саму базу на кусочки (на несколько независимых баз), то мы не получим выигрыш в быстродействии? Дополнительно говорят умные слова, мол: 1) простота установки 2) независимость (упал один сервис, но он не потянул за собой все остальные сервисы) 3) А вот про быстродействие никто внятно не ответил. 1) CI/CD (рядом где-то должен быть DevOps) 2) Горизонтальное масштабирование (см. kubernetes) 3) Массивное распаралелливание (см пункт 2) На самом деле это просто "стильно, модно, молодежно". И позволяет раздуть штат программистов. ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 08:52 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
crutchmaster В абсолютно любых случаях? Тут наша дискуссия из технической становится религиозной. Нет конечно, не в любых случаях. Но логика в нашей базе не сильно сложная: тут добавить, там отнять. Никаких квадратных уравнений мы в базе не рассчитываем, и уж тем более - не декодируем видео. Насколько я понимаю, основаная нагрузка на базу - это работа связанная непосредственно с DML. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 08:57 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
shurka22, я так понял все работает на пределе и вертикальное масштабирование уже или не помогает или невозможно. нужна возможность распределения нагрузки. это можно сделать по разному, но микросервисы сейчас модно ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 09:29 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
а подскажите - в оркале можно сделать кластер, распределить данные и чтобы хранимки могли выполняться так будто есть только одна база? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 09:35 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
shurka22, может просто нанять грамотного DBA? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 09:48 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
17-77 а подскажите - в оркале можно сделать кластер, распределить данные и чтобы хранимки могли выполняться так будто есть только одна база? из анекдотаПетька ты прав, но есть нюансы... Сделать можно, но: 1) RAC option, это +40% стоимости к Enterprise Edition 2) Требуется дополнительное недешевое оборудование 3) Настоятельно сразу рекомендуется проектировать систему учитывающую специфику RAC 4) не все задачи, (хотя и многие), дадут выигрыш в RAC среде Есть конечно "волшебная таблетка" - ExaData, но см. пункт 4. Если подготовите нагрузочное тестирование, есть шанс договорится попробовать как Ваша система поведет в окружении exadata. p.s. вынос логики на middle layer, позволяет экономить "золотые" процессорные лицензии на RDBMS + позволяет отвязаться/(значительно снизить стоимость миграции) от выбора конкретной базы, что снижает глобальные бизнес риски. p.s. родная Oracle OeBS, спроектированная на экстремальные нагрузки, практически не использует constraints. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 09:56 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
Aliona shurka22, может просто нанять грамотного DBA? ЯТД, там еще и грамотный архитектор не помешает ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 09:58 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
shurka22 Коллеги, привет. За последние 4 года работал в двух компаниях, где все "распиливают монолит". Что это значит: есть большая легаси оракловая база данных, где вся логика зашита в plsql процедуры. Скорость работы - почти на пределе возможности весьма недешёвой железки. Набрана куча народу в разработку, они по-немногу весь функционал переделывают в микросервисы (на джаве). У меня большой вопрос: какова цель этого действа? Правильно я понимаю, что пока мы не распилим саму базу на кусочки (на несколько независимых баз), то мы не получим выигрыш в быстродействии? Если в результате им удасться разделить систему например на онлайн-транзакции и хранилище - то это хороший результат. Или на CQRS. Но конечно надо зорко следить чтобы не понадобилось покупать еще более дорогую железку. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 10:30 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
shurka22 Джава-разработчики, кого я спрашивал, не могут внятно ответить на этот вопрос. Типа: мне сказали копать, я и копаю. Дополнительно говорят умные слова, мол: 1) простота установки 2) независимость (упал один сервис, но он не потянул за собой все остальные сервисы) 3) А вот про быстродействие никто внятно не ответил. А они и не смогут ответить потому что этот распил - не требование а архитектурная философия. Эволюционный процесс, если можно так сказать. Фоном также идет задача упрощения понимания сложной системы. Типа тут отсылка к закону Деметры. Но к Деметре они еще сбоку пришили кучу умных слов типа простоты установки и отказоустойчивости каждого сервиса по отдельности. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 10:35 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
shurka22 Коллеги, привет. За последние 4 года работал в двух компаниях, где все "распиливают монолит". Что это значит: есть большая легаси оракловая база данных, где вся логика зашита в plsql процедуры. Скорость работы - почти на пределе возможности весьма недешёвой железки. Набрана куча народу в разработку, они по-немногу весь функционал переделывают в микросервисы (на джаве). У меня большой вопрос: какова цель этого действа? Правильно я понимаю, что пока мы не распилим саму базу на кусочки (на несколько независимых баз), то мы не получим выигрыш в быстродействии? Объясню тезис про распил базы. Грубо говоря: если база крутится на одной машине, то чтобы получить ускорение существующией базы в 2 раза, нужно заплатить за железку в 4 раз больше денег. Если же мы распилим одну базу на 2 независимых кусочка (с некоторой самопальной интеграцией, которая жрёт немного ресурсов), то чтобы ускорить работу, нам надо будет докупить железку такую же, как сейчас. Тратим денег в 2 раза меньше! Разумеется, не считая денег, потраченных на распил монолита. Джава-разработчики, кого я спрашивал, не могут внятно ответить на этот вопрос. Типа: мне сказали копать, я и копаю. Дополнительно говорят умные слова, мол: 1) простота установки 2) независимость (упал один сервис, но он не потянул за собой все остальные сервисы) 3) А вот про быстродействие никто внятно не ответил. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 10:44 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
Vadim Lejnin ЯТД, там еще и грамотный архитектор не помешает shurka22 ... Но конечно надо зорко следить чтобы не понадобилось покупать еще более дорогую железку. Как же это выполнить если вся страна давно сидит на Красной или Белой таблэтке -- Сервер 1.5 ТБ ОЗУ, 2 процессора по 36 ядер , SSD 30Тб 2Гб / сек запись -- База с 2017 года - количество записей 50-70 млн записей В ДЕНЬ в этом году #1# Сводные продажи по магазин + товар с 2017 года 2017-2018 год в среднем 3,5 млн записей в день 500 товаров * 7000 магазинов записей 2019-2021 год в среднем 7 млн записей в день 700 товаров * 10000 магазинов Итого: 5 млрд записей #2# Остатки на каждый день по магазин+ товар c 2019 года 2000 товаров * 10000 магазинов - 20 млн записей в день Итого: 15 млрд записей stdio ... 3) А вот про быстродействие никто внятно не ответил. Overview of Oracle Sharding Не прячьте ваши денежки по банкам и углам, Несите ваши денежки, иначе быть беде... Это же one way ticket нашего Бурана - всех с днем космона ф тики! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 10:58 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
shurka22 Грубо говоря: если база крутится на одной машине, то чтобы получить ускорение существующией базы в 2 раза, нужно заплатить за железку в 4 раз больше денег. а как вы пришли к такой экстраполяции? ЗЫ: у миллсапа был пример когда покупка дорогого железа привела к еще большим тормозам ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 11:48 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
Тяготеет к закону Амадала. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 11:54 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
x0125 Это же one way ticket нашего Бурана Про Буран вы ничего не путаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 11:59 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
Отвечу за разработчиков. При нормальном распиле монолита, каждый микро-сервис в результате которому нужна база получает свою базу. Чужие сервисы не лезут в чужую базу. Общение происходит либо через API либо Messaging (RabbitMQ, Serivce Bus...). Для чего это делается? Ответ простой, чтобы сервисы были маленькие, легко заменяемые, тестируемые и можно было бы деплоить по отдельности. К примеру у нас 100+ микро-сервисов. Не всем нужна база, иногда используем Blob Storage. Баз на порядок меньше, пул не большой 20-30. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 12:27 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
Я полностью понимаю сомнения Ораклиста. Он - видит проблемы например в самом факте внесения задержек в части одной монолитной системы. Это всё равно что процессор разбить молотком на осколки а потом их собрать с помощью медных проводов и разнести на 100 километров и заставить это все работать. Разумеется латентность скушает весь перформанс. Тоесть само по себе разбиение базы и PL/SQL кода должно быть переосмыслением системы. И разделением ее на независимые базы со слабой связностью и слабой репликацией. И никаких JOINS между этими базами не должно быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 12:46 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
shurka22 Набрана куча народу в разработку, они по-немногу весь функционал переделывают в микросервисы (на джаве). У меня большой вопрос: какова цель этого действа?. Ментальные способности современных IT-специалистов совсем не факт, что высокие и адекватные. Чаще всего (IMHO) это мода и подражание одной обезьянки другой обезьянки. Да, монолитную БД трудно масштабировать, дорого содержать и всё такое. Но если её распилить, у системы появляются совсем новые, другие свойства, и, главное -- исчезают старые, а именно: монолитная БД хороша чем? Надо тебе из одного модуля взать данные от другого модуля - пожалуйста! Нет проблем! Протянул руку (написал запрос) и взял -- они твои! Лёгкость межмодульной интеграции неимоверная! А с микросервисами что? А фиг, все межмодульные связи надо прописывать, разрабатывать, учитывать при проектировании, реализовывать, и гонять данные из одной БД в другую без особого толка -- просто чтобы до них дотянуться. Ну и в чём преимущество? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 12:50 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
shurka22 Правильно я понимаю, что вынос логики из оракл-пакетов наружу в джаву - не даст прироста производительности без распила самой базы? А даже скорее наоборот - производительность просядет. Нет, неправильно. Может дать, а может не дать, а может вообще ничего не поменяется. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 12:51 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
Anti_Hacker Отвечу за разработчиков. При нормальном распиле монолита, каждый микро-сервис в результате которому нужна база получает свою базу. Чужие сервисы не лезут в чужую базу. Общение происходит либо через API либо Messaging (RabbitMQ, Serivce Bus...). Ну , так которое (общение) надо проектировать, администрировать, реализовывать, мониторить... СМЫСЛ КАКОЙ? Для чего это делается? Ответ простой, чтобы сервисы были маленькие, легко заменяемые, тестируемые и можно было бы деплоить по отдельности. Нет ничего более просто тестируемого чем кусок SQL кода.. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 12:54 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
MasterZiv Нет ничего более просто тестируемого чем кусок SQL кода.. и что, где-то в серьез существуют проекты где как полагается поднимается оракл с партишенами в докере, разворачиваются таблицы, заполняются и тестируется pl/sql код каждого пекеджа ? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 13:19 |
|
Зачем все пилят монолит?
|
|||
---|---|---|---|
#18+
H5N1 MasterZiv Нет ничего более просто тестируемого чем кусок SQL кода.. и что, где-то в серьез существуют проекты где как полагается поднимается оракл с партишенами в докере, разворачиваются таблицы, заполняются и тестируется pl/sql код каждого пекеджа ? При чем здесь тестирование? Тема топика-ж не про это. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2021, 13:49 |
|
|
start [/forum/topic.php?fid=52&msg=40061568&tid=1880263]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 284ms |
total: | 415ms |
0 / 0 |