새벽 4시 알람이 소리 없이 도착했다, 서버 로그로는 알 수 없었던 이유
새벽에 설정해둔 BTC 가격 알람이 울려야 할 타이밍에 조용했습니다. 테스트 계정이었고, 폰을 보고 있던 것도 아니었는데, 뭔가 이상하다는 느낌이 들어 서버 로그를 열었어요. 발송 기록이 있었고, 외부 푸시 서비스(FCM, APNs 등)의 응답은 200 OK였습니다.
그게 처음의 혼란이었습니다. 서버 쪽에서는 아무 문제도 보이지 않는데, 알람은 안 울렸으니까요.
왜 그냥 넘기기 어려웠나
AlarmKing은 사용자가 직접 보기 어려운 순간을 대신 지켜보다가 알람을 보내주는 앱입니다. 그 타이밍에 알람이 안 울리면, 이 앱에 중요한 순간을 맡기는 게 의미가 없어져요.
테스트 알람 하나였지만, 이유를 모른 채 넘어가면 나중에 같은 상황이 실계정에서 생길 수 있습니다. 그래서 추적하기로 했어요.
처음에 의심한 것들
트리거 로직부터 봤습니다. 가격 조건을 감지해서 발송 요청을 보내는 부분인데, 여기가 실패했을 가능성을 먼저 확인했어요.
로그를 다시 열었습니다. 조건은 정확히 발화했고, 발송 요청도 나갔고, 외부 푸시 서비스(FCM, APNs 등)의 응답은 200 OK였습니다. 방해 금지 모드, 앱 알림 권한도 정상이었어요.
그래서 폰 알림함을 직접 열어봤습니다. 알람이 있었습니다. 오긴 왔는데, 소리도 진동도 없이, 잠금 화면에도 나타나지 않은 채 조용히 쌓여 있었어요.
의심이 바뀐 지점
알림이 도착하긴 했다는 게 확인됐습니다. 그런데 도착 방식이 달랐어요.
소리와 진동, 잠금 화면 배너가 있는 알림과, 아무 신호 없이 알림함에만 들어오는 알림은 사용자 경험이 완전히 달라요. 전자는 그 순간 알람이 왔다는 걸 느낄 수 있고, 후자는 나중에 알림함을 열어봐야 알 수 있습니다.
모바일 푸시 알림은 발송 시 우선순위(priority) 값을 가질 수 있는데, 이 값에 따라 디바이스 OS(iOS/Android)가 알림을 어떻게 처리할지가 달라집니다. 지금 상황이 이 우선순위 처리와 관련이 있을 가능성이 높다고 봤어요.
실험으로 좁혀간 것
같은 시점에 발송된 메시지들을 비교해봤을 때, 소리가 났던 것은 명시적으로 priority: high가 설정된 것들이었습니다. 문제가 됐던 알람은 우선순위를 따로 지정하지 않은 상태였어요.
명시적으로 priority: high를 설정해서 재발송했을 때 소리와 진동이 돌아왔고, 이후 같은 증상은 재현되지 않았습니다.
왜 기본값으로는 낮은 우선순위처럼 처리됐는지는 이번 조사에서 명확하게 파악하지 못했어요. 외부 서비스 쪽 동작이 달라진 것인지, 특정 조건에서 원래 그렇게 처리되던 것인지, 서비스 공지를 확인해봤지만 관련 내용은 찾지 못했습니다. 명시적 설정 이후 증상이 사라졌다는 것까지만 확인했어요.
무엇을 바꿨나
푸시 발송 시 우선순위를 명시적으로 설정하도록 수정했습니다. 코드 한 줄이었어요.
그 한 줄이 나오기까지 6시간이 걸린 건, 문제가 복잡해서가 아니라 원인이 서버 로그에 보이지 않는 영역에 있었기 때문입니다. 볼 수 있는 것들이 모두 정상이었으니, 의심할 방향을 잡는 데 시간이 걸렸어요.
돌아보면, 우선순위 파라미터를 기본값에 맡겼던 건 그게 충분하다는 암묵적인 가정이 있었기 때문입니다. 외부 서비스의 기본 동작이 언제든 달라질 수 있다는 가능성을 실제로 체감하지 못했던 거예요.
장기 방향으로는 서버 발송 성공과 실제 도달 여부를 별도로 추적하는 구조, 그리고 푸시 이중화를 생각하고 있습니다. 아직 구현 전이고, 우선순위를 정해야 합니다.
이번 일이 바꾼 것
이전까지는 200 OK가 오면 발송이 완료된 것이라고 생각했습니다.
지금은 그 응답이 서버와 외부 서비스 사이에서 일어난 일이고, 그 이후 경로는 내가 직접 볼 수 없다는 걸 더 구체적으로 인식하고 있어요. 알람이 실제로 울렸는지는, 서버 응답 코드만으로는 알 수 없습니다.
AlarmKing 같은 제품에서 신뢰성이란, 결국 내가 제어할 수 없는 경로가 어디에 있는지를 파악하고 있는 것과 가까울 수도 있다는 생각이 들었어요. 이번 케이스 하나를 해결한 게 끝이 아니라, 그 너머에 비슷한 구간이 더 있을 수 있다는 것도 이제는 전보다 더 자연스럽게 떠올립니다.
이제 알람이 안 울릴까 걱정하며 밤잠 설칠 필요 없습니다. 보이지 않는 사각지대까지 통제하는 AlarmKing에 중요한 순간을 맡겨보세요.