مطالعات موردی

چگونه Uber بااستفاده از Restore Credentials API، ورودهای دستی به سیستم را تا ۴ میلیون در سال کاهش می‌دهد

‫۵ دقیقه خواندن
مشاهده نمایه نیهاریکا آرورا مشاهده نمایه Tracy Agyemang
‫ Niharika Arora و Tracy Agyemang

Uber بزرگ‌ترین شرکت هم‌سفری در جهان است که میلیون‌ها نفر را از اینجا به آنجا می‌رساند و درعین‌حال از تحویل غذا، حمل‌ونقل مراقبت‌های بهداشتی، و لجستیک حمل‌ونقل پشتیبانی می‌کند. سادگی دسترسی برای موفقیت آن بسیار مهم است؛ وقتی کاربران به دستگاه جدیدی می‌روند، انتظار انتقالی یکپارچه را دارند بدون اینکه لازم باشد دوباره به سیستم برنامه Uber وارد شوند یا اصالت‌سنجی گذرواژه یک‌بارمصرف مبتنی بر پیامک را انجام دهند. این گردش مکرر دستگاه چالشی را ایجاد می‌کند، و همچنین فرصتی برای حفظ قوی کاربر است. 

برای حفظ تداوم کاربر، مهندسان Uber به ویژگی بازیابی اطلاعات کاربری روی آوردند، ابزاری ضروری برای زمانی که ۴۰٪ از مردم در ایالات متحده هر سال تلفن هوشمند خود را تعویض می‌کنند. پس‌از ارزیابی تقاضای کاربر و نمونه‌سازی کد، آن‌ها پشتیبانی از «بازگرداندن اعتبارنامه‌ها» را در برنامه Uber rider معرفی کردند. برای تأیید اینکه بازگرداندن اعتبارنامه‌ها به رفع اصطکاک برای ورود مجدد به سیستم کمک می‌کند، تیم Uber یک آزمایش A/B موفق را برای یک دوره پنج هفته‌ای اجرا کرد. این ادغام منجر به کاهش ورودهای دستی به سیستم شد که وقتی در پایگاه کاربری عظیم Uber پیش‌بینی می‌شود، تخمین زده می‌شود که سالانه ۴ میلیون ورود دستی به سیستم را حذف کند.

حذف اصطکاک ورود به سیستم با «بازگرداندن اعتبارنامه‌ها»

restore-credentials.gif

در گذشته تلاش‌هایی برای بازیابی حساب در دستگاه‌های جدید بااستفاده از راه‌حل‌هایی مانند پشتیبان‌گیری منظم داده‌ها و BlockStore انجام شده است، اگرچه هر دو راه‌حل نیاز به هم‌رسانی مستقیم نشان‌های اصالت‌سنجی از دستگاه مبدأ به دستگاه مقصد داشتند. ازآنجایی‌که اطلاعات توکن بسیار حساس است، از این راه‌حل‌ها فقط تا حدودی برای پیش‌تکمیل فیلدهای ورود به سیستم در دستگاه مقصد و کاهش برخی اصطکاک‌ها درطول جریان‌های ورود به سیستم استفاده می‌شود. گذرکلیدها همچنین برای ارائه روش ورود به سیستم امن و سریع استفاده می‌شوند، اما ماهیت کاربرمحور آن‌ها تأثیرشان را بر انتقال یکپارچه دستگاه محدود می‌کند.

توماس اولیویرا هورتا، مهندس Android در Uber، می‌گوید: «برخی‌از کاربران هر روز از برنامه Uber استفاده نمی‌کنند، اما انتظار دارند وقتی به آن نیاز دارند، به‌درستی کار کند.» «اینکه درست وقتی برنامه را باز می‌کنید تا در تلفن Android جدیدتان درخواست خودرو کنید متوجه شوید از سیستم خارج شده‌اید می‌تواند تجربه ناخوشایند و دلسردکننده‌ای باشد.»

