Notice
Recent Posts
Recent Comments
Link
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

파이썬쟁이

데이터 수집 파이프 라인에 Airflow 끼얹기 1 본문

PYTHON/Airflow

데이터 수집 파이프 라인에 Airflow 끼얹기 1

bhnvx 2025. 4. 29. 15:55

현재 사내 프로젝트에서는 각 매체의 광고 데이터를 수집하는 프로세스가 돌고 있다.

예를 들자면 위처럼 Django crontab으로 매일 특정 시간에 DB를 조회하여, 필터가 된 유저들에 대한 액션을

SQS로 보내고, 람다로 해당 작업들을 수행하여 DB의 특정 테이블에 적재하는 방식으로 진행됐다.

 

위 프로세스로 개선하기 전엔 대략 300분이라는 수집 시간이 걸렸던 것에 비하면,

개선 후 30분이라는 시간에 2000건의 작업이 모두 완료됐으므로 좋은 플로우가 아닐 수 없었다.

 

하지만 ...

 

ASANA 일일 업무 보고 중 ...

 

위 사진은 일일 업무 보고 중 파악한 현상에 대해 기술해놓은 것이다.

현재는 약 2000건의 작업이 하루마다 돌고 있는데, 유저의 증가에 따라 비용이 증가될 수 있다는 것이 문제로 다가왔다.

 

무수히 늘어나는 요금의 향연

 

확인해보니, 생각보다 더 많이 청구되고 있는 것을 확인했다.

람다 비용이 6배 이상 뛴 이유는 3월엔 람다 실행 시간이 240,000sec인데 반해 이번달은 1,600,000sec이었다.

그래서 ...

 

현재 가지고 있는 프로세스를 유지하고, 비용을 줄일 수 있는 방법에 대해서 찾아보다가

Airflow가 가장 적합하지 않을까 라고 생각이 됐다.

 

1. Airflow 시작하기

먼저, https://airflow.apache.org/docs/apache-airflow/3.0.0/docker-compose.yaml 의 내용을 모두 복사하여

프로젝트의 docker-compose.yaml 파일로 만들었다.

 

2. docker compose up

 

Airflow 3.0.0 부턴, jwt secret 을 설정하지 않으면 api 서버가 실행되지 않는 것 같으니 compose 파일에 설정해주었다.

 

 

3. api 서버 접속

성공적으로 이미지 컨테이너가 띄워졌다면 http://127.0.0.1:8000/ 주소로 접속시 아래와 같은 화면을 볼 수 있다.

초기 계정 세팅은 id: airflow / pw: airflow

 

일단 이렇게 세팅을 해놓은 다음 Dag에 어떤 작업이나 스케줄러를 등록할지는 전략을 세워보기로 했다.