Joe's Blog

미지의 오류를 최소화시키는 법

뭔가 소프트웨어를 만들다보면 "경유"해야 하는 것들이 생긴다. 예를 들면 프론트에서 서버 사이드 웹서버로 정보를 요청하지만, 사실은 DB의 데이터를 얻어오는 것 같은 것이 될 수 있다.

최근 만든 잘 작동하던 모바일 앱이 갑자기 아무런 수정없이도, 푸시가 안되는 문제가 발생했었다.

아예 OneSignal에서 내 휴대폰에서 작동하는 앱들을 감지하지 못하는 문제가 발생했었기에, 문제점을 여러 곳에서 찾아보기 시작했다.

일단 그 모바일 앱은 마침 크로스 플랫폼 프레임워크 + 네이티브 코드로 만들어져 있었기에, js와 java와 object-c를 다 살펴보았다.

근데 또 그 모바일 앱을 수정하는 파이썬 자체 프로그램을 쓰고 있었기에, 그 코드 또한 살펴보아야 했다.

또 그것이 그냥 firebase 같은 곳에서 푸시 알림을 처리하는 것이 아니라, OneSignal 이라는 서비스를 경유하여 푸시를 처리하는 것이었다. 그래서 그것 또한 OneSignal에서 발생한 문제인지 firebase에서 발생한 문제인지 알아보아야 했다. (+ iOS도 작동이 안되었기에 firebase의 문제는 아니었을 것이다.)

근데 또 같은 환경으로 만든 앱은 잘 작동하는 것이 아닌가?

근데 한 6시간 동안 이유를 찾아보다가, 갑자기 그냥 푸시가 작동하고, OneSignal에서 내가 조작한 앱의 기록들이 나왔다.

푸시도 안되고, 앱 알림 구독 유무도 절대 안나오다가 6시간 후에서야 한방에 나왔다.

여기저기 다 들쑤시고 다녔지만, 결국 OneSignal 혼자 만의 문제였던 것이다.

이것 저것을 섞어서 쓰면 오히려 어디서 문제가 발생한지 파악하기가 힘들어지므로, 최대한 간단한 구조로 만들어 디버깅을 쉽게하는 것이 좋은 방법인 것 같다.

(+남이 만들어놓은 인프라나 라이브러리 등에 대해서는 직접적인 디버깅이 힘드므로, 최대한 신뢰도 높은 것을 사용해야 할 듯 하다.)

Loading script...