با بازگرداندن اعتبارنامه‌ها، مهندسان توانستند این شکاف را پر کنند. این API یک توکن یکتا در دستگاه قدیمی تولید می‌کند که وقتی کاربر داده‌های برنامه‌اش را درطول فرایند آماده‌سازی استاندارد بازیابی می‌کند، به‌طور یکپارچه و بی‌صدا به دستگاه جدید منتقل می‌شود. این فرایند از سازوکار بازیابی و پشتیبان‌گیری بومی سیستم‌عامل Android استفاده می‌کند و انتقال ایمن کلید بازیابی را به‌همراه داده‌های برنامه تضمین می‌کند. این رویکرد ساده‌شده انتقال حساب را به‌صورت ساده و ایمن تضمین می‌کند و الزامات امنیتی Uber را بدون نیاز به ورودی اضافی ازسوی کاربر یا سربار توسعه برآورده می‌کند.

توجه: کلیدهای بازیابی و گذرکلیدها از پیاده‌سازی سرور زیربنایی یکسانی استفاده می‌کنند. بااین‌حال، وقتی آن‌ها را در پایگاه داده‌تان ذخیره می‌کنید، باید بین آن‌ها تمایز قائل شوید. این تمایز بسیار مهم است زیرا گذرکلیدهای ایجادشده توسط کاربر را می‌توان مستقیماً توسط کاربر مدیریت کرد، درحالی‌که کلیدهای بازیابی توسط سیستم مدیریت می‌شوند و از میانای کاربر پنهان هستند.

توماس گفت: «با پذیرش «بازگرداندن اعتبارنامه‌ها» در برنامه راننده Uber، شاهد استفاده مداوم از آن بودیم.» «در مرحله عرضه فعلی، به‌طور میانگین ۱۰٬۰۰۰ کاربر متمایز روزانه با «بازگرداندن اعتبارنامه‌ها» به سیستم وارد شده‌اند و هنگام باز کردن برنامه برای اولین‌بار در دستگاه جدید، از تجربه‌ای یکپارچه لذت برده‌اند. انتظار داریم وقتی عرضه را به کل پایگاه کاربرانمان گسترش دهیم، این تعداد دوبرابر شود.»

image_thomas2.png

ملاحظات پیاده‌سازی

توماس گفت: «ادغام با دنبال کردن کد نمونه و اسناد و با اصلاحات جزئی در سمت Android بسیار آسان بود.» «برنامه ما قبلاً از Credential Manager برای گذرکلیدها استفاده می‌کرد و باطن فقط به چند تغییر کوچک نیاز داشت. بنابراین، فقط لازم بود وابستگی Credential Manager را به جدیدترین نسخه آن به‌روز کنیم تا به Restore Credentials API جدید دسترسی پیدا کنیم. ما کلید بازیابی را ازطریق همان جریان ایجاد گذرکلید ایجاد کردیم و وقتی برنامه ما در دستگاه جدیدی راه‌اندازی می‌شود، برنامه با تلاش برای بازیابی بی‌صدای گذرکلید، به‌طور پیش‌گیرانه این کلید را بررسی می‌کند. اگر کلید بازیابی پیدا شود، بلافاصله برای ورود خودکار کاربر به سیستم استفاده می‌شود و هرگونه ورود دستی به سیستم را دور می‌زند.»

درطول فرایند توسعه، مهندسان Uber با چند چالش درطول پیاده‌سازی مواجه شدند—از انتخاب نقطه ورود مناسب تا مدیریت چرخه حیات اطلاعات کاربری در پس‌رانه.

انتخاب نقطه ورودی «بازگرداندن اعتبارنامه‌ها»

مهندسان هنگام انتخاب نقطه ورودی «بازگرداندن اعتبارنامه‌ها» برای بازیابی، توازن بین تجربه کاربری کاملاً یکپارچه و سادگی پیاده‌سازی را به‌دقت سنجیدند. درنهایت، آن‌ها راه‌حلی را در اولویت قرار دادند که تعادل ایده‌آلی را ارائه می‌داد.

