В монолите ты можешь, например, переименовать метод и тебе для этого понадобится секунда или две. Для того, чтобы переименовать метод микросервиса тебе придется пройти через такой геморрой, что проще воообще не рефакторить. А если тебе надо перераспределить ответственности между микросервисами? Что проще, выделить новую ответственность в монолите (новый класс в коде), или выделить новый микросервис?
Здравствуйте, Privalov, Вы писали:
F>>короче, вы развлекались за чужой счёт, а молодёжь пытается добиться результата. P>А библиотеки, которыми молодежь пользуется, появились сами, я верно понял?
а их по делу делали, а не из желания понаписать код.
Здравствуйте, TG, Вы писали:
TG>Здравствуйте, Философ, Вы писали:
MH>>>- когда хочется попробывать новый язык/фрэймворк и тп и есть подходящая задача. Ф>>У меня в руках новый микроскоп, хотелось бы его опробовать в действии, а в от эта задача вроде-бы подходит под возможности инструмента. Не важно, что его возможности ты знаешь плохо, и тут лучше бы молоток подошёл... Ф>>Поубивал бы!!!
TG>А есть реальные примеры таких проектов?
Прямо сейчас у меня нет, но в своей практике я с таким сталкивался с последствиями. Были одновременно Firebird, MS SQL, My SQL в купе с Delphi, .net, PHP. Это давно было.
Про такой подход неоднократно слышал: люди рвуться попробовать что-то прямо в продакшене, впендюрить туда что-то, о чём они недавно прочитали.
Всё сказанное выше — личное мнение, если не указано обратное.
Здравствуйте, Shmj, Вы писали:
S>В чем смысл микросервисов?
S>Ты для каждого компонента ваяешь HTTP-API (как правило), для каждого компонента делаешь свою DB (часто). Зачем?
S>Что мешает тебе просто создать класс AccountService и определить для него интерфейс IAccountService стандартными средствами? Ведь в таком случае тебе не нужно будет трафик гнать для внутреннего взаимодействия.
S>Далее. Как ты решаешь вопрос с транзакциями? Это ж тебе жуткие костыли придется ваять.
S>Зачем все это? Ради чего?
1. У микросервисов есть чётко очерченные интерфейсы. Твой IAccountService можно прикастовать к AccountService и через reflection поменять ему какие-нибудь приватные переменные, хе-хе. Да, это плохо, но если есть возможность, такое будет. Причём снаружи этого видно вообще не будет, это можно увидеть только читая код пользователей класса. Микросервис это, скажем, HTTP-интерфейс и все входы-выходы обычно документированы так или иначе.
2. Микросервисы можно писать на разных языках. В том числе плавно переписывая систему, если захочется. В случае монолита это делать гораздо сложней.
3. У микросервисов чуть получше теоретическое масштабирование, просто запускаешь разные сервисы на разных компьютерах. С нулевыми усилиями.
Здравствуйте, zverjuga, Вы писали:
Z>сориентируйте по терминологии. обычное MVC приложение с конечным набором веб-методов + база данных — это микросервис или монолит?
Здравствуйте, vsb, Вы писали:
vsb>3. У микросервисов чуть получше теоретическое масштабирование, просто запускаешь разные сервисы на разных компьютерах. С нулевыми усилиями.
Как же просто на разных компах? Допустим, та же регистрация пользователя. Был у тебя сервис https://assount-api.mysite.com/ Ты поднимаешь второй https://assount-api2.mysite.com/ Так просто его заюзать не получится — вам придется изменять все в коде, чтобы для одних пользователей обращаться к первому сервису а для других ко второму. Как вы это будете делать?
Здравствуйте, Cyberax, Вы писали:
C>Транзакции в распределённых системах — это сам по себе гигантский антипаттерн. C>Далее, сервисы нужны, если функциональность для них достаточно обширная. При этом снаружи они, действительно, могут выглядеть как get/set методы.
пиши еще принципал инженер Cyberax! а потом Панкай или Раджеш с компании Х приходит и ты думаешь — ну е мае люди так нужны, что бы полегче спросить?? а вот транзакция — проще простого?
что такое транзакция Панкай? И он гордо в ответ — вестимо антипаттерн — это мне мой принципал инженер обьяснил!
Здравствуйте, Shmj, Вы писали:
S>Как же просто на разных компах? Допустим, та же регистрация пользователя. Был у тебя сервис https://assount-api.mysite.com/ Ты поднимаешь второй https://assount-api2.mysite.com/ Так просто его заюзать не получится — вам придется изменять все в коде, чтобы для одних пользователей обращаться к первому сервису а для других ко второму. Как вы это будете делать?
вы вообще слышали про envoy? господи как страшно жить когда такие имитации называют себя "программист", "инженер" и пр. У вас вообще есть самосознание? Вы понимаете что вы Хомо Эректус?
Здравствуйте, Shmj, Вы писали:
vsb>>3. У микросервисов чуть получше теоретическое масштабирование, просто запускаешь разные сервисы на разных компьютерах. С нулевыми усилиями.
S>Как же просто на разных компах? Допустим, та же регистрация пользователя. Был у тебя сервис https://assount-api.mysite.com/ Ты поднимаешь второй https://assount-api2.mysite.com/ Так просто его заюзать не получится — вам придется изменять все в коде, чтобы для одних пользователей обращаться к первому сервису а для других ко второму. Как вы это будете делать?
account-api.mysite.com на одном компьютере, mysite.com на другом, reports.mysite.com на третьем. aссount-api2.mysite.com это уже другой уровень масштабирования, для такого действительно нужно писать специальный код и никакого преимуществе перед монолитом тут нет, т.к. монолит со специальным кодом тоже можно запускать на нескольких серверах.
Здравствуйте, a_g_99, Вы писали:
C>>Транзакции в распределённых системах — это сам по себе гигантский антипаттерн. C>>Далее, сервисы нужны, если функциональность для них достаточно обширная. При этом снаружи они, действительно, могут выглядеть как get/set методы. __>пиши еще принципал инженер Cyberax! а потом Панкай или Раджеш с компании Х приходит и ты думаешь — ну е мае люди так нужны, что бы полегче спросить?? а вот транзакция — проще простого? __>что такое транзакция Панкай? И он гордо в ответ — вестимо антипаттерн — это мне мой принципал инженер обьяснил!
А об чём ржач-то? Как ты предлагаешь транзакции обеспечивать в распределённой системе? Microsoft Transaction Server?
Или ты не так понял? Транзакции в пределах одного сервиса — да, можно и даже надо, а Cyberax говорит о другом.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
·>А об чём ржач-то? Как ты предлагаешь транзакции обеспечивать в распределённой системе? Microsoft Transaction Server?
Да какой микрофософт ? При чем тут микрософт какой-то ? Вы еще сюда виндоуз добавьте и щарепоинт и получится ваше резюме!
·>Или ты не так понял? Транзакции в пределах одного сервиса — да, можно и даже надо, а Cyberax говорит о другом.
Cyberax говорит то что написано в методичках которые ему спустили сверху ленивые люди. Сейчас он тут начнется в следующих постах соловьем песни петь про CAP теорему и прочее что ухватил с курсов "транзакции за 21 день"
Здравствуйте, TG, Вы писали:
NL>>>Если вы делаете компонент как микросервис (order service, account service и т.п.) у вас возникают проблемы с транзакционностью, у вас возникают проблемы с отказоустойчивостью. По факту система по прежнему монолит, только добавились дополнительные издержки. C>>Транзакции в распределённых системах — это сам по себе гигантский антипаттерн. TG>Почему? TG>И как делать без транзакций? https://martinfowler.com/articles/microservice-trade-offs.html#consistency
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, a_g_99, Вы писали:
__>·>А об чём ржач-то? Как ты предлагаешь транзакции обеспечивать в распределённой системе? Microsoft Transaction Server? __>Да какой микрофософт ? При чем тут микрософт какой-то ? Вы еще сюда виндоуз добавьте и щарепоинт и получится ваше резюме!
А что же тогда? EJB/XA? Открой тайну-то!
__>·>Или ты не так понял? Транзакции в пределах одного сервиса — да, можно и даже надо, а Cyberax говорит о другом. __>Cyberax говорит то что написано в методичках которые ему спустили сверху ленивые люди. Сейчас он тут начнется в следующих постах соловьем песни петь про CAP теорему и прочее что ухватил с курсов "транзакции за 21 день"
Понятно. По сути сказать ничего не можешь.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали:
·>А что же тогда? EJB/XA? Открой тайну-то!
Вы друг мой смотрите на 25 лет назад, а вам надо взглянуть на 10 лет назад хотя бы. Ну про современные подходы я не буду говорить, ни к чему вам этим голову забивать раз у вас какой микрософт и EJB в голове
·>Понятно. По сути сказать ничего не можешь.
так было бы с кем поговорить я бы поговорил . а так времени жалко тратить на ликбезы
Здравствуйте, a_g_99, Вы писали:
__>·>А что же тогда? EJB/XA? Открой тайну-то! __>Вы друг мой смотрите на 25 лет назад, а вам надо взглянуть на 10 лет назад хотя бы. Ну про современные подходы я не буду говорить, ни к чему вам этим голову забивать раз у вас какой микрософт и EJB в голове
Так что же тогда? Рафты и прочие консенсусы? Просвети уж убогих.
__>·>Понятно. По сути сказать ничего не можешь. __>так было бы с кем поговорить я бы поговорил . а так времени жалко тратить на ликбезы
А тебя сюда никто не приглашал, ты сам припёрся и всё слюной забрызгал.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, a_g_99, Вы писали:
__>вы вообще слышали про envoy? господи как страшно жить когда такие имитации называют себя "программист", "инженер" и пр.
Переход на личности — не от большого ума. Я себя не называл ни программист ни тем более инженер.
По теме есть что сказать?
__>У вас вообще есть самосознание?
Определи что такое самосознание. Дай научное определение.
Здравствуйте, TG, Вы писали:
C>>Транзакции в распределённых системах — это сам по себе гигантский антипаттерн. TG>Почему?
Потому, что они не работают так, как этого хотелось бы.
TG>И как делать без транзакций?
Делать без транзакций. На eventual consistency.
Здравствуйте, a_g_99, Вы писали:
__>·>Или ты не так понял? Транзакции в пределах одного сервиса — да, можно и даже надо, а Cyberax говорит о другом. __>Cyberax говорит то что написано в методичках которые ему спустили сверху ленивые люди. Сейчас он тут начнется в следующих постах соловьем песни петь про CAP теорему и прочее что ухватил с курсов "транзакции за 21 день"
Ну а так какие альтернативы? Дай угадаю! Запихать всё в БД в виде хранимых процедур.
Здравствуйте, a_g_99, Вы писали:
__>пиши еще принципал инженер Cyberax! а потом Панкай или Раджеш с компании Х приходит и ты думаешь — ну е мае люди так нужны, что бы полегче спросить?? а вот транзакция — проще простого? __>что такое транзакция Панкай? И он гордо в ответ — вестимо антипаттерн — это мне мой принципал инженер обьяснил!
И что дальше-то? Как это опровергает то, что транзакции в распределённых системах не работают?