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