Latest newsעברית
Back to feedטכנולוגיותNewsMeld Editorial

Один MaxCode вместо десятка ключей: как PushMeld добавляет уведомления туда, где их не было

Один MaxCode вместо десятка ключей: как PushMeld добавляет уведомления туда, где их не было

{"text": "{\n \"title\": \"אודין MaxCode במקום עשרה מפתחות: איך PushMeld מוסיף הודעות לשם שלא היו קיימות\",\n \"slug\": \"odin-maxcode-vmesto-desyatka-klyuchey-kak-pushmeld-dobavlyaet-uvedomleniya-tuda-gde-ih-ne-bylo\",\n \"excerpt\": \"איך MaxCode מעביר את ניהול ה־push וה־email מאתרים, שרתים, סקריפטים ומכשירים ל־PushMeld.\",\n \"body_markdown\": \"

נתאר לעצמנו את המחשב הביתי שמבצע בכל לילה גיבויים חשובים של קבצים. התוצאה נשמרת ביומן המערכת: ההליך הושלם בהצלחה או שהתרחשה שגיאה.

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

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

עיקר הרעיון הוא MaxCode — קוד מאובטח יחיד, שבעזרתו PushMeld מקבל את כל המידע הדרוש להמשך משלוח ההודעה.

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

אתחיל בהגדרת ההקשר: PushMeld שייך למערכת MELD®, ו־DigiMeld UG היא החברה שמפתחת אותו.

המקור יודע רק על האירוע

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

PushMeld מעביר את כל אלה מהמערכת המקורית לétת ייחודית מנוהלת בנפרד.

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

אין צורך שידע:

  • כמה מכשירים מחוברים לפרויקט;

  • איזה טלפון פעיל כרגע;

  • איזה ספק שירות אמור לשרת את ה־push;

  • האם משלוח הודעות בדואר אלקטרוני מופעל;

  • האם למשתמש יש טלפון חכם חדש;

  • האם הפסיקו להשתמש בטאבלט ישן;

  • מי צריך לקבל הודעה מסוימת.

כל אלה מוגדרים כבר בתוך PushMeld.

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

אחד MaxCode במקום אוסף מפתחות

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

MaxCode מאחד את כל מה שנדרש לאשלח הודעה בקוד מאובטח אחד.

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

למערכת שמשלחת לא נדרש לשמור בנפרד:

  • מזהה פרויקט;

  • מפתח API וסוד נוסף;

  • טוקני מכשירים מחוברים;

  • פרמטרי כל מקבל;

  • מפתחי ספקי ה־push השונים;

  • הגדרות נפרדות ל־push ו־email.

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

לכן, нельзя воспринимать MaxCode כעוד מפתח, נוסף ליתר המפתחות. תפקידו להחליף את כל האוסף של מפתחות וטוקנים מבודדים בקוד אחד.

הודעה משם שממנה אין מתוכנן

ניתן להשתמש ב־MaxCode בכל מערכת שיכולה לבצע שאילתה HTTP באופן עצמאי או באמצעות סקריפט עזר קטן.

לדוגמה, PushMeld יכול להודיע כאשר:

  • השרת הבית סרב להגיב;

  • הגיבוי הסתיים או נכשל בשגיאה;

  • סקריפט עצמאי ביצע משימה ארוכה;

  • מדפסת תלת־ממד סיימה את ההדפסה;

  • חיישן זיהה נזילה;

  • דלת נפתחה או השעון הוכרז כמתקתק;

  • הופיעה באתר מידע רלוונטי;

  • המחיר של מוצר השתנה;

  • נפתח מקום לרישום;

  • תוכנה ישנה סיימה לעבד קובץ גדול;

  • חנות מקוונת קטנה קיבלה הזמנה חדשה.

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

זה מספיק להעביר את האירוע ל־PushMeld.

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

לא רק push, גם email

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

אפשר להשתמש ב־push, ב־email או בשניהם — בהתאם לתצורת הפרויקט והאפשרויות הזמינות.

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

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

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

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

פרויקט אחד — מקור אירועים אחד

פרויקטים מאפשרים להפריד הודעות לפי המשימה שלהן.

משתמש רגיל יכול ליצור, למשל:

  • HomeServer — מצב השרת הבית;

  • Backups — תוצאות הגיבוי;

  • SmartHome — חיישנים ואוטומציה ביתית;

  • PriceMonitor — שינויים במחיר;

  • Website — פניות חדשות מהאתר}

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

בתוך היישום, ברור מיד מאיפה ההודעה ומב איזה משימה היא נוצרה.

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

טלפון חדש אינו דורש שינוי בתוכנה

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

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

MaxCode נמצא מעל זה. הוא שייך לפרויקט ולא לטלפון בודד.

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

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

אותו דבר חשוב גם להוספת email או שינוי פרמטרי משלוח אחרים.

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

חינם למטרות פשוטות

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

בפועל, אפשר להתחיל ממשימה ביתית פשוטה.

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

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

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

עקרון אחד לאדם ולחברה

המכניקה של MaxCode לא משתנה בהתאם לגודל המשימה.

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

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

נניח שיש ארגון עם שלושה מקורות אירוע:

  • Orders — הזמנות חדשות;

  • Payments — תשלומים והחזרים;

  • ServerStatus — שגיאות טכניות.

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

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

APNs, FCM ו‑HMS נשארים מחוץ לתוכנה

להעברת הודעות push — בכל מכשיר ומספק — נעשה שימוש ב־APNs, FCM או HMS. כל ספק מקיים חוקים, טוקנים ותכונות טכניות משלו.

ברוב המקרים, יש צורך להתחשב בהבדלים אלה בפיתוח מערכת השליחה. עם PushMeld, ההבדלים האלה נשארים מחוץ ל־MaxCode.

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

MaxCode אינו מחליף את תשתיות Apple, Google או Huawei — הוא יוצר כניסה אחידה לפניהן.

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

MaxCode ומפתח API רגיל — לא אותו דבר

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

MaxCode מאחד את ההקשר הזה בקוד אחד.

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

ההבדל המעשׂי בערך קצר: מפתח API פותח גישה לפונקציה, בעוד ש-MaxCode מגדיר באיזה הקשר יש לבצע אותה בפועל.

הודעה כהאפשרות המתחברת

אחרי שהכרתי את PushMeld, אינני חושב שניתן לקרוא לו פשוט אפליקציה להודעות push.

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

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

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

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

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

\n}"}