توماس گفت: «این کار می‌تواند درطول راه‌اندازی برنامه یا در پس‌زمینه درطول بازیابی و راه‌اندازی دستگاه بااستفاده از BackupAgent انجام شود.» «نقطه ورود به سیستم در پس‌زمینه برای کاربر یکپارچه‌تر است، اما چالش‌هایی را در عملیات پس‌زمینه ایجاد کرد و نیاز به استفاده از BackupAgent API داشت که منجر به افزایش پیچیدگی در پایگاه کد بزرگی مانند Uber می‌شد.» آن‌ها تصمیم گرفتند این ویژگی را درطول اولین راه‌اندازی برنامه پیاده‌سازی کنند که به‌طور قابل‌توجهی سریع‌تر از ورود به سیستم دستی بود.

رسیدگی به چالش‌های سمت سرور 

درطول ادغام با میاناهای برنامه‌سازی کاربردی WebAuthn در پس‌زمینه، چند چالش در سمت سرور به‌وجود آمد، زیرا طراحی آن‌ها فرض می‌کرد که درستی‌سنجی کاربر همیشه الزامی است و همه اطلاعات اعتباری در تنظیمات حساب کاربر فهرست می‌شوند؛ هیچ‌کدام از این فرض‌ها برای کلیدهای «بازگرداندن اعتبارنامه» که توسط کاربر مدیریت نمی‌شوند کارساز نبود.

تیم Uber این مشکل را با ایجاد تغییرات جزئی در سرویس‌های WebAuthn و ایجاد انواع جدید اعتبارنامه برای متمایز کردن گذرکلیدها از «بازگرداندن اعتبارنامه‌ها» و پردازش مناسب آن‌ها حل کرد.

مدیریت چرخه حیات «بازگرداندن اعتبارنامه‌ها»

مهندسان Uber در مدیریت کلیدهای اطلاعات کاربری در پس‌بک با چالش‌های متعددی مواجه شدند، با پشتیبانی تخصصی از مهندس پس‌بک، رایان اولافلین:

  • جلوگیری از کلیدهای یتیم: یک چالش مهم، تعریف استراتژی‌ای برای حذف «کلیدهای عمومی» ثبت‌شده بود تا از «یتیم» شدن آن‌ها جلوگیری شود. برای مثال، حذف نصب برنامه باعث حذف اطلاعات کاربری محلی می‌شود، اما چون این کنش به پس‌رانه سیگنال نمی‌دهد، کلید استفاده‌نشده‌ای در سرور باقی می‌ماند.
  • متعادل کردن طول عمر کلید: کلیدها به «زمان زندگی» نیاز داشتند که به‌اندازه کافی طولانی باشد تا بتواند موارد حاشیه‌ای را مدیریت کند. برای مثال، اگر کاربری فرایند پشتیبان‌گیری و بازیابی را انجام دهد و سپس به‌طور دستی از سیستم دستگاه قدیمی خارج شود، کلید از آن دستگاه قدیمی حذف می‌شود. اما کلید باید در سرور معتبر باقی بماند تا دستگاه جدید همچنان بتواند از آن استفاده کند.
  • پشتیبانی از چند دستگاه: ازآنجایی‌که کاربر ممکن است چند دستگاه داشته باشد (و بتواند از هرکدام از آن‌ها پشتیبان‌گیری و بازیابی را شروع کند)، لازم بود که پسین از چند «اعتبارنامه بازیابی» برای هر کاربر (یکی برای هر دستگاه) پشتیبانی کند.

مهندسان Uber با ایجاد قوانینی برای حذف کلید سمت سرور براساس ثبت اطلاعات اعتباری جدید و استفاده از اطلاعات اعتباری، این چالش‌ها را برطرف کردند.

این ویژگی در یک فرایند توسعه و آزمایش سریع دوماهه از طراحی به تحویل رسید. پس‌از آن، آزمایش A/B پنج هفته‌ای (زمان اعتبارسنجی ویژگی با کاربران) به‌خوبی پیش رفت و نتایج غیرقابل‌انکاری به‌همراه داشت.  

