01
GPS 출퇴근 인증 실패를 원인 셋으로 나눠 고쳤습니다
- 원인
- 사용자 로그와 출퇴근 패턴으로 실패를 재현해 원인을 셋으로 나눴습니다. 기기에 남아 있던 직전 위치 좌표가 그대로 반환되는 경우, 사용자가 OS 위치 권한을 거부한 경우, 건물이 밀집한 도심에서 GPS 측위 오차가 커지는 경우입니다.
- 고른 것
- 버튼을 누를 때 한 번 좌표를 받던 방식을 지도 앱처럼 위치를 계속 받는 방식으로 바꾸고 Android에서는 GPS에 기지국(Cell)과 Wi-Fi 측위를 합친 Fused Location Provider를 썼습니다. 모의 위치 조작도 막았습니다.
- 복구 화면
- 모든 실패를 오류 화면 하나로 보여 주던 것을 나눴습니다. 권한 문제는 OS 설정 화면으로 이동하게 하고 측위 오차는 바로 다시 시도하게 했습니다.
- 결과
- 2024년 1월 개선 배포부터 2026년 2월 인계까지 제가 직접 응대한 고객 문의에서 GPS 관련 문의는 0건이었습니다.
02
인수한 관리자 CMS를 배포를 멈추지 않고 옮겼습니다
- 상황
- 인수한 관리자 웹은 React 16.6과 클래스형 컴포넌트로 되어 있어 화면 하나를 고칠 때도 라이브러리 버전부터 올려야 했습니다. 화면 상태까지 담은 MobX 전역 스토어 탓에 상태가 초기화되지 않는 오류가 반복됐고 Webpack 빌드도 느렸습니다.
- 고른 것
- 실행 동작에 영향이 없는 빌드 도구부터 Vite로 옮겼습니다. 전체를 다시 쓰지 않고 새 화면과 고치는 화면부터 TypeScript와 Recoil을 적용했고 기존 MobX 스토어는 남겨 두고 한동안 두 상태 관리를 함께 썼습니다. 타입을 붙이며 화면 사이에 암묵적으로 오가던 데이터를 인터페이스로 적어 두었습니다.
- 결과
- CI 빌드가 1분 30초에서 30초로 66% 줄었고 옮기는 동안에도 기능 배포를 이어 갔습니다.
03
사내에 없던 오류 추적 서버를 직접 세웠습니다
- 상황
- 회사에 오류 추적 도구가 없어 장애를 늦게 알았습니다.
- 고른 것
- 온프레미스 Docker로 Sentry 인스턴스를 구축해 이 앱에 먼저 붙였습니다.
- 결과
- 사용자 신고 전에 크래시와 API 오류를 알고 스택으로 원인을 찾게 됐고 사내 다른 프로젝트도 같은 인스턴스를 쓰게 됐습니다.