Size: a a a

2020 July 28

EB

Eugene Burmakin in Random Ruby Chat
на сервак приходит месседж, в нём и текст с остальными параметрами
источник

EB

Eugene Burmakin in Random Ruby Chat
что за вопрос)
источник

A

Anton in Random Ruby Chat
сап чатик, я упоролся и хочу каким-то образом в rails app трекать в миграциях не только изменения структуры и данных БД, но и вести там же изменения для Kafka кластера (создание топиков, миграция avro схем итд) чтобы код со стейтом кафки был в синхроне.
Есть тут те кто задавался подобным вопросом, и если есть - как решали? Может, я не вижу каких-то очевидных решений на поверхности?

Условно, вот представьте что у меня в фича ветке есть код который будет продюсером неких данных в Kafka, с ним связано выделение отдельного топика и создание avro схемы для валидации отправляемых сообщений. Я хочу сделать так чтобы в коде фича бранче были миграции на создание топика и схемы.
источник

A

Anton in Random Ruby Chat
И чтобы я потом мог в том жe CircleCI или каком-нибудь Gitlab CI поднять себе кафка брокер и schema registry в докер контейнерах, прогнать миграции и например запустить тестики на готовой инфраструктуре
источник

SP

Sergey Pustovalov in Random Ruby Chat
Anton
сап чатик, я упоролся и хочу каким-то образом в rails app трекать в миграциях не только изменения структуры и данных БД, но и вести там же изменения для Kafka кластера (создание топиков, миграция avro схем итд) чтобы код со стейтом кафки был в синхроне.
Есть тут те кто задавался подобным вопросом, и если есть - как решали? Может, я не вижу каких-то очевидных решений на поверхности?

Условно, вот представьте что у меня в фича ветке есть код который будет продюсером неких данных в Kafka, с ним связано выделение отдельного топика и создание avro схемы для валидации отправляемых сообщений. Я хочу сделать так чтобы в коде фича бранче были миграции на создание топика и схемы.
# config/initializers/kafka_setup.rb
create_topic ...
check_schema_exists
....


можно так
источник

SP

Sergey Pustovalov in Random Ruby Chat
т.е. в initializers кладешь скрипт который проверяет что топики есть и создает если надо и avro схемы проверяет и создает если что
источник

AD

Anton Davydov in Random Ruby Chat
Anton
сап чатик, я упоролся и хочу каким-то образом в rails app трекать в миграциях не только изменения структуры и данных БД, но и вести там же изменения для Kafka кластера (создание топиков, миграция avro схем итд) чтобы код со стейтом кафки был в синхроне.
Есть тут те кто задавался подобным вопросом, и если есть - как решали? Может, я не вижу каких-то очевидных решений на поверхности?

Условно, вот представьте что у меня в фича ветке есть код который будет продюсером неких данных в Kafka, с ним связано выделение отдельного топика и создание avro схемы для валидации отправляемых сообщений. Я хочу сделать так чтобы в коде фича бранче были миграции на создание топика и схемы.
А почему именно в миграциях хочешь? В топтале через терраформ это спокойно запугивали в отдельном репозитории и все довольны были (у тебя же больше одного сервиса, если Кафка есть, следовательно что бы изменить кафку придётся ждать выкатку сервиса в продакшен, а это привязка к релизому циклу и прочие радости жизни)
источник

A

Anton in Random Ruby Chat
Anton Davydov
А почему именно в миграциях хочешь? В топтале через терраформ это спокойно запугивали в отдельном репозитории и все довольны были (у тебя же больше одного сервиса, если Кафка есть, следовательно что бы изменить кафку придётся ждать выкатку сервиса в продакшен, а это привязка к релизому циклу и прочие радости жизни)
да мне почему-то первое что пришло в голову это миграции внутри приложения ) Оно по сути является неким слоем абстракции для шины данных которое отвязывает остальных потребителей шины от необходимости с kafka взаимодействовать при pub сообщений. Там при публикации сообщений в шину навернута логика которая осуществляет мапинг между различными юнитами организации, которые публикуют данные. Поэтому с Kafka по сути один этот сервис общается и все топики, партишены и схемы там используются.
Terraform интересно, но у нас не AWS-based production а интранет компании, а мне почему-то казалось что терраформ с AWS только взаимодействует (но тут я с дивана ибо мало с ним работал)
источник

A

Anton in Random Ruby Chat
Sergey Pustovalov
# config/initializers/kafka_setup.rb
create_topic ...
check_schema_exists
....


можно так
вариант, но хотелось бы все же историю изменений в kafka отслеживать через миграции а не через git log
источник

A

Anton in Random Ruby Chat
если терраформ умеет работать с non-aws окружением, наверное это было бы идеально
источник

AD

Anton Davydov in Random Ruby Chat
Anton
да мне почему-то первое что пришло в голову это миграции внутри приложения ) Оно по сути является неким слоем абстракции для шины данных которое отвязывает остальных потребителей шины от необходимости с kafka взаимодействовать при pub сообщений. Там при публикации сообщений в шину навернута логика которая осуществляет мапинг между различными юнитами организации, которые публикуют данные. Поэтому с Kafka по сути один этот сервис общается и все топики, партишены и схемы там используются.
Terraform интересно, но у нас не AWS-based production а интранет компании, а мне почему-то казалось что терраформ с AWS только взаимодействует (но тут я с дивана ибо мало с ним работал)
Терраформ с чем угодно взаимодействует, я бы посоветовал все же отдельно держать конфиг к кафке, потом может больно выносить это будет
источник

AD

Anton Davydov in Random Ruby Chat
Anton
если терраформ умеет работать с non-aws окружением, наверное это было бы идеально
Думаю что умеет, гугловый и майкрафсофт клауды работают, чистое железо тоже
источник

NT

Nikolay Turnaviotov in Random Ruby Chat
Anton
если терраформ умеет работать с non-aws окружением, наверное это было бы идеально
vCloud умеет, наши игрались
источник

A

Anton in Random Ruby Chat
Спасибо, парни, пойду читать за терраформ
источник

M

Max in Random Ruby Chat
Посоны, а что нынче для организации ролей в Rails лаконично и топчик?
источник

A

Anton ♎️ in Random Ruby Chat
поле в БД?
источник

SP

Sergey Pustovalov in Random Ruby Chat
Anton ♎️
поле в БД?
так себе идея если несколько ролей у юзера может быть
источник

SP

Sergey Pustovalov in Random Ruby Chat
User has many roles
источник

SP

Sergey Pustovalov in Random Ruby Chat
но вопрос был скорее про авторизацию, тогда pundit или action_policy от марсиан
источник

M

Max in Random Ruby Chat
Просто что-то умное хотелось, чтоб с Overcoming Primitive Obsession (https://blog.dnsimple.com/2016/10/overcoming-primitive-obsession/) но при этом лакончное.
источник