푸시 알림은 보내는 기능이 아니라 관측하는 기능이었다
푸시 리텐션 개편 이후 발송 멈춤, 통계 불일치, 중복 발송, 딥링크 오작동을 차례로 잡으면서 알게 된 것들. 1인 개발자가 푸시를 붙일 때 미리 만들어둬야 할 최소한의 계기판 정리.
레슨 신청만 누르면 로그아웃되던 버그 — 범인은 411이었다
토큰 만료로 보였던 강제 로그아웃의 실제 원인은 Content-Length가 빠진 요청이 만든 411 응답이었다. 원인 규명 과정과 수정 방식을 정리했다.
12일 동안 멈춰 있던 크론을 발견한 날
개인 서버의 파일 동기화가 이상해 점검했더니 정기 작업이 12일째 돌지 않고 있었다. 원인과 재발 방지.
새 기능 하나 없이 일주일을 유지보수에 썼다
혼자 앱을 만들면서 한 주 내내 신규 기능 없이 크롤러와 푸시 수정만 했다. 조용히 실패하는 기능을 먼저 잡은 이유와, 뭘 먼저 고칠지 정할 때 쓴 세 가지 질문을 정리했다.
앱오픈 광고가 운영에서만 안 나오던 이유
코드는 들어가 있는데 실제 노출이 0이었다. 테스트 유닛과 실 유닛의 차이, 그리고 배포 전에 확인했어야 할 것들.
증분 크롤이 첫 카테고리만 보고 멈춘 이유
신상 피드가 비던 문제를 추적해보니 종료 판정 범위가 잘못돼 있었다. 카테고리 단위와 전체 순회 단위의 차이.
푸시가 두 번 가던 이유 — 더블클릭과 크론이 만든 경합
같은 대상에게 푸시가 중복 발송되던 문제를 재현하고 두 경로를 차단한 기록. 레이스 컨디션과 재시도 로직을 어떻게 정리했는지.
Play Billing 8 마감일에 맞춰 결제 모듈을 올린 기록
쓰던 라이브러리가 Billing 8을 지원하지 않는 상황에서 마감일까지 결제 모듈을 올린 과정. 버전 매트릭스 확인부터 검증까지.