알아볼 내용

  • Docker를 활용한 Airflow 실행
  • DAG 파일 예시

1. Airflow 실행하기 with Docker

Docker를 통해서 Local에서 간단하게 Airflow 환경을 구축할 수 있다
공식 documentation에서 친절하게 설명해주고 있기 때문에 쉽게 따라할 수 있다

# 1. docker-compose.yml 다운로드
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/3.0.6/docker-compose.yaml'
 
# 2. docker container와 연결할 폴더 생성
mkdir -p ./dags ./logs ./plugins ./config
 
# 3. .env 파일에 AIRFLOW_UID 세팅 (필수는 아님)
echo -e "AIRFLOW_UID=50000" > .env
 
# 4. 백그라운드로 airflow 실행
docker compose up -d

다음과 같이 모든 서비스가 ‘healthy’ 상태가 되면 정상적으로 동작한 것이다

그리고 http://localhost:8080로 접속해서 ID, PASSWORD 모두 airflow를 입력하면 UI를 확인할 수 있다

docker-compose.yml에서 ‘x-airflow-common’ 의 environment를 보면 AIRFLOW__CORE__LOAD_EXAMPLES 옵션의 기본값이 True이기 때문에 ‘Dags’를 클릭했을 때 예시 Dag가 많이 있을 것이다
필요없는 경우 False로 해놓는다

Docker 환경이 어떻게 구성되는지에 대한 내용은 2.10.5 버전이긴 하지만docker-compose.yml 의 내용을 정리한 을 참고하면 도움이 될 것이다


2. 간단한 DAG 파일 생성

DAG에 대한 자세한 설명은 추후에 알아보고 여기서는 간단하게 터미널에 “Hello”와 “Bye”를 출력하는 DAG 파일을 만들어보자

hello_bye.py
from datetime import timedelta
 
import pendulum
from airflow.operators.bash import BashOperator
from airflow.sdk import DAG
 
# 기본 인수 정의
default_args = {
    "owner": "airflow",  # Dag 소유자
    "depends_on_past": False,  # 이전 실행 결과에 의존할지 여부
    "email": ["tjdals4047@gmail.com"],  # 실행 실패 시 이메일 알림 수신자
    "email_on_failure": False,  # 실행 실패 시 이메일 알림 여부
    "email_on_retry": False,  # 실행 재시도 시 이메일 알림 여부
    "retries": 1,  # 실행 재시도 횟수
    "retry_delay": timedelta(minutes=5),  # 실행 재시도 딜레이
}
 
# DAG 정의
with DAG(
    dag_id="hello_bye_dag",
    default_args=default_args,
    description="터미널에 Hello와 Bye를 순차적으로 출력하는 DAG",
    schedule="0 0 * * *",  # 실행 주기 (매일 0시 0분)
    start_date=pendulum.datetime(2024, 1, 1, tz="UTC"),  # 실행 시작 일시
    catchup=False,  # 지난 실행 기록을 처리할지 여부
    tags=["example", "hello_bye"],  # DAG 태그
) as dag:
 
    print_hello = BashOperator(
        task_id="print_hello",
        bash_command="echo 'Hello'",
    )
 
    print_bye = BashOperator(
        task_id="print_bye",
        bash_command="echo 'Bye'",
    )
 
    # 태스크 의존성 설정
    print_hello >> print_bye

/dags 폴더에 hello_bye.py를 넣고 UI 에 접속하면 아래와 같이 새로운 DAG가 보인다
보이지 않을 경우, scan하는 시간이 필요하기 때문에 조금 기다려야한다

DAG 이름, Schedule, Tags 등의 정보를 확인할 수 있고 왼쪽의 버튼을 토글하면 DAG를 실행시킬 수 있다

실행시킨 후 DAG 이름을 클릭하면 각 Task 별로 성공, 실패 여부와 모든 history를 확인할 수 있다

각 Task를 클릭하고 Log를 확인하면 Hello, Bye가 출력된 것을 볼 수 있다