جلوگیری از ریزش کاربر با «بازگرداندن اعتبارنامه‌ها»

Uber با حذف ورود به سیستم دستی در دستگاه‌های جدید، کاربرانی را که ممکن بود در دستگاه جدید از جریان ورود به سیستم خارج شوند حفظ کرد. این افزایش در راحتی مشتری در طیف گسترده‌ای از بهبودها منعکس شد، و اگرچه ممکن است در نگاه اول جزئی به‌نظر برسند، اما تأثیر آن در مقیاس پایگاه کاربر Uber بسیار زیاد است: 

  • ‫٪۳٫۴ کاهش در ورودهای دستی به سیستم (گذرواژه یک‌بارمصرف پیامکی، گذرواژه‌ها، ورود به سیستم اجتماعی).
  • ‫٪۱٫۲ کاهش در هزینه‌های ورود به سیستم که به گذرواژه یک‌بارمصرف پیامکی نیاز دارند.
  • ‫۰٫۵۷۵٪ افزایش در نرخ دسترسی Uber (درصد دستگاه‌هایی که باموفقیت به صفحه اصلی برنامه رسیدند).
  • ‫۰٫۶۱۴٪ افزایش در دستگاه‌هایی که سفر را تکمیل کرده‌اند. 

امروزه، «بازگرداندن اعتبارنامه‌ها» درحال تبدیل شدن به بخش استاندارد برنامه مسافر Uber است و بیش‌از ٪۹۵ کاربران در گروه آزمایشی ثبت‌نام کرده‌اند. 

uber-devices.png

درحین راه‌اندازی دستگاه جدید، کاربران می‌توانند داده‌های برنامه و اطلاعات کاربری را از نسخه پشتیبان بازیابی کنند. پس‌از انتخاب Uber برای بازیابی و اتمام فرایند پس‌زمینه‌ای، برنامه به‌طور خودکار کاربر را در اولین راه‌اندازی دستگاه جدید به سیستم وارد می‌کند.

image_thomas.png

تأثیر نامرئی اما عظیم «بازگرداندن اعتبارنامه‌ها»

در ماه‌های آینده، Uber قصد دارد ادغام «بازیابی اعتبارنامه‌ها» را گسترش دهد. با پیش‌بینی از نتایج دوره آزمایشی، آن‌ها تخمین می‌زنند که این تغییر سالانه ۴ میلیون ورود به سیستم دستی را حذف خواهد کرد. آن‌ها با ساده کردن دسترسی به برنامه و برطرف کردن یک چالش عمده کلیدی، فعالانه درحال ایجاد پایگاه مشتریان راضی‌تر و وفادارتر هستند، یک سفر در هر بار.

مت مولر، مدیر محصول ارشد (هویت اصلی) در Uber، گفت: «ادغام RestoreCredentials از Google به ما امکان داد تجربه یکپارچه و بی‌نقصی را که کاربران ما در دستگاه جدید انتظار دارند ارائه دهیم.» «این امر مستقیماً به افزایش قابل‌اندازه‌گیری در درآمد منجر شد و ثابت کرد که کاهش تنش در ورود به سیستم کلید تعامل و حفظ کاربر است.»

آماده‌اید تجربه ورود به سیستم برنامه‌تان را بهبود دهید؟

بااستفاده از بازگرداندن اعتبارنامه‌ها، با نحوه تسهیل تجربه ورود به سیستم یکپارچه هنگام تعویض دستگاه آشنا شوید و در پست وبلاگ بیشتر بخوانید. در جدیدترین نسخه قناری Android Studio Otter می‌توانید ادغام خود را اعتبارسنجی کنید، زیرا ویژگی‌های جدید به شبیه‌سازی سازوکارهای پشتیبان‌گیری و بازیابی کمک می‌کنند. 

اگر با Credential Manager آشنایی ندارید، می‌توانید برای دریافت راهنمایی درباره ادغام به اسناد، codelab، و نمونه‌های رسمی ما مراجعه کنید

نویسنده:
ادامه خواندن