ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Airflow] Why Apache Airflow?
    개발/Airflow 2022. 7. 6. 23:39

    Apache Airflow?


    Airflow is a platform to programmatically author, schedule and monitor workflows.
    -> airflow는 workflow를 구축 및 실행할 수 있는 플랫폼입니다.

    Apache Airflow를 왜 사용하는 이유


    • Data engineering에서는 ETL(Extract/Transform/Load) 과정을 통해 Data 가공, 적재
    • ML에서도 학습 데이터 전처리,Train,Prediction 시 사용
    • 위와 같이 Sequential한 로직(Output->Input으로 동작)들을 한번에 관리 할 경우

     

    Apache Airflow 장점


    • Python 기반으로 만들어졌기 때문에 접근하기 쉽다.
    • Airflow console이 별도로 존재하기 때문에 Task 관리를 서버에서 관리하지 않아도 된다.
    • 작업 별 시간이 나오기 때문에 bottlenecks 파악에도 용이

     

    Workflow

    모든 Task들의 flow입니다.

    이를 위해 airflow는 Task를 관리하는데 Dag라는 개념을 사용합니다.

    Dag

    Directed Acyclic Graph의 약자로 Airflow에선 workflow
    • Task의 집합체

    무슨 말인지 감이 안잡히실텐데요.

    Airflow에서 지원해주는 Dag라는 그림을 한번 보면 이해가 됩니다.

    아래와 같이 각각의 Task들을 한눈에 알아보기 쉽게 정리되어서 볼 수 있습니다.

     

    그림을 살펴보면 event-driven architecture(EDA) Architecture를 나타내고 있습니다. ingest task가 실행 -> 끝나면 analyze가 실행 -> check_integrity가 실행 -> 분기가 발생 -> 에러 여부에 따라 분기 -> 다음 task가 실행 -> report 실행

     

    위와 같이 하나의 Work에 대해서 알기 쉽게 볼 수 있으며, 시간 대별로 제대로 실행이 되었는지를 한눈에 관리가 가능하죠

    전 직장에서는 회사 규모가 큰 중견기업임에도 불구하고 데이터 관련 일은 DB자체의 batch file로만 등록하여 사용하여 많아진 서비스에 대해 관리가 되지 않았습니다. 어떤 흐름을 가지고 있는지 어떤 부분이 중간에 에러가 나서 동작하지 않는지.. 등을 알 수가 없었습니다. 어떤 서비스는 Flow 조차도 남아있는게 없었습니다. 결국 다른 회사에서 이 서비스 안되는 거 같아요와 같은 요청 받을 때가 많았습니다. ( 물론 총 4명의 팀원에서 3명이 한꺼번에 나가고 그 업무를 제가 다 맡아서 모든 일을 다 파악하기에는 역부족이었던 것도 있습니다. )

     

    각 Task 별로 위와 같이 단계를 보여주면서, 어느 부분이 잘못 된지 한번에 파악이 되었다면 관리하기가 수월하였을 겁니다.

     

    Airflow Architecture


    • Airflow Webserver - 웹 UI를 표현하고, workflow 상태 표시하고 실행, 재시작, 수동 조작, 로그 확인 등 가능
    • Airflow Scheduler
      • 작업 기준이 충족되는지 여부를 확인
      • 종속 작업이 성공적으로 완료되었고, 예약 간격이 주어지면 실행할 수 있는 작업인지, 실행 조건이 충족되는지 등
      • 위 충족 여부가 DB에 기록되면, task들이 worker에게 선택되서 작업을 실행함

     

    댓글

Designed by Tistory.