
Sergey
14.12.2017
08:11:11
или в каком-то сторадже понадежнее?

Victor
14.12.2017
08:11:20

Maksim
14.12.2017
08:11:50
и внимание вопрос: а что мешает синкать стораджи?)

Sergey
14.12.2017
08:12:18
В сорадже
так... я кажется понял.... у тебя когда ты скейлишь микросервис, у тебя колилчество микросервисов не меняется. Так что у тебя сторадж всеравно будет общим на те N инстансов которые ты поднял новые. С точки зрения всего приложения - у тебя был один микросервис по работе с почтой, и остался один.

Google

Maksim
14.12.2017
08:12:55
да даже если он базу поднимает под каждую копию - пофиг) сейчас скейлится практически всё

Sergey
14.12.2017
08:13:08
если вдруг и это будет проблемой - стораджи тоже умеют в репликацию (особенно хорошо когда большая часть нагрузки - на чтение как у тебя)

Maksim
14.12.2017
08:14:19
я просто проблемы понять не могу)

Sergey
14.12.2017
08:14:24
да я вот тоже...

Victor
14.12.2017
08:14:34
Ага, все понял. Я просто почему то думал, что если мы делаем для копий сервиса общий сторож/репликации, мы выносим его состояние. Но теперь я въехал кажись)

Sergey
14.12.2017
08:14:48
с микросервисами прикольнее знакомиться через actor model
но последнее может даже сложнее потому я не уверен....
в микросервисах ты вполне можешь жить на уровне - один ограниченный контекст = один микросервис. А с экторами удобнее еще и на агрегаты дробить
хотя... ладно, тут у меня еще нет хорошо сформированного мнения
вон может Maksim за экторы понакидывает

Maksim
14.12.2017
08:16:58
сразу после саг)

Google

Victor
14.12.2017
08:23:38
А ещё такой вопрос, раз уже обсуждаем микросервисы. Вот если использовать composition ui подход, и ui-microservice как будет правильнее, что бы отдавали отображение ? И как быть с подключаемыми файлами ?
Ну, то есть до пустим есть сервис который отдаёт отображение меню категорий, он должен отдавать чисто div блок, или ещё и стили/js ?

Maksim
14.12.2017
08:24:38
а зачем микросервисы этим занимаются?)

Sergey
14.12.2017
08:25:06
как масштабировать разработчиков если у тебя есть 3-4 фронтендера и те же 20 микросервисов?

Maksim
14.12.2017
08:26:00
микросервисы ради микросервисов до добра не доводят

Sergey
14.12.2017
08:26:03
как ты будешь разруливать A/B тестирование нового UI?

Victor
14.12.2017
08:26:29

Maksim
14.12.2017
08:26:57
а/б тестирование как бы не про изоляцию компонентов

Sergey
14.12.2017
08:27:48

Victor
14.12.2017
08:30:33
Ну, тогда по факту можно для тестирования просто перекрыть микросервис которые отрисовывают компонент, и использовать для каждой группы свои

Maksim
14.12.2017
08:31:16
Что зовётся микросервисом-то?

Sergey
14.12.2017
08:31:39
или несколько если у тебя например есть разный UI для разных ролей

Victor
14.12.2017
08:32:06

Sergey
14.12.2017
08:32:17
другого микросервиса?

Maksim
14.12.2017
08:33:04
Это прям так надо было выносить в отдельное приложение? Чёи нипанимать малость

Victor
14.12.2017
08:34:07

Sergey
14.12.2017
08:34:34
> composition ui подход
для меня вот это вот означает что у нас есть один микросервис занимающийся агрегацией данных из многих микросервисов с целью отрисовки UI

Google

Victor
14.12.2017
08:35:00

Sergey
14.12.2017
08:35:26

Victor
14.12.2017
08:37:26

Maksim
14.12.2017
08:37:26
имхо, тут как раз случай микросервисов ради микросервисов. Профита не получили, а проблем - до жопы)

Sergey
14.12.2017
08:37:59
у тебя тут не особо есть выбор)
да и потом - ты когда выбираешь подход - у тебя должны быть сформированы задачи которые нужно решить
а так - выглядит как реально подходы ради подходов

Victor
14.12.2017
08:40:14

Sergey
14.12.2017
08:41:17
ты будешь реализовывать компонент поиска у каждого микросервиса свой?
будешь заводить микросервис поиска которому нужно явно указывать контекст (на UI же надо показывать где мы ищем) или микросервис каталога будет просить микросервис поиска отрендрить ui компонент?

Victor
14.12.2017
08:44:01

