검색 트래픽 급락을 '수요 없음'으로 오진한 이유 — 분석 창이 진단을 바꿉니다
최근 28일 데이터만 보고 '이 주제엔 수요가 없다'고 진단했다가, 분석 창을 넓혀 다시 보니 특정 하루에 무너진 절벽이었습니다. 분석 윈도우의 크기가 원인 진단을 통째로 바꾼 오진 복기와, 독립 소스 교차검증·배제법으로 급락 원인을 좁히는 방법을 정리했습니다.
최근 28일 데이터만 보고 '이 주제엔 수요가 없다'고 진단했다가, 분석 창을 넓혀 다시 보니 특정 하루에 무너진 절벽이었습니다. 분석 윈도우의 크기가 원인 진단을 통째로 바꾼 오진 복기와, 독립 소스 교차검증·배제법으로 급락 원인을 좁히는 방법을 정리했습니다.
검색 성과가 급락하면 Slack으로 알려주는 경보를 만들었는데, 정작 트래픽이 완전히 소멸하는 최악의 순간에 조용히 침묵했습니다. GSC Search Analytics API가 0인 날짜의 행을 아예 생략하는 성질과 위치 기반 슬라이스가 맞물린 역설을 한 줄씩 추적하고, 날짜 경계로 나눠 고친 버그 회고입니다.
코드는 한 줄도 안 건드렸는데 pre-commit이 모든 커밋을 막았습니다. 'Definition for rule not found'의 범인은 Node 버전업이었습니다. require(ESM) 인터롭이 ESLint 플러그인의 규칙을 .default에 가둔 과정을 추적했습니다.
clone하면 된다는 착각, 원격 URL에 박힌 토큰, age 키 경로 함정, 멀티라인 값 손상까지. 백업을 '저장했다'가 아니라 '새로 clone해 실제 복호화된다'로 증명하기까지 마주친 실전 함정들을 문제·원인·해결·검증으로 정리했습니다.
계층마다 단일 실패점이 다른 곳에 있도록 설계한 3계층 시크릿 백업입니다. 부트스트랩 열쇠는 무료 클라우드 패스워드 매니저에, 본체는 SOPS와 age로 암호화해 private git에, 운영 환경변수는 스냅샷으로. 전부 무료 티어로 짰습니다.
노트북 한 대에 모든 개발 자격증명이 몰려 있다는 걸 뒤늦게 깨달았습니다. 시크릿 값의 생존과, 그 값에 닿을 수단의 생존은 전혀 다른 문제였습니다. 값을 한 번도 출력하지 않고 자산을 전수 조사한 기록입니다.
Google Play 조직 계정에 필요한 D-U-N-S 번호를 NICE D&B의 50만원 없이 Apple 개발자 창구로 무료 발급받은 실전 기록. 50만원은 필수 비용이 아니라 국내 대행 부가서비스 요금이었고, 무료 경로가 오히려 더 빨랐습니다. 준비물인 홈택스 영문 증명부터 걸릴 함정까지 단계별로 정리했습니다.
3부작 완결편. 미러링은 보는 용도, adb는 조작하는 용도로 나누고 screencap·input tap으로 실기기를 원격 조작합니다. 좌표계 어긋남, Android 9 미디어 스캐너가 .MOV·대용량 영상을 색인하지 않는 함정, 잠금은 사람이 푸는 자동화 경계까지 실전 중심으로 정리했습니다.
1부에서 만든 개발환경 위에서 Expo dev-client를 안드로이드 실기기에 올리고 Metro를 붙였습니다. CNG 원리, pnpm 모노레포의 Unable to resolve module, LAN IP 접속, adb 딥링크와 콜드 스타트까지 막혔던 지점을 순서대로 적었습니다.