Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Кто работает с микросервисами - есть вопросы

1430  1 2 3 4 5 6 все
Murr патриот08.07.21 17:56
Murr
NEW 08.07.21 17:56 
в ответ AlexNek 08.07.21 16:34

а когда все таблицы по разным базам раскиданы?

-----

А какое отношение это имеет к сервису?

Собираешь те данные какие тебе надо со всех баз.

Аналогично так же пишешь данные в базу.

Т.е. либо сделаешь операцию до конца, либо откатываешься с фаултом...

#21 
Murr патриот08.07.21 18:01
Murr
NEW 08.07.21 18:01 
в ответ AlexNek 08.07.21 17:35

микросервисы - добавляй что хошь без изменений.

-----

Не знаю. Не видел такого.


Что видел - добавляешь функционал... дополнительным микросервисом... соответственно - клиентом... и все работает.

#22 
AlexNek патриот08.07.21 18:18
AlexNek
NEW 08.07.21 18:18 
в ответ yurka_ffm 08.07.21 17:46
А микросервисы вообще не всем нужны.

Конечно, но почем-то все хотят чтобы знал как делать микросервисы смущ

Не надо сюда приплетать микросервисы

Ну может я еще чего не понял, но пишут, что каждому сервису по базе. Вот и думаю как?

#23 
AlexNek патриот08.07.21 18:24
AlexNek
NEW 08.07.21 18:24 
в ответ Murr 08.07.21 17:56
А какое отношение это имеет к сервису?

Ну так пишут же для независимости, каждому сервису по базе, меняй что хошь и не думай.

А в итоге получается и фронтенд монолит и база можно сказать монолит.

Какого тогда все просто помешаны на этих микросервисах?

#24 
Murr патриот08.07.21 19:02
Murr
NEW 08.07.21 19:02 
в ответ AlexNek 08.07.21 18:24

А в итоге получается и фронтенд монолит и база можно сказать монолит.

------

Получается.

Ровно до тех пор, пока не сможешь разделить на изолированные части.


Какого тогда все просто помешаны на этих микросервисах?

-----

Как для меня - там, даже если пишут спагетти-код, кода будет меньше и взаимодействие с другими частями будет более расписанное.

#25 
Срыв покровов коренной житель09.07.21 00:03
NEW 09.07.21 00:03 
в ответ koder 08.07.21 16:03
Например сервис пользователей. То есть есть база данных пользователей и доступ к ней только через сервис пользователей. Если нужно что то другому сервису, он не имеет права лезть в чужую базу, а запрашивает данные через соответствующий сервис. Сервисы отдают данные по запросам не только фронту, но и другим сервисам

то есть скажем для сервиса загруженных пользователями котиков нужна отдельная БД?
а как там сохранять информацию об авторе картинки с котиком?

#26 
koder патриот09.07.21 06:36
koder
NEW 09.07.21 06:36 
в ответ AlexNek 08.07.21 16:14
Где же эта декларируемая независимость?


Нигде и никогда. Проггеры используют какую нибудь систему типа sswagger или просто договариваются. Объект можно прислать в теле запроса или по частям как параметры запроса. Но принимающая сторона должна знать, что принимает. В принципе можно пропарсить ответ и вычленить все отдельные параметры по принципу ключ-значение. Без готового объекта. Но что потом делать с незнакомыми параметрами? Получатель должен знать , что он будет получать и быть готовым к получению. Ну и на этом базируются системы автоматической валидации полученного объекта - параметр xyz например не может быть короче 5 символов, иначе ошибка.

#27 
koder патриот09.07.21 06:41
koder
NEW 09.07.21 06:41 
в ответ AlexNek 08.07.21 16:18

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

#28 
koder патриот09.07.21 06:58
koder
NEW 09.07.21 06:58 
в ответ AlexNek 08.07.21 18:24, Последний раз изменено 09.07.21 06:59 (koder)
Какого тогда все просто помешаны на этих микросервисах?


Во первых модно. Во вторых даже монолит можно написать модульно. Доступ к данным только через интерфейсы. Это позволяет выкинуть модуль полностью. Заткнуть интерфейсы и прога будет работать дальше. Когда нет сложных перекрестных ссылок и можно переписывать и выбрасывать модули не боясь поломать прогу.


Основная идея имхо - возможность беспроблемно заменить кусок проги не убив остальные части. Ибо только группа микросервисов образует прогу.

#29 
AlexNek патриот09.07.21 12:02
AlexNek
NEW 09.07.21 12:02 
в ответ koder 09.07.21 06:58
Во вторых даже монолит можно написать модульно

Именно это и смущает. В общем, плевать на помешательство. Делам модульно, а если приспичит можно и на микросервисы модули переделать.

Но вот копировать ли общие данные или передавать их по ссылке из одного источника? Скорее второе с версиями.


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

#30 
gans_myuller завсегдатай09.07.21 15:23
NEW 09.07.21 15:23 
в ответ AlexNek 09.07.21 12:02

