기류 대 대구 비교

Airflow를 대체할 더 간단한 워크플로우 스케줄러 개발을 목표로 Dagu이라는 OSS 워크플로우 스케줄러를 개발 중입니다.

Airflow는 몇 년 동안 인기 있는 도구였지만 Cron을 대체하기에는 과잉 솔루션입니다.

Dagu를 사용하면 Airflow보다 더 간단하게 DAG(워크플로)를 정의할 수 있으며 스케줄러로 필요한 모든 기능을 갖추고 있습니다.

이번 글에서는 Airflow에 비해 Dagu의 장점을 자세히 설명하고자 합니다.

기류 대비 다구의 장점



Dagu는 Airflow에 비해 다음과 같은 5가지 주요 장점이 있습니다.
  • 쉽게 설치(단일 바이너리, 다른 라이브러리에 대한 종속성 없음)
  • 쉽게 설정 및 실행(데이터베이스가 필요하지 않음)
  • 간단한 YAML 형식으로 DAG(워크플로) 정의
  • 기존 프로그램을 수정하지 않고 그대로 사용
  • Cron 표현식이 있는 일정

  • 1. 쉽게 설치



    Dagu를 설치하려면 바이너리를 설치하기만 하면 됩니다.

    brew install yohamta/tap/dagu
    

    brew를 사용할 수 없는 경우 다음 Bash 명령을 실행하여 현재 디렉터리에 Dagu를 설치할 수 있습니다.

    curl -L https://raw.githubusercontent.com/yohamta/dagu/main/scripts/downloader.sh | bash
    


    2. 간편한 설정 및 실행(데이터베이스가 필요하지 않음)



    Dagu를 실행하려면 dagu server 명령을 실행하기만 하면 됩니다.

    dagu server
    


    그런 다음 http://127.0.0.1:8080으로 이동하면 dagu의 웹 UI가 표시됩니다.



    데이터베이스 설치가 필요하지 않습니다!

    3. 간단한 YAML 형식으로 DAG(워크플로) 정의



    "hello world"및 "done!"을 출력하는 워크플로 로그에 대한 정의는 다음과 같이 간단하게 정의할 수 있습니다.

    steps:
      - name: "step 1"
        command: "echo Hello World"
      - name: "step 2" command: "echo done!
        command: "echo done!
        depends:
          - "step 1"
    




    Airflow는 Python 코드에서 워크플로를 정의합니다. 위와 동일한 워크플로를 다음과 같이 정의할 수 있습니다.

    동일한 DAG의 Airflow 버전

    from airflow import DAG
    from airflow.operators.bash import BashOperator
    dag = DAG(dag_id="hello_world_dag")
    task1 = BashOperator(
        task_id="hello_world",
        bash_command='echo Hello World',
        dag=dag)
    task2 = BashOperator(
        task_id="done",
        bash_command='echo done',
        dag=dag)
    task1 >> task2
    


    Airflow의 약점은 워크플로우가 무엇을 하는지 한눈에 이해하기 어렵다는 것입니다.

    4. 기존 프로그램을 수정하지 않고 그대로 사용



    Dagu 워크플로에서는 어떤 명령이든 그대로 쓸 수 있습니다. 그것에 대해 특별한 것은 없습니다.

    Cron에서 실행하던 프로그램이 있다면 Crontab에서 작성한 명령을 복사하여 YAML 파일에 붙여넣기만 하면 Dagu에서 워크플로우로 호출할 수 있습니다.

    기존 코드를 호출하기 위해 Python 코드를 작성하거나 Airflow와 관련하여 Python 코드로 다시 작성하는 수고를 할 필요가 없습니다.

    5. Cron 표현식으로 일정 잡기



    Dagu 워크플로 일정은 Cron 식으로 쉽게 설정할 수 있습니다. 다음과 같이 YAML 파일에 schedule를 작성하면 됩니다.

    schedule: "0 10 * * * *"
    steps:
      - name: step 1
        command: echo Hello World
    


    Dagu 스케줄러는 dagu scheduler 명령으로 호출할 수 있습니다. 실행하기만 하면 작업 흐름이 자동으로 일정을 따릅니다.

    dagu scheduler --dags=<directory>
    


    요약



    Dagu 스케줄러는 Airflow보다 설치가 쉽고 간단하고 짧은 YAML로 워크플로(또는 작업)를 구성할 수 있습니다.

    Cron에서 작업을 실행하는 경우 Airflow 또는 다른 워크플로 스케줄러를 설치할 때 고려해야 할 사항이 많습니다. 예를 들어 스케줄러용 데이터베이스를 배포하는 경우 단일 실패 지점이 되지 않도록 해당 데이터베이스를 중복으로 만들어야 합니다.

    Dagu의 가장 큰 장점은 아키텍처가 모두 파일 기반이기 때문에 데이터베이스에 의존하지 않기 때문에 설정이 쉽다는 것입니다.

    Dagu의 소스 코드 및 저장소



    Dagu는 Golang과 React로 개발된 오픈 소스 소프트웨어이며 지속적으로 개발되고 있습니다. 관심이 있으시면 원하는 방식으로 소프트웨어에 기여해 주십시오. 정말 환영합니다 :)

    https://github.com/yohamta/dagu

    좋은 웹페이지 즐겨찾기