← כל המאמרים

תובנות מהפיתוח

מקומי או בענן? ארכיטקטורת הנתונים הנכונה תלויה במוצר

אחסון מקומי ושירותי ענן פותרים בעיות שונות. ארכיטקטורה טובה מתאימה לאופן השימוש, לשיתוף הפעולה, לצורך בעבודה ללא רשת ולאחריות על הנתונים.

סמארטפון ותיקיית מסמכים מסודרת עם לשוניות, בתוך מסגרת עדינה שמסמלת את גבולות הנתונים.

הבחירה אם לשמור נתונים באופן מקומי או בענן עשויה להישמע כמו עיקרון טכני, אך היא מתחילה באופן השימוש במוצר. רשימה אישית בסמארטפון אחד מציבה דרישות שונות מתכנית שכמה אנשים עורכים בו־זמנית. שתי הארכיטקטורות יכולות להיות אמינות, ושתיהן עלולות להיות מורכבות ללא צורך אם אינן מתאימות לתרחיש.

„מקומי פירושו פרטי” הוא משפט חלקי, בדיוק כמו „ענן פירושו מודרני”. מידע מקומי עלול להיעלם יחד עם המכשיר. שירותי ענן יכולים לאפשר שיתוף פעולה ושחזור, אך הם דורשים חשבונות, תשתית ונתיבי מידע ברורים. החלוקה הנכונה נובעת מהשימוש, לא מהתווית.

בקצרה

  • מקומי או ענן הם החלטת מוצר, לא דירוג איכות.
  • נתונים מקומיים תומכים בעבודה ללא רשת, אך מחייבים דרך אמינה לגיבוי.
  • שירותי ענן מאפשרים מצב משותף, אך מוסיפים חשבונות, סנכרון ותפעול שוטף.

מה באמת פירושם של „מקומי” ו„ענן”

באפליקציה מקומית, העותק הראשי של הנתונים נשמר במכשיר. במקרים רבים האפליקציה יכולה להשלים את התהליך המרכזי בלי רשת או שרת. שירותים של מערכת ההפעלה עדיין עשויים להיות מעורבים בהפצה, בגיבוי המכשיר או בשיתוף קובץ שיוצא. „מקומי” פירושו שהספק אינו מפעיל מסד נתונים מרכזי של האפליקציה עבור נתוני המשתמש האלה; אין פירושו שכל סביבת המכשיר נעלמת.

לפי הגדרת NIST, מחשוב ענן הוא גישה לפי דרישה דרך הרשת למאגר משותף של משאבים שניתנים להגדרה. באפליקציה, המשאבים יכולים לכלול מסדי נתונים, אחסון קבצים, שירותי זהות וכוח חישוב. העותק המרכזי נמצא בדרך כלל בתשתית מרוחקת; מכשירים טוענים נתונים, שולחים שינויים ומיישבים הבדלים במצב.

מוצרים רבים משתמשים בגישה משולבת. הם שומרים נתונים במכשיר כדי שהממשק יישאר מהיר וזמין ללא רשת, ומסתנכרנים ברקע עם שרת. Android Developers מכנים זאת ארכיטקטורה „offline first”: מקור נתונים מקומי משמש בסיס לקריאה, והגישה לרשת מעדכנת את העותק. הענן אינו נעלם; נוסף לו רובד מקומי עם כללי סנכרון.

אחסון מקומי מצמצם תלויות

כאשר אפליקציה אינה דורשת חשבון או שרת, התהליך המרכזי נעשה לרוב פשוט יותר. אין כניסה לחשבון, סיסמה שנשכחה או הפרעה בשירות הסנכרון. בשימוש רגיל אין צורך להעביר מידע אישי אל הספק. הדבר יכול להתאים היטב למודל האמון של אדם יחיד.

הזמינות ללא רשת מיידית. המידע נשאר נגיש במרתף, בבניין עם קליטה חלשה או במהלך נסיעה. אפשר לשמור שינויים בלי לבדוק תחילה מצב מרוחק. תגובת האפליקציה אינה תלויה בזמן ההשהיה של שירות.

