
Andrei
08.08.2018
13:25:51

Sheldhur
08.08.2018
13:27:35


Andrei
08.08.2018
13:36:41
не соглашусь про блокнот. вот например мне нужно разобраться что происходит, как работает система. я читаю код, дохожу до того что сервис запостил эвент. а что при этом происходит? как быстро найти все микросервисы которые на эвент подписаны? хочется экспериенс типа как "find all references"... а по факту придется скорее всего бегать в клауд и смотреть сабскрипшены. а если их 200 штук, офигеешь искать. а если на каждый чих постится по эвенту, то через пару дней на стенку полезешь
и я такие системы видел, это реальная ситуация.

Google

Sheldhur
08.08.2018
13:39:45
я и говорю что это проблема блокнота
ты по вызовам можешь прыгать через ctrl+click на объявление функции
ctrl+click по функции показывает все вызовы

Alexander
08.08.2018
13:41:30

Sheldhur
08.08.2018
13:41:38
что мешает так же сделать для ивентов?

Andrei
08.08.2018
13:41:46

Sheldhur
08.08.2018
13:42:06
а чем тебе тут любой другой подход поможет?
и вообще то что происходит в других сервисах тебя волновать не должно

Dmitry
08.08.2018
13:42:59


Andrei
08.08.2018
13:46:16
а чем тебе тут любой другой подход поможет?
ну в большинстве других подходов recipient известен на стадии вызова. а в event-ах неизвестен. на эвент можно и динамически подписываться в рантайме, т.е. на стадии компиляции вообще из серии "а хрен его знает что там произойдёт"

Alexey
08.08.2018
13:48:01
Быстрый вопрос. Как вот это переписать во что то менее стремное?

Google

Alexey
08.08.2018
13:48:02
Object.values(result.data.data)[0]["clientid"] )
структура приходящая из api такая { '8023': { clientid: '8023' } }

Andrei
08.08.2018
13:49:02
как процесс происходит? один микросервис завершил работу, запустил эвент, его подхватило 5 сервисов, что-то сделали, записалм результаты своей работы в очередь, потом еще один сервис начинает все эти пакеты из очередей склеивать и т.п.

Alexey
08.08.2018
13:49:08
нужен не столько сам ID сколько факт что пришел хоть один, при проверки уникальности..

Sheldhur
08.08.2018
13:49:27

Alexander
08.08.2018
13:49:44

Sheldhur
08.08.2018
13:50:09
а если у вас 100500 сервисов и большая команда, то всё остальное тебя волновать не должно, да и не уследишь за всеми изменениями
и как правило ты знаешь только те сервисы с которыми общается твой

Andrei
08.08.2018
13:50:56

Alexey
08.08.2018
13:51:06
по Object.keys?
Object.keys(result.data.data)[0] вот так получаю первый пришедший ID, а как бы красиво упростить это?
мне нужно знать пришел ли хоть один id

Alexander
08.08.2018
13:52:29
Object.keys(result.data.data).length>0
?

Alexey
08.08.2018
13:52:47

Kendr
08.08.2018
13:53:01
result.data.data.length ?
Зач обжект кийс

Alexander
08.08.2018
13:53:41
Б

Kendr
08.08.2018
13:53:44
Хотя не не а

Roman
08.08.2018
13:54:26

Google

Andrei
08.08.2018
13:55:32

Roman
08.08.2018
13:56:20
никогда не видел таких систем. а вы?

Andrei
08.08.2018
13:56:39
каких именно?

Roman
08.08.2018
13:57:05
где в основе работы некие эвенты, на которые кто хочет подписывается

Sheldhur
08.08.2018
13:57:10
https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D0%B9%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0

Alexander
08.08.2018
13:57:18
эхххх еда

Andrei
08.08.2018
13:57:21

Roman
08.08.2018
13:58:45

Sheldhur
08.08.2018
13:59:06
а в чём разница?

Roman
08.08.2018
13:59:12
EDA - это архитектура монолита. в ноде для этого все есть

Andrew
08.08.2018
13:59:13
слушайте. elasticsearch-js, сам сервак за http авторизацией, конфиг корректный, пологировал, в сам запрос заголовок Authorization попадает, ключ корректный, но сервак отвечает 401. при этом из postman/curl/браузера работает.
в чем подводный камень?

Sheldhur
08.08.2018
14:00:01
шта?

Sheldhur
08.08.2018
14:00:21
а очереди это что по твоему?

Roman
08.08.2018
14:00:44
очереди - это не архитектура

Sheldhur
08.08.2018
14:01:08
?

Roman
08.08.2018
14:01:14
их готовят с помощью чего то другого. софта, который работает и настраивает взаимодействие
очередь - это инструмент

