
Alexander
13.07.2017
11:37:21
Кто то умеет для webdriver io дампить сессию, а потом переиспользовать ее?

Charles
13.07.2017
11:42:56
Ребят, подскажите как архитектурненько сделать. Есть модуль который работает с superagent'ом и шлет данные от микросервиса на другие сервисы через кролика. Проблема в том что кролик (именно он, сервисы все за ним, напрямую я к ним не обращаюсь и не планируется) может лечь. Пока что гипотетически. Я собираюсь под это дело впаять в сервис MQ на редиске. Вопрос - оставлять один модуль который шлет данные на кролика и впаять MQ прямо туда (назовем его условно client.js), или сделать под MQ отдельный модуль и общаться с ним через шину?
если что непонятно сформулировал, скажите - я поясню
а, пока писал, сходу возник другой вопрос - там еще ELK стэк, в LogStash тоже через именутый MQ все складывать для красоты картины?

Google

Anton
13.07.2017
11:50:07


Charles
13.07.2017
11:50:38
Ща поясню, почти
-> 1. какой-либо модуль в моем сервисе отправляет задачу на отправку в модуль в котором есть require('superagent')
-> 2. Superagent отправляет это в RabbitMQ на другом хосте
-> 3. Другой любой сервис принимает это
я хочу вкорячить между 1 и 2 свой локальный MQ
на случай если лёг Rabbit
модуль который собирает сообщения и делает прочую хрень и отправляет все с помощью суперагента - client.js
так понятнее?)
я б схемку нафигачил но долго
надо было наверное это написать еще - все модули общаются через pub/sub

Anton
13.07.2017
11:57:54
ну так понятнее, некий буфер на случай пиздеца со стороны mq, чтобы не проебать сообщения. почему бы и нет, если нет доверия к сторонней системе, но в идеале коенчо сторону MQ попинать, чтобы гарантировали отказоустойчивоть

Charles
13.07.2017
11:58:48
да, все так - но вопрос в силе) стоит ли делать отдельный модуль чисто для работы с MQ или вкорячить MQ прям в client.js?
условно - require('bull') (bee/que/какой угодно mq пакет) прям в client.js и там всю логику или все таки отдельно*
вариант с вкорячиванием прямо в client.js сильно нарушает SRP... но блин отдельный модуль херачить чисто для MQ мне почему-то кажется оверхэдом

Google

Дмитрий
13.07.2017
12:02:33
У тебя всё в одном файле?

Anton
13.07.2017
12:02:54
по идее можно вообще без mq обойтись доплнительной, например, при недоступности ты складываешь сообщения в базу/кеш (самый простой вариант во встроенную, чтобы отдельно не запускат ьвсякие редисы), а как только коннект появился - достаешь их оттуда.

Дмитрий
13.07.2017
12:04:23
Базу тоже можно самому написать

Charles
13.07.2017
12:04:25

Дмитрий
13.07.2017
12:04:31
И tcp

Charles
13.07.2017
12:04:57
ну так у меня MQ в редиску в любом случае все сливает, и в редиске стоит та опция чтоб все персистилось

Anton
13.07.2017
12:10:33
ну и сливай это в редиску тогда, дополнительный сервис для этого городить, имхо, не стоит. просто доработать существующий и вынести в конфиг какую-нибудь настройку по вкл/выкл, подсистемы хранения сообщений при недоступности mq

Charles
13.07.2017
12:24:40
ладно, по разному попробую

Konstantin
13.07.2017
13:22:29
Вроде бы bull умеет накапливать очередь
Вопрос только насколько большой она может оказаться

Aleksandr
13.07.2017
13:23:43

Alexander
13.07.2017
13:32:30
народ, согласно 12 factor app нужно различные конфижные данные хранить в переменных окружения, какой тут best practice может быть? не пилить же их в package.json перед командами запуска

Charles
13.07.2017
13:39:33
я в ENV запихал. про best practice тож послушаю, интересно

Andrey
13.07.2017
13:41:17
> народ, согласно 12 factor app нужно различные конфижные данные хранить в переменных окружения
во первых, 12fa это не стандарт в целом - это лишь имплементация best practices от heroku заточеная под heroku
то есть те же самые ENV... ну вроде бы и норм, но как-то прям в переменных... просто в heroku по другому нельзя :)
во вторых, 12fa в целом неплох для сервера но тут зависит от того что и КАК ты деплоишь: кластер ли это kubernetes/swarm, локальное приложение на юникс-хостинге, или еще что

Alexander
13.07.2017
13:43:08
да хз, обычный nodejs (koa) сервер для АPI, про кластеризацию пока и мыслей нету

Andrey
13.07.2017
13:43:10
лично я (так, для инфы) обычно юзаю модуль https://www.npmjs.com/package/config
в проекте что-нибудь типа config/default.js:
module.exports = {
someitem: 'qwe',
someitem2: process.env.SOME_ITEM2 || 'default'
}
:)

Charles
13.07.2017
13:44:06
смотри как у тебя развертывание происходит
какие-то переменные необходимые для сборки храни в переменных окружения, если что-то надо поменять уже в рантайме - делай config.json какой-нибудь например. ну... по крайней мере у меня так)

Andrey
13.07.2017
13:45:14
локально подсовываю .env в рут-директории, в продакшне https://github.com/deis/workflow (кубернетес-фигня), в тестах docker-compose

Aleksandr
13.07.2017
13:45:47

Google

Admin
ERROR: S client not available

Andrey
13.07.2017
13:47:10
собственно, я че зашел на этот замечательный канал (сори за оффтоп :): кто-нибудь играется с amqp ha кластерами и подключением к ним из под ноды? у меня куча вопросов почему все дрова amqp такие старые и не умеют файловер/рекавери нормально, и поиск того кто нашел ответы :)
эм, ну ладно, вероятно я немного не в тему топика... сорян если помешал, если у кого есть опыт то пишите в приват (с канала выйду чтоб в телефоне спама много не было, приятно было познакомиться :)

Charles
13.07.2017
13:54:15
тут многие спят прост

Stepan
13.07.2017
13:57:34
а nodemon можно и на продакшене использовать или не надо? Он какой то оверхед дает? В докере себе для разработки его прекрутил, стоит ли заморачиватся как то 2 версии делать для продакшена и разработки или и так сойдет?

я люблю грин дей
13.07.2017
13:59:24
они тоже могут перезапустить упавшее
но ещё много чего

Charles
13.07.2017
14:01:26
перезапустить упавшее звучит как аварийно передёрнуть:D

Stepan
13.07.2017
14:02:07
да мне перегружать не надо после падения (докер это сам сделает если че) я пока для целей чтоб не перегружать в ручную каждый раз когда поменял что то, во время разработки

Charles
13.07.2017
14:09:04
да для разработки вообще пофиг, бери что понравится

я люблю грин дей
13.07.2017
14:11:08

Charles
13.07.2017
14:11:26
"я пока для целей чтоб не перегружать в ручную каждый раз когда поменял что то, во время разработки"

я люблю грин дей
13.07.2017
14:11:34
я запутался кароч(

Charles
13.07.2017
14:11:39
я запутался. истина где-то там
вот-вот

Stepan
13.07.2017
14:20:39
докер контейнер общий для разработки и продакшена, стоит ли заморачиватся по разному запускать в продакшене и разработке или пофиг если в продакшене будет через nodemon тоже

Sergey
13.07.2017
14:25:48
Как вообще вам докер? Нравится?
Как то пробовал, мне чет не зашло