룸톤 Roomtone 26
오늘 한 일
- 플레이 심사가 통과됐고 스토어에 공개했다. 페이지가 실제로 열리는 것까지 확인했다.
- 공개 전에 서버와 앱이 같은 판인지 대조했다. 운영 배포본 이후 서버 코드 변경이 0이었고, 제출한 번들도 그 시점 코드로 빌드한 것이었다.
- 로그스톤 샵에 스토어 주소를 넘겼고 「앱 받기」 버튼·홈 카드·업데이트 내역 1.0.0이 열렸다.
- 비밀번호 재설정을 인증번호 방식으로 만들었다. 서버·메일·앱 전 구간을 운영에서 확인했다.
- 메일 도착 → 번호 입력 → 비밀번호 변경 → 새 비밀번호로 로그인까지 끊긴 데가 없었다. 태블릿에서 앱 화면으로도 한 바퀴 돌렸다.
- 안전장치: 유효시간 제한, 틀린 횟수 제한, 발급 간격 제한, 한 번 쓰면 폐기. 번호가 짧은 만큼 자동 대입을 막을 것들이다.
- 가입 안 된 주소에도 같은 응답을 준다. 누가 가입했는지 흘리지 않기 위해서다.
- 옛 링크 방식을 서버·앱·웹에서 걷어냈다. 길이 둘이면 관리할 것도 둘이다.
- 하루 읽기의 88%를 먹던 두 요청을 고쳤다(막힌 부분). 실측으로 10,878행이 1행이 됐다.
- 서버가 JSON 아닌 응답을 줄 때 앱이 「예기치 않은 문자」를 보여 주던 것을 「지금 서비스에 문제가 있어요」로 바꿨다.
- 재생 통계에서 내부 계정을 뺐다.
- 이유: 우리 쪽에서 만든 계정은 손님이 아니다. 테스트를 도와준 사람 계정도 돈 내는 손님이 아니라 뺐다.
- 남은 한계: 계정 없이 쌓인 어제 이전 기록은 가릴 수 없어 그대로 들어간다.
- versionCode 9 번들을 만들었다. 인증번호 화면과 오류 문구가 들어갔다.
- 웹 결제를 당분간 닫아 달라고 로그스톤 샵에 요청했다.
- 이유: Creem 결제를 아직 한 번도 끝까지 안 돌렸다. 지금 누가 웹에서 결제하면 우리가 그 길을 처음 밟는 순간이 손님의 첫 결제가 된다.
막힌 부분
- 태블릿에 앱을 덮어쓸 수 없었다.
- 원인: 태블릿에 깔린 건 스토어에서 받은 판이라 서명이 다르다. 스토어가 자기 키로 다시 서명하기 때문이다.
- 해결: 지우고 새로 깔았다. 그 기기의 로그인은 다시 해야 한다.
- 심사용 계정의 구독을 끌지 정해야 했다. 원래는 심사가 끝나면 되돌리기로 적어 뒀다.
- 해결: 켜 둔 채 통계에서만 빼기로 했다. 업데이트를 낼 때마다 심사를 다시 받고 그때도 심사자가 전곡을 들어야 하는데, 껐다 켜는 걸 잊으면 반려된다.
- 공개하고 나니 알릴 데가 없었다.
- 원인: 만드는 일정만 잡았고 알리는 일정을 안 잡았다. 스토어에 올라간 순간 할 수 있는 게 「주소가 생겼다」뿐이었다.
- 남은 판단: 제품 페이지·쇼츠·매장 지인 셋을 첫 알리기 경로로 두기로 했다. 웹 결제가 닫혀 있는 동안은 앱 설치로만 유도한다.
도메인에 메일 인증이 통째로 비어 있었다
인증번호를 붙이려면 메일을 보낼 수 있어야 해서 발송 설정을 켰다. 그 과정에서 세 가지가 연달아 나왔다.
메일 인증에는 셋이 있다. SPF는 「이 도메인 이름으로 메일 보낼 수 있는 서버 목록」이고, DKIM은 「보내는 서버가 메일에 도장을 찍고 그 도장을 확인할 열쇠를 공개해 두는 것」이며, DMARC는 「앞의 둘이 실패하면 어떻게 하라」는 지시다. 셋 다 도메인 주인이 적어 두고, 받는 쪽이 읽어 본다.
첫째, 설정을 켜는 명령이 도메인 최상단에 DMARC를 자동으로 넣었는데 그 값이 「인증에 실패하면 받지 말고 버려라」였다. 나머지 설정은 하위 이름에 붙어 기존 메일과 안 겹치는데 이것만 최상단이었다. 그런데 최상단에는 SPF가 없었고 업무 메일은 다른 회사 서비스로 나가고 있었다. 그대로 뒀으면 업무 메일이 거부될 수 있었다.
둘째, 낮춰 놓고 시험 메일을 보내 보니 받는 쪽이 거부했다. 「보낸 사람이 인증되지 않았다」는 반송이 왔다. SPF가 원래부터 없었던 것이다. 우리가 만든 문제가 아니라 계속 있던 구멍인데, 메일을 보내려다 드러났다.
셋째, SPF를 넣으니 이번엔 도착은 하는데 스팸함으로 갔다. DKIM이 없어서다. 그런데 그 경로에는 DKIM을 붙일 방법이 없었다.
받는 쪽이 DKIM을 더 믿는 데는 이유가 있다. 전달(forward)되면 보낸 서버가 바뀌어 SPF는 깨지는데, DKIM은 도장이 메일에 붙어 다녀서 살아남는다. 게다가 도장은 오는 길에 내용이 바뀌지 않았다는 것까지 증명한다.
- 해결: 보내는 길만 우리 플랫폼으로 돌렸다. 받는 건 그대로 두고, 메일을 읽는 쪽에서 업무 주소로 보낼 때만 새 경로를 타게 했다. DKIM이 붙어 받은편지함으로 들어간다.
- 남은 판단: 받는 것까지 옮길지는 보류했다. 옮겨도 비용이 안 줄고, 메일함이라는 안전망을 잃는다. 조건을 걸어 백로그에 뒀다.
검사가 통과했다는 말이 아무 보증도 아니었다
작업 내내 타입 검사를 돌리고 통과를 확인했다. 그런데 문법이 깨진 코드가 그대로 통과했고, 배포 단계의 도구가 그제서야 잡았다.
원인은 돌리던 명령이 이 저장소의 검사 설정과 달랐다는 것이다. 이 저장소는 여러 묶음을 이어 검사하는 방식인데, 그 명령은 최상단 설정만 보고 「검사할 파일 없음」으로 끝났다. 통과한 게 아니라 아무것도 안 본 것이다.
- 해결: 저장소에 정해진 명령으로 바꾸고 문서에 못박았다.
- 교훈: 검사 도구는 「무엇을 보고 있나」를 한 번은 확인해야 한다. 초록불이 곧 검사한 것은 아니다.
다음에 할 일
- 첫 알리기 — 제품 페이지·쇼츠·매장 지인. 웹 결제가 닫혀 있는 동안은 앱 설치로만
- Creem 결제 한 바퀴 — 매장이 여럿인 고객에겐 이 길뿐이라 유일한 결제 경로 검증이다. 그때까지 웹 결제는 닫아 둔다
- 로그스톤 샵 회신 대기 — 검색 노출 차단 상태, 영수증 문구에서 세금계산서 문장 빼기, 웹 결제 닫기
- versionCode 9 번들을 스토어에 올리기
- 한 달 뒤 요금제를 계속 둘지 정하기 — 읽기를 줄였으니 실측으로 판단
- 얇은 조합 채우기 — 앰비언트·보사노바 분위기 확장, 봄 23곡. 생성 계획으로
- 구독이 끝나 미리듣기로 바뀔 때 로딩이 한참 걸리는 것 — 테스트 구독 만료(5분)로 재현
- 「이 달의 신곡」 자리 — 매달 곡이 는다고 써 놓고 앱에 보여 줄 화면이 없다
- 12월에 스토어 외부 결제 정책 확인 — 한국 적용 약관과 표기 요건
- 로그스톤 샵 룸톤 상품 페이지에 스토어 이미지 올리기
- 구글 계정으로 로그인 — 붙일 때 데이터 보안 답과 개인정보처리방침도 함께
- 웹에서 듣기 — PC만 쓰는 매장이 나오면 웹판과 윈도우 앱을 비교해 정하기
- 로그스톤 샵의 개인정보처리방침·환불 조항 회신을 받아 웹 페이지 문구 맞추기
- 우리 쪽 장애로 못 들은 기간 이용 기간 늘려 주기 — 구현 뒤 로그스톤 샵에 회신
- 다음 곡 주소 미리 받기 검토 — 재생 횟수 기록을 떼는 것과 같이
- 안드로이드 패키지에 딸려 오는 윈도우용 재생 엔진 빼기 검토(다운로드 6MB 남짓)
- 매장 안내방송 — 지정 시각에 한 번 끼어들고 복귀. 음원은 서버에 올리지 않고 기기의 로컬 파일을 고른다
- 휴지통 30일 자동 정리 붙일지 검토
- 넓힌 키워드로 기존 곡 무드 백필
- 자동 분류가 안 된 5곡 에너지를 귀로 확정 — 빠르기로 초기값만 넣어 둔 상태다
- 곡 풀은 분위기별 깊이로 보강, 곡 하나로 만드는 스테이션(출시 후)
- 록·메탈 곡 마스터링 — 할지 말지 미정
- 앱 아이콘 여백 — 번들에는 들어갔지만 폰에서 아직 확인 못 함
- 스케줄 화면 쪼개기 — 651줄에 상태·타임라인·격자·시트가 한 파일에