f-lab-edu / commerce-sessionization

0 stars 0 forks source link

[PoC] Airflow 활용한 Sessionizaiton Workflow #7

Open wattt3 opened 5 days ago

wattt3 commented 5 days ago

Background

6 - 사용자의 behavior log에 대해서 Continuous Sessionization 까지 PoC를 완료했습니다.

요구사항, 데이터가 생성 및 수집 1시간 안에 session id를 부과하는 것을 대응하기 위해 Workflow 도구인, Airflow를 도입하고자 합니다.

Airflow를 어떻게 구성할 것인가? 의 문제는 추후 고려하며, Spark Job과 Airflow 연동하는 작업에 중점을 두고자 합니다.


기대 결과

Bansng commented 4 days ago

airflow를 구성한다면, airflow 인프라 환경 구성을 먼저 하는 것이 좋을 것 같아요! 그 이유는 로컬에서 간단하게라도 airflow dag를 테스트할 방법이 없기 때문이에요!

wattt3 commented 4 days ago

airflow를 구성한다면, airflow 인프라 환경 구성을 먼저 하는 것이 좋을 것 같아요! 그 이유는 로컬에서 간단하게라도 airflow dag를 테스트할 방법이 없기 때문이에요!

@Bansng 사실 저는 local에서 테스트 되지 않을까 자연스레 넘겼는데, 생각해보니 이슈가 있을 수 있겠군요

올바르게 이해했는지 생각을 좀 적어보고자 합니다. 사실 Airflow가 바라보는 Dependency가 많은 것 같습니다. 유닛 테스트 관점에서라면 이러한 의존성들을 Mocking 해서 테스트를 진행할 것 같은데, 결국 외부 프로젝트가 아니므로, 테스트의 범주에 속한다는 점에서 결국 한계가 존재한 것 같습니다. 그렇다면 올바른 테스트 방법이라고 생각되지 않고, 실패된 증명이 될 수 있겠군요 결국 prod / test stage를 나눠서라도 테스트를 진행하는 것이 이러한 이유 때문이 아닐까 생각 됐습니다!

그렇다면, 해당 이슈에서는 인프라 환경을 구축하는 것을 추가하여 진행하도록 하겠습니다! 감사합니다 :)

Bansng commented 4 days ago

대욱님 말씀이 맞습니다. confirmation 차원에서 아래와 같이 마저 적어봅니다.

airflow에 dag 생성, 수정 후 mock 테스트 방법론이 없습니다. 과거 다녔던 쿠팡 또는 현재 제가 다시는 회사 모두 airflow에 직접 배포를 해보고 e2e 테스트를 했어요. 그러기 위해 prod용 dag가 아닌 qa dag를 만들었구요.

인프라 환경 구축에 대해 추가 커멘트 드려보면, managed service(gcp composer, astronomer)를 도입하는 것은 비용이 비싸서 추천드리고 싶지 않습니다. 조금 까다로울 수 있지만, 많은 회사들이 k8s 위에 직접 컨테이너를 띄워 운영합니다. 참고해서 고민해보셔요! (정말 간단하게 로컬에 airflow를 냅다 설치하고 진행하는 것도 프로젝트 차원에서 괜찮다고 봅니다!)