Монолит можно написать модульно, но это все равно будет монолит. Большое нескалируемое нечто с бутылочными горлышками.
Данные по умолчанию копировать, но только те, что действительно нужны. Все как в жизни.
Если у вас поменялся почтовый адрес, то вы сообщаете об этом банку, врачу и прочим и они у себя меняют данные в базе, а не делают кажный раз
запрос в ратушу перед тем как послать вам по почте счет.



С защитой так же. Получаешь у специального сервиса (ратуша) токен (аусвайс) и таскаешь с собой пока он валидный (10 лет). Стал невалидный - обновляешь :-)
А каждый сервис как-нибудь сам решает что с этим токеном можно, а что нельзя.

#31 
koder патриот09.07.21 16:19
koder
NEW 09.07.21 16:19 
в ответ AlexNek 09.07.21 12:02
Как же тогда с защитой, каждому сервису секурити токен еще добавлять


Есть Аутентификацион-сервер. Он управляет безопасностью. Первый запрос на любой сервис идёт без токена, поэтому перенаправляется на этот сервер, который даёт возможность аутентифицироваться. По результатам процедуры запрос получает токен и перенаправляется обратно. И обрабатывается. Выглядит для юзера это прозрачно - что бы он на бэке не запросил, неважно через клиент или другим хитрым способом, любой сервис выбросит его на регистрацию и потом любой примет с токеном.

#32 
AlexNek патриот09.07.21 17:40
AlexNek
NEW 09.07.21 17:40 
в ответ gans_myuller 09.07.21 15:23
Монолит можно написать модульно, но это все равно будет монолит

Ну есть у меня допустим 3 интерфейса, имплементация для которых лежит в 3 разных Длл-ках - тип модульный монолит

Теперь эти 3 интерфейса "имплементируются" через сервисы - тип микросервисы

Ну и где будет разница?


Данные по умолчанию копировать

То бишь, у меня сотня автогенерированных "таблиц" и все мне их ручками копировать/перебивать?

А потом все синхронизировать? Кто интересно будет мне план синхронизации писать, чтобы всё точно было?


пока он валидный (10 лет).

Токен валидный 10 лет - это где шок

Надо стащить и попользовать смущ


#33 
AlexNek патриот09.07.21 17:45
AlexNek
NEW 09.07.21 17:45 
в ответ koder 09.07.21 16:19
любой примет с токеном

В общем, каждому сервису еще и "логин часть". Вот будет интересно дырки зашивать.

Но подозреваю, что это еще не всё. Нефиг "рекламе" верить, а то я уж слюни пораспукал. спок

#34 
koder патриот09.07.21 17:51
koder
NEW 09.07.21 17:51 
в ответ gans_myuller 09.07.21 15:23
Большое нескалируемое нечто с бутылочными горлышками.


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


С токенами как правило тоже все единообразно - общая политика безопасности. Даже если много отдельных сервисов.

#35 
koder патриот09.07.21 17:54
koder
NEW 09.07.21 17:54 
в ответ AlexNek 09.07.21 17:45
В общем, каждому сервису еще и "логин часть".


Я не сильно понял, что это значит, но это стандартная защита вебресурса. Неважно, защит он в монолите или в отдельном сервисе. Каждый ендпойнт защищён. Каждый, кроме специально открытых. Каждый отвечает на запрос с правильным токеном или посылает за токеном. Если это защита на базе токенов.

#36 
koder патриот09.07.21 18:11
koder
NEW 09.07.21 18:11 
в ответ AlexNek 09.07.21 17:40
То бишь, у меня сотня автогенерированных "таблиц" и все мне их ручками копировать/перебивать?


Я не понял проблему. У каждого сервиса свои таблицы. Каждый сервис хранит и управляет только своими данными. Сервис "пользователь-штаммдаты" имеет таблицу "адреса" и ее и данных по адресам нет больше нигде.

#37 
schizo коренной житель09.07.21 23:16
schizo
NEW 09.07.21 23:16 
в ответ AlexNek 09.07.21 17:40

а если ресурсов станет не хватать на машине, где используются Ваши "3 дллки", как Вы сервис Ваш будете масштабировать?

Храни Вас Г-дь!
#38 
AlexNek патриот10.07.21 11:47
AlexNek
NEW 10.07.21 11:47 
в ответ koder 09.07.21 17:54
Каждый ендпойнт защищён.

По типу ентого?

[Authorize]

public class HomeController : Controller


Я имел в виду немного другое.

Если сервис обращается к сервису то там тоже ведь нужна защита. А токен я обычно получаю после отсылки "имя+пароль", получается каждый сервис должен иметь свою пару, которую тоже в принципе можно стыбрить.

#39 
AlexNek патриот10.07.21 11:53
AlexNek
NEW 10.07.21 11:53 
в ответ koder 09.07.21 18:11
У каждого сервиса свои таблицы

Ну так эти данные как-то должны попасть фронтэнду, пусть они и замапенны с дополнительными атрибутами для валидирования, но все равно это "копия" оригинальных таблиц сервиса. И эту копию должны синхронизировать разработчики сервиса, а не те кто пишет UI.

#40 
1 2 3 4 5 6 все