저희 회사의 문제점을 같이 해결해주시면 감사할 것 같습니다!

저희 회사에서는 Airflow를 활용해 데이터 파이프라인을 운영하고 있습니다.

현재 파이프라인은 크게 두 가지 흐름으로 나눌 수 있습니다

  1. 크롤링 데이터 파이프라인
  • 외부 웹/서비스에서 크롤링 → 데이터 전처리 → DB 적재 → 다른 팀에서 활용
  1. DB 기반 데이터 파이프라인
  • DB에서 데이터 수집 → 전처리 → 가공된 DB 적재 → 다른 팀에서 활용

자동화가 커지면서 몇 가지 문제를 겪고 있습니다.

  • DAG 파일이 많아지면서 구조화(폴더링, 모듈화) 관리가 어려움
  • NAS 서버에서 단순 스케줄링으로 돌리다 보니, 스케줄 충돌이나 과부화 발생 → 서버 다운 문제
  • 결과적으로 Airflow의 장점(스케줄링·모니터링·의존성 관리)을 충분히 활용하지 못하는 상황

제가 궁금한 점은 다음과 같습니다.

  1. DAG가 많아질 때, 구조화/설계 Best Practice
  • 예: 폴더 구조, 공용 모듈화, DAG 관리 전략 등
  1. 스케줄링 최적화 방법
  • 예: DAG 간 의존성 관리, 리소스 제한, 큐/풀 설정 방법
  1. 비슷한 워크플로우(크롤링→전처리→적재)를 운영하는 회사들의 레퍼런스/아키텍처 사례

혹시 실무에서 적용할 수 있는 경험이나 자료가 있다면 공유 부탁드립니다!!! :folded_hands:

2개의 좋아요
  1. 여기에는 따로 정답이 없는문제라.. 어차피 폴더구조를 잘 잡아놔도 리스트에서 태그로 필터링 하는건 큰차이가 없어서요
    일단 저의 경우에는 조직에 따라 많이 달라지긴했습니다.
    배치 기간(일별, 주별, 월별) 로 나누어 두기도 하고, 데이터 소스별, 데이터 도메인별로 나누는 경우 다양했습니다.
    조직에서 데이터 품질을 잘 관리 할수 있는 방법을 택하시면 좋을것 같습니다
2개의 좋아요
  1. airflow 서버에 더 많은 자원을 할당하셔야 하는 순간이 오신게 아닌가 생각해봅니다.
    내부 사정이 어떠한지 명확히 알 수없습니다만 지금 생각할수 있는 방안으로는
  • 단순하게 airflow 에 자원을 더 할당 한다 → 돈을 더쓰란 소리에 가까워서 음..
  • airflow 에서 외부의 컴퓨팅자원을 활용한다 → airflow 의 worker는 단순히 스케쥴링, 완료체크만 하게하고 연산은 모두 외부 컴퓨팅으로 돌립니다. 이렇게 했을때 worker 는 최소스펙으로 유지 할 수 있어서, 동시간대에 많은 스케쥴을 사용할 수 있습니다.
  • DAG 를 시간대별로 나열해두고 겹치지 않게 재분배.. → 사실 이건 큰 의미가 없다고 생각됩니다.

그 외에 NAS 서버에 부하가 걸리는 문제라면 좀 더 복잡한 아키텍쳐가 필요해보입니다.
외부자료로는 .. 이미 보셨을지 모르겠지만, https://tech.kakaoent.com/tech/ifkakao-2019-airflow/ 의 내용이 고민하시는 부분에서 영감을 줄수 있을거라 봅니다

2개의 좋아요

덕분에 퇴근하고 쭉 한번 생각해보면서 정리해보았습니다!

  1. NAS서버에서 연산까지 다 돌리려고 했던 점에서 과부화가 왔던 부분이 있었습니다. 그것을 외부컴퓨팅으로 마이그레이션을 해보려고 합니다. (특히 크롤링 - 비중이 굉장히 커서 스케줄링이 겹치면 worker들이 70개정도가 동시에 돌아가서 터지더라고요.)
  2. 태그로 필터링 하는거 말고도 네이밍규칙과 폴더구조를 조금 더 잘 잡아서 다른 팀원들한테도 DAG을 추가하더라도 적재적소에 추가하도록 문서화하려고 합니다.!
  3. 저 동영상을 안본 거라 외부자료를 추천해주셔서 감사합니다! 많은 도움이 될 것 같습니다!

성실하게 답변해주셔서 감사합니다~!!

(NAS 제품명을 알려 주시면 하드웨어 수준이 어떤지 가늠이 됐을텐데요…)

일단 올려 주신 글을 보면 NAS 보다는 다른 인프라 자원을 제대로 사용하셔야 할 것 같습니다.

Crawling 을 chromedriver 등을 활용해서 headless web crawler 로 구성하셨을텐데
headless 라고 하더라도 많이 뜨다 보니 Memory 와 CPU 모두 부족해지는 상황이 온 것 같습니다.

결국 On-Premise 든 Cloude 든 별도의 인스턴스를 가지고 제대로 관리하셔야 할 것 같네요.
아마도 비용 문제로 NAS 에서 하신 것이 아닌가 하는 생각이 드는데
Crawling 이라는 업무 자체가 손은 많이 가고 안되기라도 하면 욕먹는 작업이라 고생이 많으시겠습니다.

  1. DAG 가 많아 지는 경우 관리가 쉽지 않다는 것은 동의합니다.
    좋은 의견이라 생각되고 여기 모임에서 좋은 의견을 나누며 멋진 개선안이 나오리라 생각됩니다.

  2. 저희의 경우 스케쥴링 부분은 Trigger 정도로만 사용하고 있어서 부하가 크게 없습니다.
    말씀대로 Airflow 에서 스케쥴에 따른 부하 모니터링은 못본 것 같네요.
    하지만 좋은 idea 같습니다.

  3. 말씀하신 Work flow 가 물리적으로 어떤 식으로 나뉘어 있는지 모르지만
    뭉쳐 있는 상태라면 업무별로 나눠야 할 것 같습니다.

1개의 좋아요