גם התפעול יכול להיות פשוט יותר. ללא מסד מרכזי של משתמשים, נעלמים חלק מעלויות השרת, תהליכי החשבון ובעיות הסנכרון המתמשכות. פחות תשתית אינה פירושה שאין תשתית או אחריות: הפצה, חיבור לחנויות, האתר, התמיכה ותחזוקת המוצר נשארים. גם אחסון מקומי, העברות גרסה, טיפול בקבצים ושחזור חייבים להיות מיושמים בקפידה.

היתרון הגדול של אחסון מקומי הוא גם המגבלה שלו

השימוש במכשיר אחד כמאגר ראשי יוצר בהירות, אך גם נקודת כשל יחידה. אם הסמארטפון אובד, ניזוק או שהאפליקציה נמחקת בלי גיבוי מתאים, העותק היחיד של הנתונים עלול להיעלם. כדי להמשיך במכשיר חדש, נדרשת דרך מתוכננת לייצוא ולשחזור.

לכן גיבויים אינם תכונה משנית שאפשר לוותר עליה במוצר מקומי. צריך ליצור אותם באופן ברור, לשמור אותם מחוץ לאפליקציה ולוודא שאפשר לקרוא אותם מאוחר יותר. קובץ שנשמר רק באזור הפרטי של האפליקציה אינו מגן מפני הסרה או אובדן המכשיר. הצפנה יכולה להגן על ייצוא רגיש, אך היא גם מגבירה את האחריות: בלי שירות שחזור מרכזי, ייתכן שלא יהיה אפשר לשחזר סיסמה שאבדה.

גם גיבויים של מערכת ההפעלה דורשים בחינה נפרדת. Apple מסבירה שתיקיות מסוימות של אפליקציה יכולות להיכלל בגיבוי המכשיר או ב־iCloud, בהתאם לסוג הקבצים. המוצר צריך להחליט במכוון אילו נתונים חשובים לאורך זמן, אילו ניתנים לשחזור ואילו זמניים בלבד. עם זאת, צריך להיות ברור למשתמשים אם האפליקציה עצמה מספקת גיבוי נייד ועל מה אפשר לסמוך בעת החלפת מכשיר.

מערכות ענן מאפשרות שיתוף פעולה והמשכיות

ברגע שכמה אנשים זקוקים לאותו מצב עדכני, לתשתית מרכזית יש יתרון ברור. צוות יכול לשתף משימות, להקצות תפקידים ולמזג שינויים ממכשירים שונים. אין צורך להעביר ידנית קובץ למחשב חדש; לאחר הכניסה אפשר לטעון את המצב הקיים.

שירותי ענן מתאימים גם לאוטומציה מרכזית. שרת יכול להריץ תהליכים ברקע, להפיץ התראות משותפות, לשלב נתונים עם מערכות אחרות ולהחיל כללים גם כששום סמארטפון מסוים אינו פעיל. הדבר חיוני לעיתים לפורטלים להזמנות, לניהול צוותים או לניתוחים כלל־ארגוניים.

גם גיבוי ושחזור יכולים להיות קלים יותר למשתמש. עותקים כפולים בשרת, היסטוריית גרסאות וגיבויים מנוהלים מצמצמים את הסיכון שכל המידע יהיה תלוי במכשיר אחד. היכולת הזאת שייכת לשירות המסוים; היא אינה תכונה אוטומטית של המילה „ענן”. אחסון תקין, בדיקות שחזור, כללי מחיקה ותהליכי חירום חייבים להתקיים בפועל.

סנכרון הוא בעיית מוצר בפני עצמה

אפליקציה עם עותק מקומי וסנכרון בענן מציעה, במקרה האידיאלי, עבודה מהירה ללא רשת והמשכיות בין מכשירים. מכאן עולה שאלה קשה: מה קורה כאשר שני מכשירים משנים בנפרד את אותה רשומה?

