우수사례

Uber가 사용자 인증 정보 복원 API를 사용하여 연간 수동 로그인을 400만 건 줄이는 방법

읽는 데 5분
2025년 11월 18일
Niharika Arora
개발자 관계팀 엔지니어

Uber는 세계 최대의 차량 공유 회사로, 수백만 명의 사람들을 이동시키면서 음식 배달, 의료 교통편, 화물 물류도 지원합니다. 액세스의 단순성은 성공에 매우 중요합니다. 사용자가 새 기기로 전환할 때 Uber 앱에 다시 로그인하거나 SMS 기반 일회성 비밀번호 인증을 거치지 않고 원활하게 전환되기를 기대합니다. 기기가 자주 교체되는 것은 강력한 사용자 유지의 기회이자 과제입니다. 

사용자 연속성을 유지하기 위해 Uber의 엔지니어는 미국인의 40% 가 매년 스마트폰을 교체하는 시기에 필수적인 도구인 사용자 인증 정보 복원 기능을 사용했습니다. 사용자 요구사항과 코드 프로토타입을 평가한 후 Uber 라이더 앱에 사용자 인증 정보 복원 지원을 도입했습니다. 사용자 인증 정보 복원이 재로그인의 번거로움을 없애는 데 도움이 되는지 확인하기 위해 Uber팀은 5주 동안 성공적인 A/B 실험을 진행했습니다. 통합으로 인해 수동 로그인이 감소했으며, Uber의 대규모 사용자층에 적용하면 연간 400만 건의 수동 로그인이 제거될 것으로 추정됩니다.

사용자 인증 정보 복원으로 로그인 번거로움 제거

restore-credentials.gif

이전에는 일반 데이터 백업BlockStore와 같은 솔루션을 사용하여 새 기기에서 계정을 복원하려는 시도가 있었지만 두 솔루션 모두 소스 기기에서 대상 기기로 인증 토큰을 직접 공유해야 했습니다. 토큰 정보는 매우 민감하므로 이러한 솔루션은 대상 기기의 로그인 필드를 미리 채우고 로그인 흐름 중에 발생하는 일부 번거로움을 줄이는 데만 어느 정도 사용됩니다. 패스키는 안전하고 빠른 로그인 방법을 제공하는 데도 사용되지만 사용자가 시작하는 특성으로 인해 원활한 기기 전환에 미치는 영향이 제한됩니다.

Uber의 Android 엔지니어인 Thomás Oliveira Horta는 '일부 사용자는 Uber 앱을 매일 사용하지 않지만 필요할 때 작동할 것으로 기대합니다'라고 말했습니다. 새 Android 휴대전화에서 차량을 요청하기 위해 앱을 열 때 로그아웃된 것을 알게 되면 불쾌하고 꺼려지는 경험이 될 수 있습니다.

엔지니어는 사용자 인증 정보 복원을 사용하여 이 격차를 해소할 수 있었습니다. API는 이전 기기에서 고유한 토큰을 생성하며, 사용자가 표준 온보딩 프로세스 중에 앱 데이터를 복원하면 이 토큰이 새 기기로 원활하게 자동 이동됩니다. 이 프로세스는 Android OS의 기본 백업 및 복원 메커니즘을 활용하여 앱 데이터와 함께 복원 키를 안전하게 전송합니다. 간소화된 접근방식은 추가 사용자 입력이나 개발 오버헤드 없이 Uber의 보안 요구사항을 충족하는 간단하고 안전한 계정 전송을 보장합니다.

참고: 복원 키와 패스키는 동일한 기본 서버 구현을 사용합니다. 하지만 데이터베이스에 저장할 때는 구분해야 합니다. 사용자가 만든 패스키는 사용자가 직접 관리할 수 있지만 복원 키는 시스템에서 관리하고 사용자 인터페이스에서 숨겨져 있으므로 이 구분이 중요합니다.

