작성 내용 및 요약
- 도커, 컨테이너, 이미지의 기본 개념
- 도커(Docker): APP을 독립적 환경에서 실행시키기 위한 경량화된 가상화 서버
- 컨테이너(Container): 각각의 APP
- Airflow 작업 플로우
1. 기본 개념
도커(Docker)란?
- 컨테이너화 플랫폼으로 APP을 독립적 환경에서 실행시킬 수 있는 기술
- 경량화된 가상화 서버를 의미하며, Airflow 설치 방법 중 하나!
- 이때, 각각의 App을 컨테이너(Container) 라고 함
컨테이너(Container) 가상화란?
- Host OS 커널을 사용하여 독립적인 여러 개의 컨테이너를 실행
- 이는 기존 가상화에 비해 더 가볍고 효율적
이미지(Image)란?
- 컨테이너를 실행하기 위한 템플릿(Template)
- 객체 지향 프로그래밍 내 Class와 같이 이미지(Image)는 컨테니어 프로세스 실행 환경을 결정함
- 그러나, 컨테이너 이미지 내에서 프로세스가 실행되지는 않음
docker-compose란?
- 도커 내 여러 개의 컨테이너 설정을 한 번에 관리하기 위한 도커 확장 기술
- Airflow 설치를 위한 도커 컨테이너 설정 내용도 포함!
2. 작동 원리
목표
로컬 환경에서 만든 DAG를 가상 서버의 컨테이너(Container)까지 배포
필수 라이브러리
airflow.models.dag
: DAG 작성을 위함datetime
,pendulum
: Airflow 시간 설정을 위함
작성 방법 예시
with DAG(
dag_id = "DAG_name",
schedule = "* * * * *",
start_date = pendulum.datetime(2024,1,1,tz="Asia/Seoul"),
catchup = False,
dagrun_timeout = datetime.timedelta(),
tags = ["tag_name1", "tag_name2"],
params = {"key1":"value1"}
) as dag:
파라미터 설명
dag_id
: Airflow UI 내 DAG 이름을 의미하며, 일반적으로 Python 파일명과 DAG 명과 일치시킴schedule
: 실행 주기를 설정하며, 순서는 분, 시, 일, 월, 요일- 예) 매일 0시 0분 실행:
"0 0 * * * "
- 예) 매일 0시 0분 실행:
start_date
: DAG 시작 시간 설정을 의미하며, 표준시간으로 한국 시간대(tz="Asia/Seoul"
)를 설정catchup
: DAG 시작 시간 이전인 누락 구간 작업 실행 여부를 의미하며, 일반적으로 누락 구간을 작업하지 않는False
를 지정함dagrun_timeout
: DAG 실행 제한 시간을 의미하며, 설정한 시간 보다 오래 작동하면 멈춤tags
: Airflow UI 내 태그 이름 설정params
: Task에 공통적으로 들어가는 변수 목록
참고사이트