확인하려면 올려야 했다
브랜드 채널에 영상을 자동으로 올리는 파이프라인을 만들었습니다. OAuth로 토큰을 받고, 그 토큰으로 업로드를 부르는 구조입니다. 흔한 모양입니다.
문제는 "지금 이 토큰이 살아 있나"를 묻는 방법이 없었다는 것입니다. 파이프라인에는 업로드 경로 하나만 있었고, 인증이 유효한지 알 수 있는 순간은 업로드가 성공하거나 실패한 순간뿐이었습니다. 즉, 상태를 확인하는 행위와 되돌릴 수 없는 공개 행위가 같은 코드 경로에 묶여 있었습니다.
게다가 연결된 채널이 어느 쪽인지도 업로드 결과로만 알 수 있었습니다. 계정에 채널이 하나가 아닐 수 있고, 재인증 과정에서 다른 채널이 선택될 수도 있습니다. 그걸 확인하려면 또 올려봐야 합니다.
당신의 파이프라인에는 아무것도 바꾸지 않고 "지금 나는 누구로 로그인되어 있나"만 물어보는 경로가 있습니까?
확인과 실행이 한 경로에 있을 때 생기는 일
확인이 곧 실행이면 확인 비용이 비싸집니다. 비싸지면 덜 하게 됩니다. 덜 하면 토큰이 언제 죽었는지 모른 채로 시간이 흐르고, 결국 실제로 올려야 할 때 처음 알게 됩니다.
반대로 자주 확인하면 채널에 확인용 쓰레기가 쌓입니다. 비공개로 올렸다 지우는 식으로 우회할 수는 있지만, 그것도 결국 업로드 쿼터를 쓰고 채널 기록을 건드립니다. 어느 쪽이든 손해입니다.
그리고 이 시점에 저는 채널 세팅을 마치고 public 업로드 5개를 올린 상태였습니다. 재디자인 배포가 끝날 때까지 추가 업로드는 보류하기로 했습니다. 올리지 않기로 한 기간에도 인증은 계속 살아 있어야 합니다. 올리지 않으면서 살아 있는지 확인해야 하는 상황이 정확히 만들어진 것입니다.
당신이라면? 업로드를 멈춰둔 몇 주 동안 토큰 상태를 어떻게 확인하시겠습니까.
떼어낸 것은 두 조각
첫 번째는 auth_check.py입니다. 22줄입니다. 하는 일은 OAuth 재인증을 돌리고, 연결된 채널을 조회해서 출력하는 것뿐입니다. 업로드는 부르지 않습니다. 실행하면 "인증이 유효한가"와 "어느 채널에 붙어 있나" 두 가지 답이 나옵니다. 그게 전부입니다.
두 번째는 reach_report.py입니다. 38줄입니다. Data API로 최근 업로드의 조회수·좋아요·댓글을 읽어 펄스를 찍습니다. 이쪽도 쓰기는 없습니다. 읽기만 합니다.
둘을 나눈 이유는 단순합니다. 하나는 "문이 열리나"를 묻고, 하나는 "안에 뭐가 있나"를 묻습니다. 섞으면 인증이 깨졌을 때 리포트가 비어 있는 건지, 데이터가 원래 없는 건지 구분이 안 됩니다. 나눠두면 첫 번째가 실패한 순간 두 번째는 볼 필요도 없습니다.
합쳐서 60줄입니다. 파이프라인 본체를 건드리지 않았고, 새 의존성도 없습니다. 이미 업로드 코드가 쓰던 인증과 API 클라이언트를 그대로 씁니다.
자가진단 체크리스트
- 당신의 자동화에서 "인증이 살아 있나"를 묻는 방법이 실제 작업을 실행하는 것 말고 따로 있습니까?
- 재인증 후에 어느 계정·어느 채널에 붙었는지를, 결과물을 만들기 전에 확인할 수 있습니까?
- 읽기만 하는 진단 경로와 쓰기를 하는 실행 경로가 코드에서 분리되어 있습니까?
솔직한 부분
이 두 스크립트는 만든 직후의 상태입니다. 토큰이 실제로 만료된 순간에 auth_check.py가 어떤 에러를 뱉는지는 아직 못 봤습니다. 만료를 기다려본 적이 없기 때문입니다. 그러니 "실패를 정확히 알려준다"고 말할 수는 없고, 지금 말할 수 있는 건 "성공을 업로드 없이 확인할 수 있게 됐다"까지입니다.
reach_report.py의 숫자도 아직 판단 근거로 쓰지 않았습니다. public 업로드는 5개뿐이고, 추가 업로드는 재디자인 배포 후로 미뤄둔 상태입니다. 표본이 이 정도면 펄스는 펄스일 뿐, 어떤 콘텐츠가 통하는지에 대해서는 아무 말도 못 합니다. 그 판단은 업로드를 다시 시작한 뒤의 일입니다.