[Airflow] Task 간 의존성이란 ?

도덩이의 개발 일지·2024년 7월 7일
post-thumbnail

안녕하세요 !

오늘은 Airflow에서 Task 사이의 의존성에 대해서 포스팅을 하려고 합니다.


의존성

Airflow에서 Task 사이의 의존성은 바로 Task 간 순서라고 할 수 있습니다.

간단한 예시를 들어보자면 우리가 먹는 식사를 아침밥, 점심밥, 저녁밥이라고 할 때 아래와 같은 순서를 가지는 것을 의존성을 가진다고 할 수 있습니다.

아침밥 -> 점심밥 -> 저녁밥


기본 의존성 유형

의존성에도 다양한 유형이 존재합니다. 선형 의존성 유형, 팬인(Fan-in) 의존성 유형, 팬아웃(Fan-out) 의존성 유형 총 3가지 유형으로 이루어져있습니다.


선형 의존성 유형

선형 의존성 유형은 말 뜻과 같이 일직선으로 의존성을 표현할 수 있는 유형입니다.

이 유형의 DAG에서는 이전 태스크의 결과가 다음 태스크의 입력 값으로 사용되기 때문에 다음 태스크가 시작되기 전에 이전 태스크가 완료가 되어야합니다.

위에서 들었던 예시도 선형 의존성 유형이며 따로 분기 없이 아침밥이라는 Task 끝나면 점심밥이라는 Task 시작하고 그 다음 저녁밥이라는 Task를 시작합니다.

이걸 코드를 사용해서 나타내면 아래와 같이 표현할 수 있습니다.

아침밥 >> 점심밥 >> 저녁밥

선형 의존성 유형을 사용했을 때의 장점은 여러 태스크들의 순서가 명확하게 정의된다는 것입니다.


팬인(Fan-in) 의존성 유형

팬인 의존성 유형은 단일 다운스트림 태스크가 여러 업스트림 태스크에 의존성을 가지는 아래와 같은 구조를 말합니다.

예시로 날씨 데이터와 판매 데이터를 가져와 이 두 데이터를 조인하는 데이터베이스를 만드는 DAG가 있다고 하겠습니다.

날씨 데이터 가져오기, 판매 데이터 가져오기, 두 데이터를 조인하기 이런 식으로 Task를 3개로 나누고 이를 표현하면 아래와 같습니다.

날씨 데이터 가져오기, 판매 데이터 가져오기 Task들은 각각 데이터 조인하는 Task와 의존성을 가지지만 서로에게 의존성을 가지지 않으며 병렬적으로 실행합니다.

따라서 데이터 조인하는 하나의 다운스트림 태스크가 여러 업스트림 태스크에 의존성을 가져 팬인 의존성 유형의 DAG가 성립되는 것입니다.

위와 같은 의존성을 코드로 표현하면 다음과 같습니다.

[날씨 데이터, 판매 데이터] >> 데이터 조인

팬아웃(Fan-out) 의존성 유형

팬아웃 의존성 유형은 팬인 의존성 유형의 반대라고 생각하시면 됩니다.

팬아웃 의존성 유형은 단일 업스트림 태스크가 여러 다운스트림 태스크에 의존성을 가지는 아래와 같은 구조를 말합니다.

이런 의존성을 코드로 표현하면 다음과 같습니다.,

Task_1 >> [TASK_2, TASK_3]
profile
말하는 감자에서 개발자로 ( ´͈ ᵕ `͈ )◞♡

0개의 댓글