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

הכריעו את הפעולות לפני המחבר

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

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

הכריעו את זהות עומס העבודה, ותנו לה בעלים

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

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

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

הכריעו את היקף הרשת, בידיעה שהוא אינו הרשאה

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

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

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

הכריעו את טיפול הנתונים ואת חלוקת האחריות

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

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

הכריעו כשל, הסרה וכיצד תקבלו אותו

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

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

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

מאמרים קשורים