שירותי Google Play במבחן הכשל: מה קורה כששכבת התשתית של אנדרואיד נשברת
קל לשפוט אפליקציה לפי הרגעים שבהם הכול עובד: לוחצים, מאשרים, מקבלים תוצאה וממשיכים. את שירותי Google Play צריך לבחון בדיוק מהצד השני. זו אינה אפליקציה שפותחים בשביל להעביר זמן, אלא שכבת תשתית שמתווכת בין Android לבין חשבון Google, התראות, מיקום, אימות, עדכונים ושורה ארוכה של יישומים אחרים. לכן השאלה המעניינת אינה אם היא מרשימה, אלא אם היא יודעת להיכשל בלי להפוך תקלה קטנה ליום שלם של ניחושים.
בבדיקה שלי התמקדתי בתרחישים שאינם מופיעים בדרך כלל בתמונות החנות: התקנה שנקטעת, הרשאה שנדחית, חיבור חלש, חזרה מאפליקציה שנשארה ברקע ומצב שבו המערכת מציגה הודעה כללית מדי. התמונה שעלתה מורכבת. השירותים יציבים מאוד כשהמכשיר מעודכן והחשבון מוגדר כראוי, אבל ברגע שנכנסים לאזור האפור, המשתמש מקבל פחות הסברים ממה שנדרש. זו מערכת חיונית, לא תמיד מערכת ידידותית.
שירותי Google Play
מה באמת מבטיחה שכבת השירותים
ההבטחה הבסיסית פשוטה: אפליקציות Android לא יצטרכו לבנות מחדש כל יכולת משותפת. במקום שכל יישום יטפל לבדו באימות חשבון, במיקום, בהודעות דחיפה או בבדיקת זמינות של רכיב מערכת, שירותי Google Play מספקים תשתית מרכזית. עבור המשתמש זה אמור להתבטא בפחות התקנות נפרדות, פחות חלונות הרשאה כפולים ופחות התנהגות לא עקבית בין אפליקציות.
היתרון הזה מורגש במיוחד באפליקציות שתלויות בחשבון ובמיקום. ב-Google Wallet, למשל, שכבת השירותים היא חלק מהשרשרת שמאפשרת לזהות את המשתמש ולבדוק אם המכשיר עומד בדרישות אבטחה. ב-Uber Eats היא עשויה להיות מעורבת באימות, במיקום ובהתראות על הזמנה. אפילו במשחקים כמו SimCity BuildIt או Trivia Crack, תקלת חשבון או הודעה שלא מגיעה יכולה להיראות בתחילה כמו בעיה במשחק עצמו, אף שהמקור נמצא עמוק יותר במערכת.
כאן גם מתחילה הבעיה: מאחר שהשירותים אינם יעד ברור, קשה לדעת אם הם עובדים או רק מחכים לתיקון. אין מסך מרכזי שמציג בריאות כללית של כל היכולות, ואין מדד מובן למשתמש שמסביר אם התקלה מקומית, קשורה לחשבון או נובעת משרת מרוחק. ההבטחה היא שקיפות תפעולית מאחורי הקלעים; החוויה בפועל היא לעיתים קרובות ניחוש מושכל.
נקודות הכשל כבר בהפעלה הראשונה
ההפעלה הראשונה אינה תהליך יחיד. היא תלויה בגרסת Android, ביצרן המכשיר, בחנות האפליקציות, בחשבון Google, בשירותי הסנכרון ובחיבור זמין. במכשיר חדש ומעודכן, רוב העבודה מתבצעת בלי שהמשתמש ירגיש בה. זו הצלחה אמיתית: התשתית נבלעת ברקע. אבל במכשיר ישן, לאחר איפוס, או כשעדכון אוטומטי נעצר, אותה שקיפות הופכת לחוסר ודאות.
הכשל הראשון הנפוץ הוא גרסה שאינה תואמת. אפליקציה מסוימת מבקשת רכיב חדש יותר, החנות מציעה עדכון, אך ההורדה נשארת ממתינה בגלל אחסון מלא, מצב חיסכון קיצוני או חיבור מוגבל. המשתמש רואה אפליקציה שלא פועלת, לא שירות שזקוק לעדכון. במקרים כאלה, ההמלצה המעשית היא לבדוק קודם את מקום האחסון, את עדכוני המערכת ואת מצב החנות, ורק אחר כך למחוק נתונים או להסיר חשבון. צעדים דרסטיים מוקדמים עלולים להוסיף נזק לבעיה פשוטה.
נקודת כשל נוספת היא הרשאות. שירותי Google Play אינם מקבלים תמיד את כל ההרשאות הנדרשות באותו רגע, וחלק מהן קשורות לאפליקציה שמשתמשת בשירות ולא לשירות עצמו. אם המשתמש דוחה גישה למיקום, למשל, הסימפטום יופיע במפה, במשלוח או במשחק מבוסס מיקום, ולא במסך שמסביר את מקור התקלה. זו אינה טעות חד-פעמית של המשתמש; זו תוצאה של ארכיטקטורה שמחלקת אחריות בין כמה מסכים.
מה שעובד היטב הוא היכולת להתאושש מעדכון רגיל. כשהמכשיר מחובר לחשמל, פנוי מאחסון ומחובר לרשת יציבה, העדכון בדרך כלל שקט ומהיר יחסית. מה שלא עובד מספיק טוב הוא תהליך האבחון במקרה שהעדכון לא הושלם. אין רצף ברור של שלבים, ואין הבחנה עקבית בין הורדה שלא התחילה לבין התקנה שהסתיימה אך לא הופעלה.
טעויות, ביטול והיכולת לחזור לאחור
במערכת תשתיתית, טעות קטנה צריכה להיות הפיכה. אם דחיתי הרשאה, אני צריך לדעת איך להחזיר אותה. אם עצרתי עדכון, אני צריך לדעת אם הוא ימשיך מאותה נקודה. אם הסרתי חשבון מהמכשיר, אני צריך להבין אילו נתונים יושפעו. שירותי Google Play מצליחים בחלק מהתרחישים האלה, אבל לא תמיד מספרים למשתמש מה מצב הפעולה.
הרשאות הן המקרה הנוח יותר. בדרך כלל אפשר להיכנס להגדרות Android, למצוא את האפליקציה הרלוונטית ולשנות את ההחלטה. הבעיה היא שהמשתמש צריך לדעת איזו אפליקציה לתקן. כאשר הודעה אומרת שהמיקום אינו זמין, היא אינה תמיד מצביעה על שירותי Google Play, על האפליקציה הפעילה או על הגדרת המיקום הכללית. החזרה לאחור אפשרית, אך הדרך אליה אינה קצרה.
ניקוי מטמון הוא צעד מתון יחסית, אבל גם כאן נדרשת זהירות. מטמון הוא מידע זמני, בעוד שניקוי נתונים עלול לאפס העדפות, חיבורים ומצבי התחברות. מדריכים רבים ברשת מציעים את שני הצעדים כמעט באותה נשימה, וזה מתכון לפעולה מוגזמת. בבדיקה שלי, הגישה הנכונה היא להתחיל בהפעלה מחדש, לבדוק עדכון וחיבור, ורק אז לנקות מטמון. ניקוי נתונים צריך להישמר למצב שבו יש הוראות ממוקדות או גיבוי ברור.
החלק החלש יותר הוא ביטול פעולות באמצע. אם עדכון נקטע, המערכת בדרך כלל יודעת לנסות שוב, אבל המשתמש אינו מקבל הבטחה ברורה לגבי נקודת ההמשך. אם תהליך אימות נעצר בזמן מעבר בין יישומים, לא תמיד ברור אם הוא נכשל או פשוט ממתין לחזרה. היכולת להתאושש קיימת, אבל היא אינה תמיד נראית לעין. עבור מומחה זו אי-נוחות; עבור משתמש רגיל זו סיבה ללחוץ שוב ושוב, לפתוח כמה מסכים וליצור מצבים סותרים.
הפרעה באמצע וחזרה מאוחר יותר
הטלפון הנייד הוא מכשיר של הפרעות. שיחה נכנסת, נעילת מסך, מעבר לרשת אחרת או פתיחת מצלמה יכולים לעצור תהליך שצריך להמשיך ברקע. שירותי Google Play בנויים בדיוק לעולם כזה, ובתרחישים רבים הם חוזרים לפעול בלי דרמה. התראה שנשלחה בזמן שהאפליקציה הייתה סגורה יכולה להופיע מאוחר יותר, וסנכרון שנפסק עשוי להתחדש לאחר חזרת החיבור.
אבל חזרה מוצלחת אינה זהה לחזרה מובנת. לפעמים האפליקציה שמעל השירות מציגה תוצאה ישנה, בעוד שהפעולה ברקע כבר הושלמה. במקרים אחרים, המשתמש חוזר למסך שנראה תקוע, יוצא ממנו וחוזר שוב, ורק אז רואה את המצב החדש. אין כאן בהכרח אובדן נתונים, אך יש אובדן אמון. ברגע שאינני יודע אם פעולה הושלמה, אני נוטה לבצע אותה מחדש, גם אם זה עלול ליצור כפילות.
בבדיקה עם תרחישי חזרה מאפליקציות שונות, ההבדל בין יישום טוב ליישום חלש לא היה תמיד בשירות עצמו, אלא בדרך שבה האפליקציה מציגה את התוצאה. Google Wallet, למשל, חייבת להציג מצב חד-משמעי יותר מאפליקציית משחק. באפליקציה של משלוח, עיכוב של דקה בהתראה נסבל; באימות תשלום, אותה עמימות מדאיגה. שירותי Google Play מספקים את הצינור, אך אינם יכולים לתקן ממשק שמסתיר את מצב הפעולה.
המסקנה כאן חשובה: אין להאשים את שכבת התשתית בכל חזרה לא מוצלחת. לעיתים הכשל נמצא בניהול הרקע של יצרן המכשיר או באפליקציה עצמה. עם זאת, מאחר שהשירותים מחברים בין כל החלקים, הם זקוקים לאבחון טוב יותר. המשתמש לא צריך לדעת מי אשם כדי להבין מה לעשות עכשיו.
חיבור חלש, מעבר בין רשתות ולחץ אמיתי
בחיבור יציב, רוב המערכות נראות חכמות. המבחן האמיתי הוא רשת עמוסה, קליטה חלשה או מעבר בין רשת אלחוטית לגלישה סלולרית. כאן שירותי Google Play נדרשים להחליט אם להמתין, לנסות שוב, לשמור את הבקשה או להחזיר שגיאה. ההתנהגות אינה אחידה, מפני שכל יכולת משתמשת בשירות באופן שונה.
עדכונים נוטים להיות סלחניים יחסית: הם יכולים להמתין ולנסות שוב. אימותים והתראות רגישים יותר לזמן. אם פג תוקף של בקשה בזמן שהחיבור נפל, המשתמש עשוי לקבל הודעה כללית ולחזור למסך הקודם. מיקום הוא מקרה מורכב במיוחד, משום שהוא משלב חיישנים, הרשאות, הגדרות דיוק ורשת. כשהכול משתבש יחד, קשה להבדיל בין בעיית קליטה לבין בעיית הרשאה.
הדבר החיובי הוא שהשירותים אינם דורשים בדרך כלל חיבור רציף לכל שנייה. פעולות מסוימות נשמרות או מתוזמנות מחדש, והמערכת יודעת להקטין עומס במקום להציף את המשתמש בניסיונות. הדבר השלילי הוא שהמנגנון הזה כמעט בלתי נראה. אין תמיד חיווי שאומר: הפעולה נשמרה ותבוצע כשיהיה חיבור. במקום זאת, רואים לפעמים ספינר ממושך או הודעה קצרה מדי.
למי שמסתמך על ניווט, תשלומים או התראות עבודה, זו אינה בעיית נוחות. זו שאלה של תכנון. כדאי להשאיר מרווח לפני פעולה חשובה, להימנע מאיפוס מיידי ולבדוק אם השירות חזר לאחר שהחיבור התייצב. המערכת יכולה להתאושש, אבל אין להניח שכל פעולה שקטה אכן הושלמה.
מצבים לא ברורים: האזור שבו האמון נשחק
הכשל הקשה ביותר לבדיקה אינו קריסה, אלא מצב ביניים. קריסה לפחות אומרת שמשהו נעצר. מצב ביניים נראה כמו פעולה תקינה, אך אין דרך לדעת אם היא הסתיימה. שירותי Google Play נתקלים בזה בעדכונים, באימות, בסנכרון ובהעברת מידע בין אפליקציות.
הודעות כמו





