DEV ZZAME logoDEV ZZAME
Back To Projects

Project Archive

Android SMS Agent 앱 개발

쿠팡 서브계정 등록 시 법인 휴대폰으로 전송되는 SMS 인증번호를 수동으로 확인하고 입력하는 과정에서 운영 부담이 발생했음.

JavaSpring BootMariaDBAWSDocker

Why

  • 쿠팡 서브계정 등록 시 법인 휴대폰으로 전송되는 SMS 인증번호를 수동으로 확인하고 입력하는 과정에서 운영 부담이 발생했음.
  • 고객이 서브계정 등록을 요청할 때마다 운영팀이 직접 개입해야 했고, 대기 시간이 길어 고객 경험을 저하시켰음.

Challenge

  • Android SMS 수신 권한 및 안정성: Android OS 정책상 SMS 수신 권한이 일정 시간 이후 회수될 수 있어, 앱이 장시간 안정적으로 SMS를 수신하는 구조를 만들어야 했음.
  • Samsung 디바이스 이슈: Samsung Knox 및 One UI 상위 버전의 정책으로 인해 일반적인 BroadcastReceiver 방식으로는 SMS 수신이 불안정한 문제가 있었음.
  • 인증번호 파싱 정확성: 다양한 발신자와 메시지 포맷에서 인증번호만 정확히 추출해야 했으며, 파싱 실패 시 인증 프로세스 전체가 중단되는 리스크가 있었음.
  • 백엔드 연동 및 동시성 처리: 여러 고객의 인증 요청이 동시에 들어올 수 있어, 인증번호를 특정 고객 세션에 정확히 매핑하는 동시성 처리 로직이 필요했음.

To Be

  • BroadcastReceiver 기반 SMS 실시간 수신 구현: SMS_RECEIVED 인텐트를 수신하는 SmsReceiver를 구현하고, 정규 표현식을 활용하여 메시지에서 인증번호를 추출한 뒤 백엔드 서버로 즉시 전송하도록 구현함.
  • Samsung 디바이스 안정성 대응: 00시·06시·12시·18시마다 앱을 강제 재시작하는 스케줄러를 구성하여 SMS 수신 권한을 지속적으로 유지하도록 했으며, 미처리 SMS에 대한 재처리 로직을 추가하여 누락을 방지함.
  • Redis 기반 인증번호 매핑 처리: 추출된 인증번호를 Redis에 저장하고 백엔드에서 고객 세션과 매핑하는 방식으로 동시성 이슈를 해결함. 인증 수신 시 Slack으로 실시간 알림을 전송하여 운영 가시성을 확보함.