실시간 메세지 서비스 RabbitMQ로 주문이 들어오면
관리자 어플에는 바로 주문이 보이고
라이더 어플에는 15초 이후에 주문이 보이도록
프로그래밍을 시켜 놨는데
누구는 좀 빨리뜨고 누구는 좀 늦게뜨고 (끽해봐야 1초, 2초) 차이가 있지만
사실 전투형 배달 대행이라면 이 또한 클레임이 나올 수 있는 영역이다.
하지만 프로그래머는 만드는게 업이지 실제로 사용하지 않기 때문에
라이더 분들이 1초 2초 차이가 있어요~ 라고 하면
트워크 문제부터해서 모든 문제를 가져다가 어쩔 수 없다고 할 수 밖에 없다.
잘 만들어진 프로그램이라도 그런 문제로 늦게 뜰 수 있다.
하지만 내 프로그램은 항상 미완성인 프로그램이라
하루날 잡고 프로그램 시간 로그 분석을 시작해 보았다.
현재 프로그램의 로직
라이더 어플
1. 주문이 들어온다. (가게에서 메세지를 쏜다.)
2. 접수중인 모든 주문을 불러온다.
3. 거기서 주문 시간과 현재 내 휴대폰 시간과의 차를 계산한다.
4. 주문한지 15초 지난 주문은 바로 리스트에 올리고
5. 막 뜬 주문은 15초 -(주문시간 - 휴대폰 시간)초 후에
주문이 뜨도록 타이머를 동작한다.
이렇게 잘 쓰고 있었는데
자꾸 잡은 주문이 휴대폰에 남아 있다는
클레임이 있어 확인해보니
0.322초 차이로 누군가가 주문을 먼저 잡아도
타이머로 인해 잡은 주문이 남아 있게 되는 것이였다.
이 원인을 해결 방법을 찾기위해 로그를 보는 중
테스트 폰 3개와 서버 시간이 초가 다르다른걸 확인 할 수 있었다.
서버 시간과 비교했을때
1. 갤럭시 S9 : 2초 느림
2. 갤럭시 플립? : 1초 빠름
3. 에뮬레이터 : 1초 느림
여기서 아차 했다..
휴대폰 시간 - 주문시간(서버) 으로 만들어져 있는 프로그램이기에
미세하게 다른 휴대폰 초 단위에서
먼저 뜨고
늦게 뜨고
할 수도 있구나 라는걸..
그래서 휴대폰 시간이 아니라
서버시간 - 주문시간으로 프로그램을 수정하였다.
이 후 3개 테스트 어플에서 거의 동시에 뜨고 있는 것처럼 보였지만
실제로 어떤지 현장 이야기를 들어봐야 할 거 같다.
49.257초 에 누군가 잡았는데
0.277후에 예약된 주문이 뜨는 로그 입니다.
이 부분도 혹시 .. Hoxy .. 누군가가 빨리 잡았다면
주문 타이머가 없어지도록 프로그램을 수정해서 배포한다면
오류가 줄어들지 않을까 싶다.
'배달앱 개발일지' 카테고리의 다른 글
[안드로이드 버전 31] TelephonyManager로 휴대폰 번호 받아오기 (1) | 2022.12.06 |
---|---|
[접근성 서비스] 배달대행 자동클릭 어플 막는방법 (1) | 2022.12.06 |
[삽질중]JNI로 배민 dll 함수 사용하기_서비스 초기화 (0) | 2021.10.01 |
안드로이드 mms 보내기 성공! (1) | 2021.08.17 |
20210708 mysql transaction 이걸 이제 알다니;; (php 5.5이상) (0) | 2021.07.08 |
댓글