אפשר לפתור חלק מההתנגשויות בעזרת חותמות זמן. במקרים אחרים, כלל של „הגרסה האחרונה קובעת” עלול למחוק מידע חשוב. רשימות יכולות למזג פריטים, בעוד שטקסטים ארוכים עשויים לדרוש פתרון התנגשויות גלוי. קבצים זקוקים למצב העלאה, לניסיונות חוזרים לאחר הפרעה ולכללי מחיקה. המוצר צריך גם להראות אם המצב נשמר רק מקומית, כבר הסתנכרן או נתקל בשגיאה.

המדריך של Android לגישת „offline first” מתאר, בין היתר, מקורות נתונים מקומיים וברשת, תורי סנכרון ואסטרטגיות לקריאה ולכתיבה. מכאן נובע מערך בדיקות משמעותי: מצב טיסה, חיבורים לא יציבים, הפסקת תהליכים, שליחה כפולה, גרסאות ישנות של האפליקציה ונתונים ששונו במקביל.

לכן אין לתכנן סנכרון כמתג יחיד. הוא רכיב קבוע בלוגיקה של התחום ובממשק. אם אינו נחוץ לתועלת הממשית, השמטתו יכולה להפוך את המוצר לעמיד הרבה יותר. אם שיתוף פעולה הוא צורך מרכזי, לעומת זאת, ויתור עליו אינו מיקוד אלא מגבלה לא נכונה.

הגנת המידע תלויה במסלול הנתונים המלא

אחסון מקומי יכול למנוע העברת מידע והצטברות של מאגרי נתונים מרכזיים. לכן הוא דרך יעילה לצמצום נתונים כאשר אפשר לבצע את המשימה ללא שרת. עם זאת, הגנת המכשיר, בידוד האפליקציה, הצפנה מקומית, הרשאות, יומנים, ייצוא וגיבויים נשארים רלוונטיים. קובץ ייצוא לא מוגן במקום משותף יכול לבטל במהירות את יתרון האחסון הפרטי.

במוצרי ענן נכנסים לתמונה גורמים ושאלות נוספים: איזה מידע יוצא מהמכשיר? באיזה אזור הוא מעובד? מי מפעיל את התשתית ואת התמיכה? כיצד הגישה מאובטחת, נרשמת ומבוטלת? כמה זמן נשארים עותקים לאחר מחיקה? איזה מידע נדרש לניתוח, להתראות או לשירותים בסיוע מודלים?

ענן אינו אומר בהכרח שיתוף רחב. פלטפורמה שמתוכננת היטב יכולה לצמצם נתונים, להצפין אותם, להפריד הרשאות בקפידה ולהציע תהליכי מחיקה שקופים. גם אחסון מקומי אינו מבטיח שרק המשתמש יוכל לראות את המידע; מערכת ההפעלה, גיבויי המכשיר, קבצים משותפים או מכשיר שנפרץ משנים את התמונה. הגנת המידע נוצרת מן הארכיטקטורה הממשית ומן הנהלים התפעוליים.

התרחבות משפיעה על יותר ממספר המשתמשים

ארכיטקטורות ענן מזוהות לעיתים עם יכולת להתרחב. שירות מרכזי יכול לקלוט משתמשים, מכשירים או נפחי מידע נוספים אם מסד הנתונים, האחסון והתפעול מתוכננים לכך. הדבר יוצר עלויות שוטפות, ניטור, תכנון קיבולת ואחריות לאבטחה. שימוש מועט עשוי לעלות מעט; שימוש כבד או קבצים גדולים יכולים לשנות את המודל העסקי.

אפליקציות מקומיות מפזרות את האחסון ואת החישוב בין המכשירים. הספק אינו משלם על מקום בענן לכל קובץ אישי. מנגד, המכשירים שונים בביצועים ובשטח האחסון הזמין. אוספי תמונות גדולים, מודלים מקומיים מורכבים או העברות גרסה ממושכות עלולים להכביד על סמארטפונים ישנים. התמיכה צריכה להתמודד עם מצבים שאי אפשר לראות או לתקן באופן מרכזי.

