פייפדרים / Pipedream
פייפדרים היא פלטפורמת אוטומציה שנבנתה מלכתחילה למי שיודע לכתוב קוד, ולא למי שמחפש להימנע ממנו. במקום לחפש את הפעולה הנכונה ברשימה סגורה, שמים שלב אחד של קוד באמצע הזרימה, מייבאים כל ספרייה שצריך בשורה אחת בלי התקנה ובלי הגדרות, וממשיכים הלאה. יש בה גם אלפי חיבורים מוכנים, וזה בדיוק מה שמבלבל: מבחוץ היא נראית כמו עוד כלי גרירה, ובפועל היא סביבת הרצה מנוהלת שבמקרה יש לה גם ממשק חזותי. ההבדל הזה קובע מי יאהב אותה מאוד ומי יתייאש בשעה הראשונה. סקירה של מה שהיא באמת נותנת, של שיטת התמחור בנקודות שמפתיעה לשני הכיוונים, ושל המקומות שבהם היא פשוט לא הכלי הנכון.
מה זה פייפדרים ובמה הוא שונה ממנוע אוטומציה רגיל?
פייפדרים היא פלטפורמה אמריקאית להרצת זרימות עבודה, שהושקה בשנת 2018 ומיצבה את עצמה כברירת המחדל של מפתחים בקטגוריה. הזרימה מורכבת מטריגר ומרצף שלבים, בדיוק כמו בכל כלי אחר בשוק, וההבדל מתחיל ברגע שנגמרות הפעולות המוכנות. במקום להיתקע, פותחים שלב חדש וכותבים בו את מה שצריך.
שלב קוד כאן אינו פתח מילוט אלא אזרח שווה זכויות. אפשר לכתוב בג׳אווהסקריפט, בפייתון, בגו או בבאש, לקבל את הפלט של כל שלב קודם כמשתנה, ולהחזיר ערך שהשלב הבא יקבל. הדבר שמייחד את הפלטפורמה הוא שהצהרת ייבוא של ספרייה חיצונית מספיקה: אין קובץ תלויות לתחזק, אין שלב בנייה, ואין תמונת מכולה להרכיב. הספרייה נטענת בהרצה הראשונה וזהו.
מעל זה יושבת שכבת החיבורים, כמעט שלושת אלפים שירותים עם ניהול הרשאות מובנה. השכבה הזאת חוסכת את החלק המשעמם והמסוכן: לא צריך לאחסן מפתחות בעצמכם, לא צריך לטפל בחידוש אסימוני גישה, והחיבור נשאר תקף גם כשהספק מחליף מדיניות. מי שכתב פעם התחברות מאובטחת לשירות חיצוני בעצמו יודע כמה שעות זה חוסך.
הרובד הרביעי הוא מה שהופך את הפלטפורמה לשימושית בייצור ולא רק בהדגמות: מאגר נתונים קטן שנשמר בין הרצות, תור מובנה, אפשרות להריץ מחדש הרצה שנכשלה עם אותו קלט בדיוק, ולוג מלא של כל שלב עם הערכים שנכנסו ויצאו. שלושת אלה יחד הם ההבדל בין אוטומציה שאפשר לתחזק לבין סקריפט שאף אחד לא נוגע בו מפחד.
הפיצ'רים המרכזיים של פייפדרים
שש יכולות מרכיבות את הכלי בפועל. הראשונה היא זו שכולם מזהים מיד, והרביעית היא זו שמפרידה בין ניסוי לבין מערכת שרצה בייצור.
ג׳אווהסקריפט, פייתון, גו או באש באמצע הזרימה, עם גישה לפלט של כל שלב קודם.
בלי קובץ תלויות, בלי שלב בנייה. שורת ייבוא אחת והספרייה זמינה בהרצה.
הרשאות, חידוש אסימונים ואחסון מפתחות מטופלים בצד שלהם ולא בצד שלכם.
ערכים שנשמרים מהרצה להרצה. הבסיס למניעת כפילויות ולמעקב אחר מצב.
הרצה שנכשלה חוזרת בדיוק כפי שהייתה. איתור תקלות בלי לשחזר ידנית.
רואים מה נכנס ומה יצא בכל שלב. מאתרים את השלב הבעייתי בתוך שניות.
ארבע הערות שלא מופיעות בשום עמוד שיווקי, וכולן נלמדו תוך כדי הפעלה. הראשונה: ייבוא הספריות הוא היכולת שמשנה את שיקול הדעת. ברגע שכל חבילה זמינה בשורה אחת, השאלה מפסיקה להיות אם הכלי תומך במשהו ומתחילה להיות אם קיימת חבילה שעושה את זה. עיבוד קובץ טבלאי, חתימה קריפטוגרפית, קריאה של מסמך, המרת תמונה: כל אלה הופכים לשלב יחיד במקום לפרויקט נפרד. מי שכותב את השלב הזה בעזרת סוכן הכתיבה Codex מגיע לגרסה עובדת תוך דקות, כי מדובר בקטע קצר ומוגדר היטב ולא במערכת שלמה.
השנייה: המאגר שנשמר בין הרצות שווה יותר משנדמה. רוב תקלות האוטומציה שאני נקרא לטפל בהן אינן שגיאות אלא כפילויות: אותו ליד נכנס פעמיים, אותה חשבונית נשלחה שוב, אותו לקוח קיבל שתי הודעות. כשיש מקום לשמור בו מזהה שכבר טופל, כל המשפחה הזאת של תקלות נעלמת בשלוש שורות קוד.
השלישית: העברית עוברת בלי בעיה, והממשק אינו מתורגם. טקסט עברי נשמר נכון בכל שלב, כולל בקריאות למערכות חיצוניות ובכתיבה למסדי נתונים, וזה לא מובן מאליו בכלים שמעבירים מידע בין מערכות. הממשק עצמו באנגלית בלבד, וגם התיעוד, ולכן מי שאינו קורא אנגלית טכנית יתקשה כאן יותר מאשר בכלים החזותיים.
הרביעית: הלוג הוא מה שהופך את הכלי לניתן לתחזוקה. בכל הרצה רואים בדיוק את הערך שנכנס לכל שלב ואת הערך שיצא ממנו, ולכן איתור תקלה הוא עניין של שלושים שניות ולא של שחזור המקרה. בשילוב עם הרצה חוזרת על אותו קלט, זה מייתר את רוב הצורך בכתיבת בדיקות ידניות סביב האוטומציה.
כמה זה עולה?
התמחור כאן שונה מכל שאר הקטגוריה, והוא הסיבה שחלק מהעסקים משלמים עשירית ממה שהם רגילים וחלק מגלים חשבון מפתיע. הכול נמדד בנקודות ולא במשימות.
מכסת נקודות חודשית קטנה ושלוש זרימות פעילות. מספיקה לבנות ולבדוק ברצינות.
זרימות ללא הגבלה ומכסת נקודות אמיתית. נקודת הכניסה לעסק שמריץ אוטומציה.
מכסה גבוהה יותר, זמן הרצה ארוך יותר וסביבות נפרדות לבדיקה ולייצור.
בקרת גישה, ביקורת פעולות ותמיכה. רלוונטית כשהזרימות נוגעות בנתוני לקוחות.
המפתח להבין את החשבון הוא שנקודה נצרכת לפי זמן הרצה ולפי זיכרון, ולא לפי מספר הפעולות. זרימה שמקבלת פנייה, בודקת אותה וכותבת אותה למערכת מסתיימת בשבריר שנייה וצורכת מעט מאוד. זרימה שמורידה קובץ גדול, מעבדת אותו בזיכרון ומחזירה תוצאה צורכת פי עשרות. שני עסקים עם אותו מספר הרצות בדיוק יכולים לקבל חשבונות שונים לגמרי, וזה מפתיע את מי שרגיל לספור משימות.
בפועל זה מיטיב עם רוב המקרים. אוטומציות של ליד, של הזמנה, של עדכון בין מערכות ושל התראה הן קצרות מאוד, ולכן החבילה הבסיסית מכסה נפח שבמנועים אחרים היה דורש חבילה בכמה מאות דולרים. הכיוון ההפוך נכון גם הוא: עיבוד קבצים כבד, המתנה ארוכה לתשובה משירות איטי או לולאה על אלפי רשומות אוכלים נקודות בקצב שכדאי למדוד לפני שמתחייבים.
ההשוואה שכדאי לעשות היא לא מול מנוע אוטומציה אחר אלא מול שרת קטן משלכם. שרת כזה עולה כמה דולרים בחודש ונראה זול יותר, ומה שהוא לא כולל הוא ניטור, ניסיונות חוזרים, ניהול סודות, לוג לכל הרצה ותחזוקת גרסאות. את כל אלה צריך לבנות ולתחזק, וזו עבודה של שבועות ואחריה שעות בכל חודש. מי שמתמחר רק את השרת מגיע למסקנה שגויה, ומי שמתמחר גם את השעות מגיע כמעט תמיד למסקנה ההפוכה.
בפרויקט שבו הזרמנו פניות מארבעה מקורות למערכת אחת, מעבר ממנוע שמתמחר לפי משימה לפלטפורמה שמתמחרת לפי זמן הרצה הוריד את החשבון החודשי מכ-260 דולר לכ-31 דולר, על אותו נפח בדיוק ועם שתי זרימות נוספות שלא היו קיימות קודם.
מתוך העברת מערך אוטומציות של עסק שירותיםסעיף שאינו מופיע במחירון ושווה להכיר הוא עלות הכתיבה הראשונה. זרימה שנבנית מפעולות מוכנות עולה שעה, וזרימה שכוללת שני שלבי קוד עולה חצי יום למי שכותב קוד ואינה אפשרית למי שלא. זה ההבדל האמיתי בין הפלטפורמה הזאת לבין המתחרות החזותיות, והוא אינו נמדד בדולרים אלא בשאלה מי בצוות יוכל לגעת בזה מחר. עסק שיש בו אדם אחד שכותב קוד מרוויח כאן פי כמה, ועסק שאין בו אף אחד כזה ישלם פחות במנוי ויותר בתלות בספק חיצוני.
פייפדרים מול הדרכים האחרות לחבר מערכות
יש היום ארבע דרכים מעשיות לחבר שתי מערכות זו לזו: מנוע חזותי שמתמחר לפי משימה, פלטפורמה מבוססת קוד כמו זו, מנוע שמריצים על שרת משלכם, או פשוט לכתוב שירות קטן ולתחזק אותו. ההבדל ביניהן אינו ביכולת אלא בשאלה מי משלם על מה שקורה כשמשהו נשבר בשלוש לפנות בוקר.
מול המנועים החזותיים, ההבדל הוא בתקרה ולא ברצפה. מנוע החיבורים Zapier מנצח בכל תרחיש שיש לו פעולה מוכנה, כי הוא מגיע לתוצאה בעשר דקות ומאפשר לכל אחד בצוות לתחזק. הרגע שבו הוא נגמר הוא הרגע שבו צריך היגיון שאין לו כפתור, ושם מתחילה הפלטפורמה הזאת. הרבה עסקים מריצים את שתיהן במקביל וזו החלטה נכונה, לא פשרה.
מול מנוע שמתארחים עליו בעצמכם, השאלה היא כמה חשובה הבעלות. אחסון עצמי נותן שליטה מלאה בנתונים ובגרסאות, ובתמורה מקבלים שרת לתחזק, גיבויים לוודא ועדכוני אבטחה להתקין. בפרויקטים של פיתוח תוכנה בהתאמה אישית אני בוחר באחסון עצמי כשהנתונים רגישים או כשהלקוח דורש שהכול יישאר אצלו, ובכל שאר המקרים סביבה מנוהלת חוסכת חודשים.
מול כתיבת שירות עצמאי, ההשוואה כמעט תמיד מוכרעת לטובת הפלטפורמה, וזה מפתיע מפתחים. הקוד שכותבים בשני המקרים כמעט זהה, וההבדל הוא בכל מה שמסביב: הפעלה מתוזמנת, ניסיונות חוזרים, ניהול סודות, לוג, התראות וממשק לצפייה בהיסטוריה. פריסה של שירות בפלטפורמת הפריסה Vercel פותרת חלק מזה עבור אתרים, ואינה מכסה את הצד של הזרימות המתוזמנות והמצב הנשמר.
בפועל אף אחת מהזרימות לא עומדת לבד. היא מקבלת פנייה מטופס, בודקת אותה, כותבת שורה למסד הנתונים Airtable או למערכת הלקוחות, ומעדכנת את מי שצריך לטפל. את המבנה הזה אני בונה בפרויקטים של אוטומציה לעסקים כמעט בכל פעם, והחלק שקובע אם הוא יחזיק אינו הכלי אלא ההחלטה מה קורה כשמערכת אחת בשרשרת אינה עונה.
יש כאן גם שיקול של בעלות על ההיגיון, וזה השיקול שאני מעלה מול לקוחות לפני שבוחרים. קוד שנכתב בשלב בתוך הפלטפורמה הוא קוד רגיל לכל דבר, ואפשר להעתיק אותו החוצה ולהריץ אותו במקום אחר עם התאמות קלות. זרימה שנבנתה כולה מפעולות מוכנות במנוע חזותי אינה ניתנת להעברה בשום צורה, וצריך לבנות אותה מחדש. ההבדל הזה נראה תיאורטי עד הרגע שבו ספק משנה תמחור, ואז הוא הופך לשאלה של שבועיים עבודה מול חודשיים.
המסקנה מהשטח פשוטה: זה כלי למי שרואה באוטומציה קוד שרץ בענן ולא תרשים שמחברים. מי שמחפש לחבר שתי מערכות בעשר דקות ימצא כלים מהירים ונוחים יותר, ומי שנתקל שוב ושוב בקיר של הפעולות המוכנות יגלה שכאן הקיר הזה פשוט לא קיים.
הפיצ'ר שעושה את ההבדל: מאגר קטן שמונע כפילויות
אם צריך לבחור יכולת אחת שהופכת אוטומציה מהדגמה למערכת שאפשר לסמוך עליה, זו היכולת לזכור מה כבר טופל. כמעט כל תקלה מביכה באוטומציה היא כפילות: אותה פנייה נכנסה פעמיים, אותו לקוח קיבל שתי הודעות, אותה שורה נכתבה שוב עם נתון ישן. שירותים חיצוניים שולחים אירועים כפולים באופן קבוע, וזה לא באג אלא התנהגות מתועדת. הקוד למטה מדגים שלב אחד שמנרמל פנייה נכנסת, מייצר לה טביעת אצבע, בודק במאגר המובנה אם היא כבר טופלה, ורק אחר כך ממשיך.
// שלב בזרימת פייפדרים: נרמול פנייה, מניעת כפילות וכתיבה למערכת הלקוחות
import { axios } from "@pipedream/platform";
import crypto from "crypto";
export default defineComponent({
props: {
crm: { type: "app", app: "hubspot" },
minScore: { type: "integer", default: 40, label: "ציון מינימלי לכתיבה" },
},
async run({ steps, $ }) {
const lead = steps.trigger.event.body;
const db = $.service.db;
// 1. נרמול טלפון ישראלי לפורמט אחיד. בלי זה כל וריאציה נראית כמו ליד חדש
let phone = String(lead.phone || "").replace(/[^0-9]/g, "");
if (phone.startsWith("972")) {
phone = "0" + phone.slice(3);
}
if (phone.length !== 10) {
return $.flow.exit("טלפון לא תקין, אין טעם להמשיך את הזרימה");
}
const email = String(lead.email || "").trim().toLowerCase();
// 2. טביעת אצבע יציבה. אותה פנייה תייצר את אותו מזהה גם מחר
const fingerprint = crypto.createHash("sha1")
.update(phone + "|" + email).digest("hex");
// 3. המאגר שורד בין הרצות, ולכן שלוש השורות האלה מנטרלות כפילויות
if (db.get(fingerprint)) {
$.export("outcome", "duplicate");
return { skipped: true, fingerprint };
}
// 4. העשרה משירות חיצוני, עם נפילה רכה. שירות שלא ענה לא מפיל את הזרימה
let enrichment = {};
try {
const res = await axios($, {
url: "https://api.example-enrich.com/v1/lookup",
params: { email, phone },
timeout: 8000,
});
enrichment = res.data || {};
} catch (err) {
$.export("enrichment_error", String(err).slice(0, 200));
}
// 5. ציון פשוט וקריא. כלל אחד לכל שורה, כדי שאפשר יהיה לשנות בלי לשבור
let score = 10;
if (email.includes("@")) score += 20;
if (enrichment.company_size) score += 25;
if (String(lead.message || "").length > 40) score += 15;
if (lead.source === "organic") score += 20;
if (score < this.minScore) {
db.set(fingerprint, { at: Date.now(), outcome: "low_score", score });
$.export("outcome", "low_score");
return { skipped: true, score };
}
// 6. כתיבה למערכת הלקוחות, ורק אחריה סימון במאגר. הסדר הזה חשוב
const created = await axios($, {
method: "POST",
url: "https://api.hubapi.com/crm/v3/objects/contacts",
headers: { Authorization: "Bearer " + this.crm.$auth.oauth_access_token },
data: { properties: { email, phone, hs_lead_status: "NEW", lead_score: score } },
});
db.set(fingerprint, { at: Date.now(), outcome: "created", id: created.id });
$.export("outcome", "created");
return { id: created.id, score, fingerprint };
},
});
// שלושה כללים שהופכים את השלב הזה למשהו שאפשר להשאיר רץ בלי לבדוק כל בוקר
// כלל 1: לסמן במאגר רק אחרי שהכתיבה הצליחה. סימון מוקדם מאבד פניות בשקט
// כלל 2: כל קריאה חיצונית עטופה בטיפול בשגיאה, כי שירות איטי הוא מצב רגיל
// כלל 3: לייצא בכל מסלול את התוצאה, אחרת הלוג מראה הצלחה גם כשלא קרה כלום
שלושת הכללים שבתחתית הקוד הם מה שמפריד בין שלב שעובד להדגמה לבין שלב שרץ חודשים בלי שאף אחד נוגע בו. הכלל הראשון הוא זה שהכי הרבה אנשים מפספסים: מי שמסמן את הפנייה כמטופלת לפני שהכתיבה הצליחה מייצר לעצמו חור שקט שבו פניות נעלמות בלי הודעת שגיאה, וזו התקלה הכי קשה לאיתור מבין כולן.
הכלל השלישי נשמע טכני והוא בעצם ניהולי. כשכל מסלול בזרימה מייצא את התוצאה שלו, אפשר להסתכל על מאה הרצות ולראות מיד כמה נכתבו, כמה סוננו וכמה היו כפילות. בלי זה כל ההרצות נראות ירוקות ואין דרך לדעת שהמסנן חוסם דווקא את הפניות הטובות. את אותה גישה אני מיישם בכל אוטומציה לעדכון נתוני לקוחות, כי אוטומציה שאי אפשר למדוד היא אוטומציה שאי אפשר לתקן.
חסרונות שאתם צריכים לדעת
לצד היכולות יש מחיר, ורובו אינו כספי. שישה חסרונות, והשני הוא זה שגורם לחלק מהצוותים לוותר על הכלי אחרי חודשיים.
בלי אדם כזה בצוות, חצי מהערך אינו נגיש והכלי מפסיד למתחרים החזותיים.
מי שכתב את השלבים הוא היחיד שמבין אותם. סיכון אמיתי בצוות קטן.
נקודות נצרכות לפי זמן וזיכרון. עומס כבד מייצר חשבון שלא צפיתם.
אין תרגום לעברית. מי שאינו קורא אנגלית טכנית יתקשה כאן מאוד.
הלוג מצוין למי שמבין קוד, ואינו אומר הרבה למי שרק גרר פעולות.
מול המנועים החזותיים יש כאן הרבה פחות זרימות מוכנות להעתקה ולהתאמה.
החיסרון השני ראוי להתייחסות כנה, כי הוא זה שהורג פרויקטים ולא החשבון. זרימה שכוללת שלבי קוד היא תוכנה לכל דבר, ותוכנה שאדם אחד כתב ואיש מלבדו אינו מבין היא נטל שמתגלה ביום שהוא יוצא לחופשה. הפתרון אינו לוותר על הקוד אלא להתייחס אליו כמו לקוד: הערות בעברית שמסבירות למה ולא מה, שמות משתנים ברורים, ומסמך קצר שמתאר את הזרימות ואת ההחלטות. חמש עשרה דקות בסוף כל זרימה, ופתאום יש מערכת שאפשר להעביר לאדם אחר.
היתרונות שעושים את פייפדרים שווה
ומנגד, שש סיבות שבגללן מפתחים שעברו לכאן כמעט אף פעם לא חוזרים אחורה.
כל מה שאפשר לכתוב אפשר להריץ. הכלי לא נגמר באמצע הפרויקט.
כל חבילה זמינה מיד, בלי התקנה, בלי בנייה ובלי קובץ תלויות לתחזק.
רוב אוטומציות העסק קצרות מאוד, ולכן החשבון נמוך משמעותית מהמקובל.
משחזרים תקלה בלחיצה במקום לנסות לשחזר את התנאים ידנית.
אחסון מפתחות וחידוש אסימונים בצד שלהם. פחות קוד ופחות סיכון.
מה שנכתב בשלב הוא קוד רגיל, ואפשר להריץ אותו במקום אחר בעת הצורך.
היתרון שמורגש הכי מהר הוא היעלמות הרגע שבו נתקעים. בכל כלי חזותי מגיע השלב שבו צריך פעולה שאינה קיימת, ואז מתחילים לחפש עקיפות, לשרשר שלושה שלבים כדי לחקות אחד, או לוותר על דרישה. כאן פשוט כותבים את מה שצריך וממשיכים. ההבדל בזמן פרויקט מגיע לימים, ובעיקר הוא מוריד את ההרגשה שהכלי מכתיב את הפתרון במקום התהליך העסקי.
יתרון שני שקל לפספס הוא איכות איתור התקלות. כשכל שלב מתועד עם הקלט והפלט שלו ואפשר להריץ מחדש בדיוק את מה שנכשל, בדיקת אוטומציה מפסיקה להיות ניחוש. זו אותה תרבות עבודה שמפתחים מכירים מסביבות כתיבת הקוד שלהם, ולכן מי שרגיל לעבוד בסביבת הפיתוח Antigravity או בכל עורך אחר מרגיש כאן בבית מהיום הראשון.
מתי לבחור פייפדרים ומתי לבחור מנוע חזותי?
הבחירה נופלת כאן על שלושה משתנים בלבד, וכולם ארגוניים ולא טכניים: מי יתחזק את הזרימה, כמה היגיון היא באמת מכילה, ומה קורה כשהיא נופלת.
יש בצוות מי שכותב קוד, והזרימות דורשות היגיון שאין לו כפתור מוכן.
צריך לחבר מערכות מוכרות מהר, ומי שיתחזק את זה אינו איש פיתוח.
הנתונים רגישים או שהלקוח דורש שהכול יישאר על שרת בבעלותו.
# עץ החלטה לבחירת תשתית אוטומציה
שאלה 1: מי יתחזק את הזרימה בעוד חצי שנה?
איש פיתוח --> פייפדרים
איש שיווק או תפעול --> מנוע חזותי
ספק חיצוני --> לוודא שהעברת ידע בהסכם
שאלה 2: כמה היגיון יש בזרימה?
העברת נתון בין שתיים --> מנוע חזותי, מהיר וזול
תנאים וחישוב --> פייפדרים
עיבוד קבצים כבד --> פייפדרים, ולמדוד נקודות מראש
שאלה 3: איפה הנתונים יושבים?
שירותי ענן ממילא --> סביבה מנוהלת, בלי להתלבט
נתונים רגישים --> מנוע באחסון עצמי
דרישת לקוח מפורשת --> אחסון עצמי, גם אם יקר יותר
שאלה 4: מה קורה כשזרימה נופלת?
יש מי שמקבל התראה --> כל אפשרות תעבוד
אף אחד לא שם לב --> לבנות התראה לפני שבונים זרימה
לקוח מגלה ראשון --> לעצור, זו בעיה של תהליך ולא של כלי
הטעות הראשונה שאני רואה היא לבחור בכלי הזה בגלל שהוא מרשים ולא בגלל שהוא נחוץ. מפתח שמנסה אותו מתאהב תוך שעה, ואחרי חצי שנה מתברר שכל הזרימות בעסק תלויות בו לבדו. אם רוב מה שהעסק צריך הוא להעביר פנייה מטופס למערכת ולהודיע למישהו, מנוע חזותי יעשה את זה טוב יותר בדיוק מפני שכל אחד יוכל לתקן אותו.
הטעות השנייה היא לבנות זרימה אחת ענקית במקום שלוש קטנות. זרימה שמקבלת פנייה, מעשירה, מדרגת, כותבת, מודיעה ומדווחת נראית מסודרת ביום שבנו אותה, וביום שהיא נופלת בשלב הרביעי אי אפשר להריץ מחדש רק את החלק שנכשל. פיצול לשלוש זרימות שמדברות ביניהן דרך תור או קריאה עולה חצי שעה נוספת, ומחזיר את ההשקעה בפעם הראשונה שמשהו נשבר.
השורה התחתונה: האם פייפדרים שווה?
מה שנשאר בסוף הוא זה: זו סביבת הרצה למפתחים שהתחפשה לכלי אוטומציה, וזו בדיוק הסיבה שהיא נפלאה לחלק מהעסקים ולא מתאימה לאחרים. היא נותנת את מה שאין באף מנוע חזותי, ובתמורה היא דורשת שמישהו בצוות ידע לכתוב קוד ויסכים להיות אחראי עליו. מי שיש לו את האדם הזה מקבל תשתית שלא נגמרת באמצע, ומי שאין לו ישלם פחות ויקבל תלות.
הפרופילים שעבורם זה מתאים: חברות תוכנה שמחברות בין שירותים פנימיים, עסקים שמזרימים פניות מכמה מקורות עם היגיון סינון אמיתי, סוכנויות טכניות שבונות אוטומציות ללקוחות, וכל מקום שבו נתקלו בקיר של פעולות מוכנות יותר מפעם אחת. ומנגד, זה לא מתאים לצוותי שיווק בלי מפתח, לעסקים שצריכים שני חיבורים פשוטים, ולכל מי שהאדם היחיד שיתחזק את זה אינו מרגיש בנוח מול קוד.
מי שמתחיל, ארבעה צעדים והסדר ביניהם משנה. ראשית, לבנות זרימה אחת אמיתית ולא הדגמה, כי רק בייצור מתגלה מה חסר. שנית, להוסיף מניעת כפילויות לפני שמוסיפים תכונות, כי זו התקלה שתגיע ראשונה. שלישית, להגדיר התראה על כישלון ליעד שמישהו באמת קורא. רביעית, לכתוב חצי עמוד שמסביר מה כל זרימה עושה ולמה. אפשר לפנות אליי לתכנון מערך אוטומציה שמתאים למי שבאמת יתחזק אותו, ולא רק למי שיבנה אותו.
ולסיום, הערה שנוגעת לכל הקטגוריה ולא רק לכלי הזה. אוטומציה נכשלת כמעט תמיד לא בגלל הכלי אלא בגלל שאין תשובה לשאלה מי שם לב כשהיא מפסיקה לעבוד. זרימה שרצה חודשיים ואז נשברת בשקט גורמת נזק גדול יותר מאשר אי בניית האוטומציה מלכתחילה, כי בינתיים כולם הפסיקו לבדוק ידנית. לכן ההחלטה הראשונה בכל פרויקט כזה אינה איזה כלי לבחור אלא לאן הולכת ההתראה, ורק אחריה כדאי לפתוח בכלל את הכלי. אפשר לראות כאן באתר את שאר הסקירות בקטגוריה ואת האופן שבו הכלים האלה מתחברים לתהליך עבודה אחד.
שיתוף הפוסט
שאלות ותשובות
האם פייפדרים עובד בעברית?
טקסט עברי עובר נכון בכל שלב, כולל בקריאות למערכות חיצוניות, בכתיבה למסדי נתונים ובשליחת הודעות, וזה לא מובן מאליו בכלים שמעבירים מידע בין מערכות. הממשק והתיעוד באנגלית בלבד ואין תרגום, ולכן מי שאינו קורא אנגלית טכנית יתקשה כאן הרבה יותר מאשר בכלים החזותיים. בפועל זו המגבלה המעשית העיקרית לצוות ישראלי לא טכני.
צריך לדעת לתכנת כדי להשתמש?
אפשר לבנות זרימה שלמה רק מפעולות מוכנות בלי לכתוב שורה, וזה עובד. הבעיה היא שכל הערך הייחודי של הפלטפורמה נמצא בדיוק בשלבי הקוד, ולכן מי שלא כותב קוד משלם על יכולות שלא ישתמש בהן ומקבל ממשק פחות נוח מהמתחרים. בלי אדם אחד לפחות שמרגיש בנוח מול קוד, כלי חזותי הוא הבחירה הנכונה.
איך עובד התמחור בנקודות?
נקודה נצרכת לפי זמן ההרצה ולפי הזיכרון שהשלב תפס, ולא לפי מספר הפעולות. זרימה קצרה שמקבלת פנייה וכותבת אותה למערכת צורכת מעט מאוד, ולכן החבילה הבסיסית מכסה נפח שבמנוע אחר היה דורש חבילה יקרה בהרבה. מנגד, עיבוד קבצים כבד או המתנה ארוכה לשירות איטי אוכלים נקודות מהר, וכדאי למדוד לפני שמתחייבים.
מה ההבדל בין זה למנוע אוטומציה חזותי?
מנוע חזותי מנצח בכל תרחיש שיש לו פעולה מוכנה, כי מגיעים לתוצאה בעשר דקות וכל אחד בצוות יכול לתקן. ההבדל מתחיל ברגע שצריך היגיון שאין לו כפתור, ושם המנוע החזותי מאלץ עקיפות מסורבלות ואילו כאן פשוט כותבים שלב וממשיכים. הרבה עסקים מריצים את שניהם במקביל, וזו החלטה נכונה ולא פשרה.
אפשר לייבא ספריות חיצוניות?
כן, וזו היכולת שמשנה את שיקול הדעת יותר מכל אחרת. שורת ייבוא אחת מספיקה, בלי קובץ תלויות, בלי שלב בנייה ובלי סביבה להרכיב. המשמעות המעשית היא שעיבוד קובץ טבלאי, חתימה קריפטוגרפית, קריאת מסמך או המרת תמונה הופכים לשלב בודד בזרימה במקום לפרויקט נפרד עם שרת משלו.
איך מונעים שהאוטומציה תרוץ פעמיים?
משתמשים במאגר הקטן שנשמר בין הרצות: מייצרים מזהה יציב לפנייה, למשל מטלפון מנורמל ומכתובת דואר, בודקים אם הוא כבר קיים, ורק אם לא ממשיכים. חשוב לסמן במאגר רק אחרי שהפעולה הצליחה ולא לפניה, אחרת נוצר חור שקט שבו פניות נעלמות בלי הודעת שגיאה. זו התקלה הקשה ביותר לאיתור בכל מערך אוטומציה.
מה קורה כשזרימה נכשלת?
הכישלון נרשם בלוג עם הערכים המדויקים של כל שלב, ואפשר להריץ את אותה הרצה מחדש עם אותו קלט בלי לשחזר את התנאים ידנית. השילוב הזה הופך איתור תקלה מניחוש לעבודה של דקות. מה שהפלטפורמה לא עושה בשבילכם הוא להחליט לאן ההתראה הולכת, וזו ההגדרה הראשונה שכדאי לבצע לפני שבונים זרימה אחת.
כדאי להעביר לכאן אוטומציות קיימות?
רק אם יש סיבה מוגדרת, ויש שתי סיבות טובות. הראשונה היא חשבון גבוה במנוע שמתמחר לפי משימה כשהזרימות קצרות, ושם החיסכון מגיע לעשרות אחוזים. השנייה היא זרימה שנתקעה על מגבלה של פעולות מוכנות ונבנתה מעקיפות מסורבלות. אם שתי אלה אינן מתקיימות, העברה של מה שעובד היא בזבוז זמן ולעיתים גם מקור לתקלות חדשות.