Thomás는 'Uber의 라이더 앱에 사용자 인증 정보 복원을 도입한 후 일관된 사용량을 확인하기 시작했습니다'라고 말했습니다. 현재 출시 단계에서 평균 10,000명의 고유한 일일 사용자 가 사용자 인증 정보 복원으로 로그인했으며 새 기기에서 앱을 처음 열 때 원활한 환경을 경험했습니다. 출시를 전체 사용자층으로 확대하면 이 수가 두 배 로 늘어날 것으로 예상합니다.'

image_thomas2.png

구현 관련 고려사항

Thomás는 '샘플 코드문서를 따라 Android 측에서 약간의 조정을 통해 통합이 매우 쉬웠습니다'라고 말했습니다. '앱에서 이미 패스키에 인증 관리자를 사용하고 있었고 백엔드에는 몇 가지 작은 조정만 필요했습니다. 따라서 새로운 사용자 인증 정보 복원 API에 액세스하려면 인증 관리자 종속 항목을 최신 버전으로 업데이트하기만 하면 되었습니다. 동일한 패스키 생성 흐름을 통해 복원 키를 만들었고 새 기기에서 앱이 실행되면 앱은 자동 패스키 검색을 시도하여 이 키를 사전에 확인합니다. 복원 키가 발견되면 즉시 활용되어 사용자를 자동으로 로그인하고 수동 로그인을 우회합니다.'

개발 프로세스 전반에 걸쳐 Uber의 엔지니어는 올바른 진입점 선택부터 백엔드에서 사용자 인증 정보 수명 주기 관리에 이르기까지 구현 중에 몇 가지 과제를 해결했습니다.

사용자 인증 정보 복원 진입점 선택

엔지니어는 완벽하게 원활한 사용자 환경과 구현 단순성 간의 절충점을 신중하게 고려하여 사용자 인증 정보 복원 복구에 사용할 진입점을 선택했습니다. 결국 이상적인 균형을 제공하는 솔루션을 우선순위로 정했습니다.

Thomás는 '이는 앱 실행 중에 또는 기기 복원 및 설정 중에 백그라운드에서 BackupAgent를 사용하여 발생할 수 있습니다'라고 말했습니다. '백그라운드 로그인 진입점은 사용자에게 더 원활하지만 백그라운드 작업에 문제가 있었고 Uber만큼 큰 코드베이스에서 복잡성을 증가시켰을 BackupAgent API를 사용해야 했습니다.' 엔지니어는 수동 로그인보다 훨씬 빠른 첫 번째 앱 실행 중에 기능을 구현하기로 했습니다.

서버 측 문제 해결

백엔드 WebAuthn API와 통합하는 동안 몇 가지 서버 측 문제가 발생했습니다. 설계에서는 항상 사용자 인증이 필요하고 모든 사용자 인증 정보가 사용자 계정 설정에 나열된다고 가정했지만 이러한 가정은 사용자 관리형이 아닌 사용자 인증 정보 복원 키에는 적용되지 않았습니다.

Uber팀은 WebAuthn 서비스를 약간 변경하여 패스키와 사용자 인증 정보 복원을 구분하고 적절하게 처리하는 새로운 사용자 인증 정보 유형을 만들어 이 문제를 해결했습니다.

사용자 인증 정보 복원 수명 주기 관리

Uber의 엔지니어는 백엔드 엔지니어 Ryan O'Laughlin의 전문적인 지원을 받아 백엔드에서 사용자 인증 정보 키를 관리하는 데 여러 가지 과제에 직면했습니다.

  • 고아 키 방지: 중요한 과제는 등록된 공개 키가 '고아'가 되지 않도록 삭제하는 전략을 정의하는 것이었습니다. 예를 들어 앱을 제거하면 로컬 사용자 인증 정보가 삭제되지만 이 작업은 백엔드에 신호를 보내지 않으므로 서버에 사용되지 않는 키가 남습니다.
  • 키 수명 균형 조정: 키에는 극단적인 사례를 처리할 수 있을 만큼 충분히 긴 "TTL(수명)"이 필요했습니다. 예를 들어 사용자가 백업 및 복원을 거친 다음 이전 기기에서 수동으로 로그아웃하면 해당 이전 기기에서 키가 삭제됩니다. 하지만 새 기기에서 계속 사용할 수 있도록 키는 서버에서 유효한 상태로 유지되어야 합니다.
  • 여러 기기 지원: 사용자는 여러 기기를 보유할 수 있으며 이러한 기기에서 백업 및 복원을 시작할 수 있으므로 백엔드에서는 사용자당 여러 사용자 인증 정보 복원(기기당 하나)을 지원해야 했습니다.

