Должен ли я использовать Rails для согласованности? (для проекта ETL) - PullRequest
2 голосов
/ 03 марта 2020

КОНТЕКСТ

  • Я новичок в Ruby и всем этом джазе, но я не новичок в dev.
  • Я взяв на себя проект, основанный на 2 репозиториях rails / puma для веб-сайтов и API.
  • Я создаю новый репозиторий для приложения обработки внутренних данных, используя Kiba , который будет выполняться по расписанию. jobs.
  • Кроме того, позже ко мне присоединятся другие разработчики, так что я хотел бы сделать что-то удобное для разработки.

МОЙ ВОПРОС: Должен Я использую Rails в этом проекте ETL?

Использование этого означает, что мы можем применять ту же структуру папок, что и другие репозитории, использовать RSpe c все то же самое и c. Мне также показалось, что Rails меняет способ, которым классы, такие как Ha sh act.

В то же время кажется, что это вносит ненужную сложность в проект, который будет работать на CLI и может состоять только из дюжины файлов.

Ответы [ 2 ]

2 голосов
/ 03 марта 2020

Автор Киба здесь! Это важный вопрос, спасибо, что задали его!

МОЙ ВОПРОС: Должен ли я использовать Rails в этом проекте ETL?

По умолчанию я бы рекомендовал начать с отдельный проект (например, своего рода «макро-сервисный» подход), если у вас нет важных вещей (кроме настройки RSpe c и ENV) для повторного использования из приложения Rails.

Если есть важная ожидаемая связь между приложением и ETL (например, под «запланированными заданиями» вы подразумеваете задания, запущенные через Sidekiq, чтобы реагировать на события, или у вас есть классы, совместно используемые двумя проектами), затем вы можете поместить ETL в etl например, подпапка вашего Rails-приложения, чтобы обеспечить немного разделения и оставить возможность разделить код позже, если он станет лучшим путем (это промежуточный вариант, который я использую в некоторых проектах).

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

* 101 4 * Использование этого означает, что мы можем применить ту же структуру папок, что и другие репозитории, использовать RSpe c все то же самое и т.д. c.

Вы можете использовать RSpe c или minitest из также выделенный ETL (чистый Ruby) проект, введите понятие ETL_ENV (development, test, production), создайте свою собственную конфигурацию на основе ENV (или на основе файлов) с помощью dotenv или аналогичной, и если вам это нужно, также поддержите задания cron.

Чистые Ruby проекты могут быть структурированы так же, как приложение на Rails, и обычно меньше волхвов c (более явное), что полезно.

Мне также показалось, что Rails меняет способ, которым классы наподобие Ha sh действуют.

Я бы действительно рекомендовал использовать "явный" подход относительно зависимости от этого. , Сегодня я предпочитаю выбирать нужные расширения в верхней части каждого файла (как описано здесь ).

Последнее слово, вы можете проверить ETL-конвейеры Kiba так же, как и ваши отдельные компоненты ETL, и я бы порекомендовал это сделать (об этом я расскажу в следующем сообщении в блоге), поскольку это помогает легко перемещать и обновлять Ruby и в целом легко масштабировать команду разработчиков. (CI + тесты).

Я надеюсь, что это даст вам достаточное руководство для принятия решения по этому вопросу, если это не так, пожалуйста, закомментируйте!

0 голосов
/ 03 марта 2020

С моей точки зрения, использование Rails для ETL-проектов - это накладные расходы. Взгляните на dry -рб. Используя https://dry-rb.org/gems/dry-system/0.12/, вы можете создать небольшое приложение для обработки данных. Также есть гем для сборки CLI https://dry-rb.org/gems/dry-cli/0.4/

Вот список всех dry драгоценных камней https://dry-rb.org/gems/

...