[Airflow] 데이터 파이프라인이란 ?

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

안녕하세요 !

오늘은 데이터 파이프라인에 대해서 소개해보려고 합니다.


데이터 파이프라인

먼저 데이터 파이프라인은 원하는 결과를 얻기 위해 실행되는 여러 태스크나 동작으로 구성된 것을 말합니다.

예를 들어, 날씨를 알려주는 대시보드를 구축한다고 하면 아래와 같은 태스크를 가질 수 있습니다.

  1. 날씨 API를 통해 일기 예보 데이터를 가져옴
  2. 서비스 목적에 맞도록 데이터 정제 또는 변환
  3. 변환된 데이터를 날씨 대시보드로 전송

원하는 결과를 얻기 위해 위의 태스크들은 정해진 순서대로 진행되어야 합니다.


데이터 파이프라인 그래프

태스크 간의 의존성은 간단히 말하자면 태스크 간 순서라고 할 수 있습니다.

이런 태스크 간의 의존성을 명확하게 확인하기 위해서는 데이터 파이프라인을 그래프로 표현하는 것입니다.
태스크는 노드로 표시되며 의존성 (순서)는 화살표로 표현이 됩니다. 이런 그래프를 방향성 그래프라고 하며 순환까지 안한다고 하면 방향성 비순환 그래프라고 합니다.

위 예시의 데이터 파이프라인을 그래프로 나타내면 아래와 같습니다.

위 사진과 같이 그래프를 사용하면 태스크를 실행하는 순서를 명확하게 알 수 있습니다.


그럼 만약 방향성 비순환 그래프가 아니라 방향성 순환 그래프를 사용하면 어떻게 될까요 ?

방향성 순환 그래프이라 가정하고 아래처럼 그려봤습니다.

아까 설명했듯이 각 태스크는 정해진 순서대로 진행되어야 합니다. 태스크 C에서 B의 순환이 없다면 태스크 B가 완료된 후에 태스크 C가 실행됩니다. 하지만 위와 같은 그래프의 경우
태스크 C가 완료된 후에도 태스크 2가 실행되기 때문에 순환 의존성 문제가 생길 수 있습니다. 이런 논리적 오류가 발생하면 교착 상태인 Deadlock으로 이어지고 태스크 B와 태스크 C 둘 다 실행될 수 없기 때문에 그래프가 동작하지 않습니다.


그래프 파이프라인 장점

그래프 파이프라인의 장점에 대해서 소개해보겠습니다.

첫 번째 장점은 그래프 파이프라인을 사용하게 되면 파이프라인을 작은 점진적인 태스크로 명확하게 분리할 수 있다는 점입니다.

그래프 말고 스크립트로 파이프라인을 구성하게 되면 전체 작업을 하나로 봅니다. 그와 반해 그래프는 파이프라인을 작은 점진적인 태스크로 명확하게 분리합니다.

아래 사진을 보면 직관적으로 이해할 수 있습니다.


두 번째 장점은 그래프 파이프라인을 사용하게 되면 실패한 태스크만 재실행할 수 있어 효율적이다는 점입니다.

아래 사진을 들어 설명해보겠습니다.

스크립트를 사용했을 경우 전체 과정이 포함된 태스크 1이 실패하면 전체 과정을 처음부터 실행해야합니다. 하지만 그래프 같은 경우에는 태스크 1은 통과했고 태스크 2는 실패했으니 실패한 태스크 2부터 실행하면 됩니다.


세 번째 장점은 태스크를 병렬로 실행하여 가용 컴퓨팅 리소스를 더 효율적으로 사용할 수 있다는 점입니다.

우산 판매와 날씨 변화 패턴을 연관시켜 머신러닝 모델을 만드는 데이터 파이프라인을 구현한다고 가정하겠습니다. 이 때 아래와 같은 태스크들이 나오며 그래프로도 정리할 수 있습니다.

1-1. 판매 데이터 추출
1-2. 판매 데이터 정제 및 변환
2-1. 날씨 데이터 추출
2-2. 날씨 데이터 정제 및 변환
3. 판매 및 날씨 데이터 세트를 결합하여 새로운 데이터 세트 생성
4. 생성된 데이터 세트를 이용해 머신러닝 모델 훈련
5. 머신러닝 모델을 배포하기


위 사진을 보면 날씨, 판매 데이터를 가져오고 정제 및 변환하는 부분이 병렬적으로 실행된 것을 볼 수 있습니다. 이는 서로 다른 데이터 세트를 포함하기 때문에 독립적으로 구성될 수 있는 것입니다. 결국 데이터를 추출, 정제, 변환하는 과정은 똑같지만 데이터 세트가 다르기 때문에 병렬적으로 구성할 수 있는 것입니다.

이렇게 병렬적으로 실행하게 되면 순차적으로 실행하는 것보다 전체 파이프 라인 실행 시간을 줄일 수 있고 컴퓨팅 리소스 또한 더 효율적으로 사용할 수 있습니다.

profile
말하는 감자에서 개발자로 ( ´͈ ᵕ `͈ )◞♡

0개의 댓글