ההתרחבות תלויה גם בתחום המוצר. מוצר לעשרה נכסים עשוי להזדקק רק למסננים טובים יותר ולמסד מקומי גדול יותר. מוצר לעשרה אנשי מקצוע צריך תפקידים, כללים להתנגשויות ויכולת מעקב. מספר הרשומות לבדו אינו קובע מתי נדרש ענן.

Propivio כדוגמה לבחירה מקומית מודעת

Propivio מיועדת לאדם אחד שמנהל בסמארטפון מידע על כמה מהנכסים שלו. אין חשבון משתמש, עריכה משותפת או שירות ענן אוטומטי של האפליקציה. מסמכים, תמונות, אנשי קשר, קריאות מונים ונתונים נוספים נשמרים מקומית באזור הפרטי של האפליקציה.

בתרחיש הזה, הגישה מצמצמת מורכבות מיותרת של חשבונות וסנכרון. ההשלכה אינה מוסתרת: חשוב לקיים תהליך חיצוני לגיבוי ולשחזור, וכמה מכשירים אינם חולקים מצב מסונכרן באופן אוטומטי. מי שרוצה לעבוד בצוות, לנהל תיקי נכסים גדולים באופן מרכזי או לחבר פורטלים נמצא במכוון מחוץ למודל המוצר הזה.

מוצר אחר של Zappapps עשוי להגיע להחלטה אחרת. ברגע שהמוצר תלוי בשיתוף פעולה, באוטומציה מרכזית או בגישה משותפת, ארכיטקטורת ענן יכולה להתאים למרות המורכבות הגבוהה יותר. עקביות של מותג אינה דורשת שכל אפליקציה תיבנה באותה דרך טכנית; היא דורשת להסביר כל החלטה באופן מובן.

מטריצת החלטות במקום אמונה טכנית

לפני בחירת הארכיטקטורה כדאי לשאול שאלות מעשיות:

  • האם אדם אחד עובד לבדו, או שכמה בעלי תפקידים צריכים לראות את אותו מצב עדכני?
  • האם התהליך המרכזי חייב לפעול במלואו ללא רשת?
  • עד כמה חמור יהיה אובדן המכשיר?
  • מי אחראי לגיבוי ולשחזור?
  • האם גישה בין מכשירים היא תועלת מרכזית או נוחות מזדמנת?
  • אילו נתונים רגישים ואילו העברות באמת נחוצות?
  • האם המוצר זקוק לתהליכים ברקע או לשילובים כאשר שום מכשיר אינו פעיל?
  • אילו עלויות תפעול, תמיכה ותשתית הן בנות־קיימא?
  • כיצד מטפלים בייצוא, במחיקה, בהעברה ובמעבר אפשרי בין ספקים?

התשובות יכולות להוביל לפתרון מקומי, לפתרון ענן או לשילוב שמעניק עדיפות לעבודה ללא רשת. הן עשויות להשתנות יחד עם המוצר. עם זאת, שינוי מאוחר יקר מפני שהוא משפיע על זהות הנתונים, על התנגשויות ועל אמון. לכן אין לקבל את ההחלטה הראשונה רק לפי טכנולוגיה מועדפת.

הארכיטקטורה הנכונה מבהירה את השלכותיה

אנשים אינם צריכים להבין מערכות מבוזרות, אך עליהם לדעת מה הארכיטקטורה אומרת ביום־יום: האם האפליקציה פועלת בלי רשת? האם הנתונים זמינים במכשירים אחרים? כיצד יוצרים גיבוי? איזה תוכן יוצא מהטלפון?

מקומי וענן אינם דרגות איכות. הם מחלקים יכולות, סיכונים ואחריות בדרכים שונות. הבחירה הטובה מתאימה למטרה האמיתית ומבהירה את השלכותיה הן בטכנולוגיה והן בשפת המוצר.

מקורות וקריאה נוספת