Sergey
14.12.2017
08:44:38
как будешь дальше жить?
добавим мобильное приложение для части функционала
и вон твоя красивая концепция того как рендрить UI уже рассыпается и приедтак так или иначе делать какой-то агрегатор

Victor
14.12.2017
08:45:56

Sergey
14.12.2017
08:46:19
+ мобильный клиент

Google

Victor
14.12.2017
08:46:59

Sergey
14.12.2017
08:47:17
а если и будем - внутри будет все тот же react/angular
иначе мы могли бы обойтись чисто мобильной версией

Victor
14.12.2017
08:48:11

Sergey
14.12.2017
08:48:21
мы ж мобильное приложение не просто так делаем а потому что нам помимо "показать" надо как-то упроститиь взаимодействие используя профит мобильной платформы

Victor
14.12.2017
08:48:44

Sergey
14.12.2017
08:48:47
а хотя не

Admin
ERROR: S client not available

Sergey
14.12.2017
08:49:07
еще один маленький и вернемся к главному
Ну тогда это single-Ui
у тебя есть один бэкэнд который обслуживает 4 разных UI с частью функционала сквозного, и частью самостоятельного под каждую роль.
и главный вопрос - чем плох подход "монолитного UI" если он не такой уж и монолитный?

Victor
14.12.2017
08:52:07

Sergey
14.12.2017
08:52:15
с точки зрения разделения ответстенноости - даже лучше, с точки зрения удобства эксплуатации - тоже лучше, с точки зрения связанности.... ну тут да, тут сложнее держать себя в руках и не связать этот UI со всеми микросервисами.

Victor
14.12.2017
08:52:51

Sergey
14.12.2017
08:53:41
у тебя у системы как правило есть разные роли пользователей
например... если мы пилим убер - у тебя есть роль пассажира и водителя. А еще есть менеджмент.
сквозной функционал - это общий для нескольких ролей. Например история поездок будет использоваться и там и там

Google

Sergey
14.12.2017
08:55:50
но с точки зрения UI будет чуть-чуть отличаться

Victor
14.12.2017
08:57:07
Ну, тогда системе ведь все равно на то кто Ее использует. А доступ по сути это уже ответственность ACL. По этому микросервиссу все равно кто к нему обращаешься, главное что бы права были.
А от того что API дёргает тот или иной UI, API не знает. Или я не дополнял проблему ?

Sergey
14.12.2017
08:59:04
есть принцип такой - SRP, который заключается в том что бы у одной штуки была только одна роль, генерирующая изменения требований к этой штуке

Victor
14.12.2017
08:59:41
Но под них мы будем менять UI, либо добавлять API, го это по идее тоже не связанные процессы


Sergey
14.12.2017
09:00:57
именно не связанные. API ты будешь менять если захочешь чуточку поведение поменять. И часто это изменение в поведении сопровождается изменениями на UI
но с UI эксперементировать нам надо больше (а точнее с UX)
и пока у тебя одни чуваки правят микросервис занимающийся обработкой данных что бы он работал быстрее и справлялся с нагрузками лучше, другой чувак будет накладывать изменения на UI
таким образом мы будем снижать риски так как если мы задеплоили чисто UI а не новую логику - то меньше вероятнсть что в нескольких местах что-то не так пойдет. Проще эксперементировать и т.д.
НО! есть свои минусы - в частности связанность
так что более менее адекватный вариант будет находиться где-то по середине между "один микросервис для всего UI" и "каждый микросервис готовит для себя UI". Последнее с точки зрения связанности даже больше проблем будет иметь
ну либо надо научиться трансклудам/декорации компонентов


Victor
14.12.2017
09:04:06
Но вот в случае когда есть сервис который отдаёт UI компонента, нам проще экспериментировать. Мы выкатили ещё один сервис. Все скрыли его за прокси и отдаём теперь то тот то тот. И больше никто не знает что что то поменялось. Мы по сути добавили в систему новый компонент, не нарушив старую связь.

Sergey
14.12.2017
09:04:22
ну и не забываем главное правило распределенных систем - не писать распределенные системы пока есть такая возможность

Victor
14.12.2017
09:05:29
Когда один UI говорит с нескольким API ? Или я недопонял

Sergey
14.12.2017
09:06:03
да, например, к какому микросервису ты отнесешь этот UI

Victor
14.12.2017
09:06:41
Ну, это может быть отдельный агрегатный UI работающий с несколькими сервисами.
И прелесть в том, что система такое даже не заметит. Она просто отобразит его как и любой другой компонент

Sergey
14.12.2017
09:08:07
предположим я захожу на страничку твоей системы. И у нас как раз та ситуация что UI кусочка страницы нужно агрегировать с разных сервисов
кто меня встретит первым? и кто заберет компонент из нашего UI-сервиса?