우수사례

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

전문 길이: 5분
Niharika Arora
개발자 관계팀 엔지니어

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

사용자 연속성을 유지하기 위해 Uber 엔지니어는 Restore Credentials 기능을 사용했습니다. 이는 미국인의 40% 가 매년 스마트폰을 교체하는 시대에 필수적인 도구입니다. 사용자 수요와 코드 프로토타입을 평가한 후 Uber 라이더 앱에 사용자 인증 정보 복원 지원을 도입했습니다. 사용자 인증 정보 복원이 재로그인의 불편함을 해소하는 데 도움이 되는지 확인하기 위해 Uber팀은 5주 동안 성공적인 A/B 실험을 진행했습니다. 이 통합으로 인해 수동 로그인이 감소했으며, Uber의 방대한 사용자층을 고려할 때 연간 4백만 건의 수동 로그인이 사라질 것으로 예상됩니다.

사용자 인증 정보 복원으로 로그인 마찰 제거하기

restore-credentials.gif

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

Uber의 Android 엔지니어인 Thomás Oliveira Horta는 '일부 사용자는 Uber 앱을 매일 사용하지 않지만 필요할 때 작동할 것으로 기대합니다. '새 Android 휴대전화에서 앱을 열어 차량을 요청하려고 하는데 로그아웃되어 있다면 불쾌하고 당황스러울 수 있습니다.'

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

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

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

image_thomas2.png

구현 관련 고려사항

토마스는 '샘플 코드문서에 따라 Android 측에서 약간의 조정만으로 통합이 매우 쉬웠습니다'라고 말했습니다. '앱에서 이미 패스키에 Credential Manager를 사용하고 있었고 백엔드에서 몇 가지 작은 조정만 필요했습니다. 따라서 Credential Manager 종속 항목을 최신 버전으로 업데이트하기만 하면 새로운 Restore Credentials API에 액세스할 수 있습니다. 동일한 패스키 생성 흐름을 통해 복구 키를 만들었고, 새 기기에서 앱이 실행되면 앱은 자동 패스키 검색을 시도하여 이 키를 사전 예방적으로 확인합니다. 복구 키가 발견되면 즉시 활용되어 사용자가 자동으로 로그인되므로 수동 로그인을 거치지 않습니다.'

개발 과정에서 Uber 엔지니어는 올바른 진입점 선택부터 백엔드에서 사용자 인증 정보 수명 주기 관리에 이르기까지 구현 중에 몇 가지 문제에 직면했습니다.

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

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

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

서버 측 문제 해결 

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

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

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

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

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

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

이 기능은 2개월의 신속한 개발 및 테스트 프로세스를 거쳐 설계에서 제공까지 완료되었습니다. 그 후 5주간의 A/B 실험 (사용자와 함께 기능을 검증하는 시간)이 원활하게 진행되었고 명확한 결과를 얻었습니다.  

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

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

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

현재 인증 정보 복구는 Uber의 라이더 앱에서 표준 기능으로 자리매김하고 있으며, 시험 그룹의 95% 이상이 등록되었습니다. 

uber-devices.png

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

image_thomas.png

사용자 인증 정보 복원의 보이지 않지만 막대한 영향

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

Uber의 리드 제품 관리자 (핵심 ID)인 Matt Mueller는 'Google의 RestoreCredentials를 통합하여 사용자가 새 기기에서 기대하는 원활한'바로 작동 ' 환경을 제공할 수 있었습니다.'라고 말했습니다. '이로 인해 수익이 눈에 띄게 증가했으며, 로그인 시의 불편함을 줄이는 것이 사용자 참여도와 유지율에 매우 중요하다는 것을 알 수 있었습니다.'

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

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

Credential Manager를 처음 사용하는 경우 통합에 관한 도움을 받으려면 공식 문서, Codelab, 샘플을 참고하세요.

작성자:

계속 읽기