Andrei
08.08.2018
14:07:08
EDA - это архитектура монолита. в ноде для этого все есть
ну сейчас очень многие пишут в облаке. не знаю уж как в России, в Европе это практически стандарт для любых новых корпоративных разработок. а в облаке всё приспособлено для микросервисов и следующей их ступени - функций. Микросервисы и функции опять же в моде последние пару лет, так что их часто используют. А для того чтобы их связывать друг с другом, прямой вызов обычно недостаточно гибок, поэтому чаще всего через очередь либо event grid.
Я много раз видел и принимал участие в разработке систем где активно используется event grid в сочетании с микросервисами и функциями

Roman
08.08.2018
14:08:56

Google

Andrei
08.08.2018
14:10:21
ну я объяснял вверху, таких подписок может быть несколько сотен, и они не указывают на конкретный код, нужно еще потом открыть соответственный проект, endpoint найти и т.д.
это очень медленно

Roman
08.08.2018
14:10:45
плохая архитектура значит

Andrei
08.08.2018
14:10:57
интересный вывод)

Sheldhur
08.08.2018
14:11:21
meh

Roman
08.08.2018
14:13:09
если у вас сотни подписок, где не разберешься, что и кто обрабатывает, первый признак, что пора посмотреть на свой проект целиком и отрефакторить

Andrei
08.08.2018
14:13:57
такие проекты уже не рефакторятся :)

Roman
08.08.2018
14:14:53
первый пример успешного рефакторинга, который приходит в голову - netflix. вряд ли ваш проект больше

Admin
ERROR: S client not available

Andrei
08.08.2018
14:21:47
первый пример успешного рефакторинга, который приходит в голову - netflix. вряд ли ваш проект больше
ну нетфликс это продукт у которого дохрена денег. многие большие продукты делали большие рефакторинги, причем у них были для этого весомые предпосылки. увеличение трафика и т.д.
но и затраты на такие рефакторинги были сумасшедшие.
я работаю в корпоративной сфере, там ситуация другая. увеличения трафика не предвидится, упор на бизнес функционал, ну и также нет бесконечного потока бабла от Netflix подписчиков, чтобы можно было 3+ лет сидеть рефакторить...
и я убежден что таких продуктов как нетфликс, единицы

Alexander
08.08.2018
14:24:42

Roman
08.08.2018
14:24:45
Понятно. Зато терпение тренируется, пока разбираешься.

Andrei
08.08.2018
14:28:28
и мне кажется 200 подписок это совсем не много в мире микросервисов, а уж тем более в функциях. самих микросервисов куча, вот и эвентов тоже куча.
вот один из текущих проектов, посмотрел ради интереса - 30 функций и 40 подписок в общем event grid-е. И это всего лишь инфраструктурный проект, там event grid в основном выполняет транспортную функцию

Roman
08.08.2018
14:36:06

Andrei
08.08.2018
14:36:46
вот именно, кто как разобьёт, кто как придумает какие должны быть подписки. так что 200 это я считаю не очень много
если честно уже даже в 40 ногу сломишь

Roman
08.08.2018
14:39:07

Google

Andrei
08.08.2018
14:40:15
это в Azure, я хз насчет aws

Yaroslav
08.08.2018
14:40:18
заменяете ли вы switch на обьект?

Andrei
08.08.2018
14:40:35

Roman
08.08.2018
14:42:43
да, как таблица
Понятно. представляю, насколько это неудобно переносить логику графа в таблицу
Может, вы не по назначению его используете
Я работал с aws sqs и rabbitmq. 40 сообщений с разными топиками (можно их и эвентами назвать) не проблема

Andrei
08.08.2018
14:48:10
и самое классное - это full-stack intellisense с этой точки зрения

Alexander
08.08.2018
14:58:31

Yaroslav
08.08.2018
14:58:44
Да
какие преймущества ты видиш?

Roman
08.08.2018
14:59:00

Alexander
08.08.2018
14:59:07

Andrei
08.08.2018
14:59:51

Sergey
08.08.2018
14:59:53

Alexander
08.08.2018
15:00:58

Yaroslav
08.08.2018
15:01:10
там же хеш таблица
произодительность выше у обьекта, чем у switch case
я сейчас изучал тему, вот пункты, которые собрал:
1. производительность
2. дроби
3. возможность вызова в функциональном стиле: this.switch[case]
4. контекст
5. падения
6. let, const при создании переменной, не способность сделать return
7. процедурный поток выполнения
8. обязаность писать break, синтаксическая конструкция усложнена
9. обазательность сравнения ===, в случаях с регулярками возникают проблемы
https://toddmotto.com/deprecating-the-switch-statement-for-object-literals/
https://medium.com/chrisburgin/rewriting-javascript-replacing-the-switch-statement-cfff707cf045
http://www.nicoespeon.com/en/2015/01/oop-revisited-switch-in-js/
https://stackoverflow.com/questions/3491094/problem-with-javascript-switch-statement

Sergey
08.08.2018
15:01:41
я подумал вы чисто про синтаксис