"보이게 만들었으면, 이제 막아야 한다" ”DQ Gate를 통한 파이프라인 최후 방어선 구축”

24.08.01 yoda


바빠서 못쓸줄 알앗는데, 캠핑와서 생각나서 작성하게된 2탄!

1편 보러가기

null 하나가 전량 매도를 만든 날 - 1

근데 두 가지가 빠져있었다.

  1. 사람이 볼 수 있는 화면이 없었다. DB에 로그만 쌓이고 있었다.
  2. 차단 구조가 완전하지 않았다. task 레벨에서 실패를 만들어내지만, DAG 간 의존성이 제대로 안 걸리면 다른 DAG이 그냥 실행될 수 있었다.

1단계 — 문제 봉착

로그가 쌓이는데 아무도 안 본다

decorator를 붙이고 나서 DQ 로그가 DB에 잘 쌓이기 시작했다. 근데 문제가 생겼다.

보려면 직접 DB에 쿼리를 날려야 했다. 매일 아침 파이프라인 돌고 나서 DB 접속해서 쿼리 치는 걸 습관화할 수 있는 사람은 없다. 나도 못한다. 업무 특성상 오전(미국장 마감 후) - 오후(국장 마감 후) 볼 게 너무 많아지고 정신이 없다.

결국 아무도 안 보게 된다. 로그가 있어도 안 보면 없는 거랑 같다.

그리고 차단 구조도 허점이 있었다. 알파 mart DAG에서 critical 실패가 나면 그 DAG은 멈추는데, MP 생성 DAG이 별도 DAG으로 분리되어 있으면 그냥 스케줄대로 돌아버리는 케이스가 있었다. DAG 내부 의존성은 잡히는데, DAG 간 의존성은 완전하지 않았다.


2단계 — 이렇게 하면 될까?

두 가지를 동시에 잡아야 했다