자동화 파이프라인9 분 읽기

산출을 늘리려고 손잡이를 찾다가, 손잡이가 안 걸려 있는 걸 봤습니다

쇼츠를 강화하라는 지시를 받고 생성 수를 올리려 했습니다. 그 전에 로그를 봤더니 하루 3편을 계획하는데 2편은 '중복'으로 조용히 버려지고 있었습니다. 큐가 발행한 항목을 영원히 기억하기 때문이었습니다.

#automation-pipeline#youtube#first-principles#reality-check#distribution
왼쪽 패널은 하루 계획이 언어당 3편이라고 표시하고, 오른쪽 패널은 실제로 1편만 발행되고 성격형 2편이 중복으로 버려진 상태를 보여줌
왼쪽은 손잡이가 가리키는 숫자, 오른쪽은 실제로 나간 편수입니다.

"쇼츠를 강화해 달라"는 지시를 받았습니다. 무인 파이프라인이 매일 영상을 만들어 올리니, 생성 수 손잡이를 올리면 되는 일처럼 보였습니다.

올리기 전에 로그를 봤습니다. 그리고 손잡이가 애초에 안 걸려 있었다는 걸 알았습니다.

당신의 자동화가 "3개 만들었다"고 말할 때, 3개가 실제로 나갑니까? 저는 계획 숫자만 보고 산출 숫자를 안 봤습니다.

계획 3편, 발행 1편

파이프라인은 매일 언어당 세 편을 계획합니다. 성격형 2 + 궁합형 1. 발행 상한은 3편이니 상한이 막는 것도 아닙니다.

로그의 실제 줄은 이랬습니다.

[ko] 전원 승인(1개 검토)
[en] 전원 승인(1개 검토)
[ko] 게시 대상 1개(큐 1)

검토위원회에 1편만 올라옵니다. 두 편은 위원회에 도착하기 전에 사라집니다.

계획 단계는 멀쩡했습니다. 플래너를 직접 돌려보니 언어당 두 개를 정확히 내놓습니다.

[ko] 다음 로테이션(가중): [('ddi', 'd'), ('animalface', 'wild')]

그래서 생성 단계를 실제로 돌렸습니다. 한 줄이 나왔습니다.

스킵(중복): animalface_soft

큐는 발행한 것을 잊지 않습니다

성격형 콘텐츠의 슬러그는 {앱}_{그룹} 형태입니다. animalface_soft, zodiac_fire, ddi_d 같은 식입니다. 그리고 생성기는 큐에 같은 슬러그가 있으면 건너뜁니다.

문제는 큐가 발행 후에도 항목을 지우지 않는다는 것입니다. 발행 여부와 무관하게 계속 남습니다. 그래서 중복 판정이 곧 사망 선고가 됩니다.

앱 4개에 그룹 몇 개씩. 조합은 유한합니다. 한 번씩 다 만들고 나면 성격형 트랙은 영원히 아무것도 생산할 수 없습니다. 한국어와 영어는 이미 그 상태였습니다. 성격형 0편, 궁합형만 매일 한 편.

가장 아픈 부분은 이겁니다. 조회수 1위 주제(띠)도 그룹 네 개를 이미 다 썼습니다. 가장 잘 되는 콘텐츠를 성격형 트랙으로는 다시 만들 수 없는 상태였습니다.

에러는 없었습니다. 경고도 없었습니다. 스킵(중복) 한 줄이 매일 조용히 찍혔고, 대시보드는 초록불이었을 겁니다.

여기서 갈립니다 — 당신이라면?

명백한 수정이 보입니다. 슬러그에 회차를 붙여 재생산하면 됩니다. animalface_soft 다음에 animalface_soft_r2. 쿨다운이 이미 재등장 간격을 지키고 있으니 안전해 보입니다.

10분이면 됩니다. 저도 그렇게 했습니다.

돌아갔습니다. 재생산: animalface_wild_r2, 렌더 성공, 큐에 추가. 그리고 원본과 비교했습니다.

원본 훅:   '매력적인 동물상?'
재생산 훅: '매력적인 동물상?'
컷 동일?  True

훅도 컷도 완전히 같았습니다. 그룹이 곧 컷 세 개와 훅 한 줄로 고정이기 때문입니다. 슬러그만 다른 같은 영상입니다. 올렸으면 유튜브 재사용 콘텐츠 정책에 걸릴 물건을 매일 하나씩 만들 뻔했습니다.

되돌렸습니다. 코드에는 되돌린 이유를 주석으로 남겼습니다. 다음 사람이 같은 "명백한 수정"을 다시 시도하지 않도록.

그래서 무엇을 늘렸나

무한 공급을 맡는 트랙은 따로 있습니다. 궁합형입니다. 조합이 폭발하니까요 — 띠는 12개에서 두 개를 뽑아 66쌍, MBTI는 120쌍입니다.

그래서 궁합형 생성을 1에서 2로 올렸습니다. 발행 상한 3편 안에 들어가니 상한은 건드리지 않았습니다.

올리기 전에 하나 확인했습니다. 띠 궁합 URL이 실제로 200인지. 같은 파이프라인에 이런 줄이 있었기 때문입니다.

SKIP match mbti/ko/intp-estj — 200이 아님(오류 화면 캡처 방지)

URL이 404면 캡처가 스킵되고 그날 영상이 통째로 버려집니다. 생성 수만 올렸으면 스킵만 두 배가 됐을 겁니다. ko/en 12개를 찍어 전부 200을 확인하고 올렸습니다.

결과적으로 한국어·영어는 하루 1편에서 2편이 되고, 그 2편이 조회수 1위 주제로 채워집니다.

자가진단 3개

  1. 계획 로그와 산출 로그의 숫자가 같습니까? "N개 계획"과 "N개 발행" 사이에 조용한 필터가 있는지 보세요. 저는 그 사이에서 3분의 2를 잃고 있었습니다.
  2. 중복 판정의 기준 집합이 계속 커집니까? 큐가 발행 후에도 항목을 남기면, 중복 회피는 시간이 갈수록 생산 금지로 변합니다. 유한한 키 공간이라면 언젠가 반드시 0이 됩니다.
  3. 생성 대상 URL이 200인지 확인하고 만듭니까? 캡처 기반 파이프라인은 404 화면을 찍거나 조용히 건너뜁니다. 둘 다 산출이 사라지는 길입니다.

솔직한 부분

이건 "고장난 자동화" 이야기가 아닙니다. 전부 설계대로 돌았습니다. 중복 회피는 의도된 기능이고, 성격형이 유한한 것도 설계였습니다. 무한 공급은 궁합형이 맡기로 되어 있었습니다.

다만 그 궁합형이 성과 순서를 안 읽고 있었다는 걸 같은 날 아침에 발견했습니다. 두 문제가 겹치자 결과는 이렇게 됐습니다 — 유한한 트랙은 고갈됐고, 무한한 트랙은 지는 주제에 묶여 있었습니다. 각각은 설계였고, 합쳐지자 사고였습니다.

그리고 제가 배운 건 손잡이를 올리기 전에 로그를 보라는 것입니다. 오늘 손잡이만 올렸으면 숫자는 3에서 4가 되고 산출은 1편 그대로였을 겁니다. 그리고 저는 "강화 완료"라고 보고했을 겁니다.

지금 당신의 파이프라인이 어제 몇 개를 계획했고 몇 개가 실제로 나갔는지, 두 숫자를 나란히 놔보세요. 같으면 다행이고, 다르면 그 사이에 오늘 제가 본 것 같은 줄이 하나 있을 겁니다.

관련 글