Uber의 엔지니어는 새로운 사용자 인증 정보 등록 및 사용자 인증 정보 사용을 기반으로 서버 측 키 삭제 규칙을 설정하여 이러한 문제를 해결했습니다.

이 기능은 2개월의 빠른 개발 및 테스트 프로세스를 거쳐 설계에서 제공까지 진행되었습니다. 이후 5주간의 A/B 실험 (사용자를 대상으로 기능을 검증하는 데 걸리는 시간)이 원활하게 진행되어 확실한 결과를 얻었습니다.  

사용자 인증 정보 복원으로 사용자 이탈 방지

새 기기에서 수동 로그인을 없앰으로써 Uber는 새 기기에서 로그인 흐름을 포기했을 수 있는 사용자를 유지했습니다. 고객 편의성이 향상된 것은 다양한 개선사항에 반영되었으며, 한눈에 보기에는 미미해 보일 수 있지만 Uber의 사용자층 규모에서는 그 영향이 엄청납니다.

  • 수동 로그인 (SMS OTP, 비밀번호, 소셜 로그인) 3.4% 감소
  • SMS OTP가 필요한 로그인 비용 1.2% 절감
  • Uber 액세스율(앱 홈 화면에 도달한 기기의 비율) 0.575% 증가
  • 여행을 완료한 기기 0.614% 증가 

현재 사용자 인증 정보 복원은 실험 그룹의 95% 가 넘는 사용자 가 등록되어 Uber 라이더 앱의 표준 부분으로 자리매김하고 있습니다. 

uber-devices.png

새 기기를 설정하는 동안 사용자는 백업에서 앱 데이터와 사용자 인증 정보를 복원할 수 있습니다. 복원할 Uber를 선택하고 백그라운드 프로세스가 완료되면 앱은 새 기기의 첫 번째 실행 시 사용자를 자동으로 로그인합니다.

image_thomas.png

사용자 인증 정보 복원의 보이지 않지만 엄청난 영향

향후 몇 개월 내에 Uber는 사용자 인증 정보 복원의 통합을 확대할 계획입니다. 시험 결과를 바탕으로 Uber는 이 변경사항으로 인해 연간 400만 건의 수동 로그인이 제거될 것으로 추정합니다. 앱 액세스를 간소화하고 주요 문제점을 제거함으로써 Uber는 한 번에 한 번씩 더 만족하고 충성도 높은 고객층을 적극적으로 구축하고 있습니다.

Uber의 제품 관리 리드 (핵심 ID)인 Matt Mueller는 'Google의 RestoreCredentials를 통합하여 사용자가 새 기기에서 기대하는 원활한 '작동' 환경을 제공할 수 있었습니다'라고 말했습니다. '이는 수익의 측정 가능한 증가로 직접 이어져 로그인 번거로움을 줄이는 것이 사용자 참여 및 유지에 중요하다는 것을 입증합니다.'

앱의 로그인 환경을 개선할 준비가 되셨나요?

사용자 인증 정보 복원으로 기기를 전환할 때 원활한 로그인 환경을 지원하는 방법을 알아보고 블로그 게시물에서 자세히 알아보세요. Android 스튜디오 Otter의 최신 Canary에서는 백업 및 복원 메커니즘을 모의하는 데 도움이 되는 새로운 기능을 통해 통합을 검증할 수 있습니다. 

인증 관리자를 처음 사용하는 경우 통합에 관한 도움말은 공식 문서, Codelab, 샘플을 참고하세요.

작성자:

계속 읽기