Rails와 Digdag를 연결하는 작은 라이브러리를 만들었습니다.

2162 단어 railsdigdag

이게 뭐야?



Rails와 Digdag를 연결하는 작은 라이브러리를 만들었습니다.
이제 "mogura "라이브러리를 사용할 수 있습니다.

이것은 무엇을 위해 사용됩니까?



Rake 작업은 Rails에서 배치를 관리하는 방법입니다.
그러나 일괄 처리는 코드베이스를 부풀리고 운영 비용을 증가시키는 경향이 있습니다.

경우에 따라 Airflow와 같은 전문 Python ETL 도구를 도입하는 것이 학습/구축/운영/비용 또는 인력 채용에 걸림돌이 될 수 있습니다.
또한 Rake 작업에 포함된 Rails 관련 도메인 논리를 Python의 마이크로서비스로 다시 작성하는 것은 현실적인 옵션이 아닌 경우가 많습니다.
Rails 애플리케이션 내에 워크플로 엔진을 포함하라는 요구가 있을 수 있습니다.

저는 워크플로 엔진의 요구 사항을 충족하면서 Rails 애플리케이션의 도메인 논리를 사용하는 방법을 찾고 있었습니다.
그리고 Rails와 Digdag를 연결하는 작은 라이브러리를 만드는 옵션을 생각해 냈습니다.

용법



Rails 프로젝트 Gemfile에 다음을 추가하고 bundle install
gem 'mogura'


라이브러리가 설치되면 Rails 프로젝트의 루트 디렉토리에서 다음 명령을 시도하십시오.

$ bundle exec mogura help
Commands:
  mogura help [COMMAND] # Describe available commands or one specific command
  mogura init # Initialize Digdag files
  mogura push # Push Digdag workflows
  mogura version # Prints version

bundle exec mogura init는 Rails 프로젝트에 다음 파일을 생성합니다.

RAILS_ROOT/config/digdag/sample.dig
RAILS_ROOT/app/dags/sample_dag.rb



_export:
  rb:
    require: {{ RAILS_ROOT }}/config/environment
+run:
  rb>: SampleDag.run



class SampleDag
  def run
    puts "Hello Rails #{Rails.env}"
  end
end


명령bundle exec mogura push은 Digdag에 등록sample.dig합니다.
Digdag 내부sample.dig에서 Rails 환경을 로드하면 작업 흐름에서 Rails의 도메인 로직을 호출할 수 있습니다.

읽어 주셔서 감사합니다!



현재는 하나의 Digdag 프로젝트만 워크플로로 등록할 수 있지만 여러 개의 Digdag 프로젝트를 등록할 수 있으면 더 좋을 것 같습니다.
또한 이 라이브러리는 현재 CLI에서만 Digdag 작업을 허용하지만 Rails 애플리케이션의 도메인 로직에서 워크플로를 등록하고 편집할 수 있기를 바랍니다.
그리고 저는 이 라이브러리에 대한 피드백이나 기여를 적극적으로 찾고 있습니다. 자유롭게 추가할 새로운 기능 아이디어가 있으세요! :)

좋은 웹페이지 즐겨찾기