작성 내용 및 요약

  1. 도커, 컨테이너, 이미지의 기본 개념
  2. 도커(Docker): APP을 독립적 환경에서 실행시키기 위한 경량화된 가상화 서버
  3. 컨테이너(Container): 각각의 APP
  4. 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:

파라미터 설명

  1. dag_id: Airflow UI 내 DAG 이름을 의미하며, 일반적으로 Python 파일명과 DAG 명과 일치시킴
  2. schedule: 실행 주기를 설정하며, 순서는 분, 시, 일, 월, 요일
    1. 예) 매일 0시 0분 실행: "0 0 * * * "
  3. start_date: DAG 시작 시간 설정을 의미하며, 표준시간으로 한국 시간대(tz="Asia/Seoul")를 설정
  4. catchup: DAG 시작 시간 이전인 누락 구간 작업 실행 여부를 의미하며, 일반적으로 누락 구간을 작업하지 않는 False를 지정함
  5. dagrun_timeout: DAG 실행 제한 시간을 의미하며, 설정한 시간 보다 오래 작동하면 멈춤
  6. tags: Airflow UI 내 태그 이름 설정
  7. params: Task에 공통적으로 들어가는 변수 목록

참고사이트