automation2026.05.299 דק׳ קריאה
בניית לולאות אוטומציה אידמפוטנטיות עם n8n ו-Go
החלק הקשה באוטומציה אינו לגרום לה לרוץ — אלא לגרום לה להיות בטוחה לריצה חוזרת. כל לולאה שאני מייצר היא אידמפוטנטית: ריצה חוזרת מתכנסת לאותו מצב במקום לשכפל עבודה.
הטריק הוא להפריד כוונה מפעולה. n8n מתזמר את התהליך ומחליט מה צריך להיות נכון; שירות Go קטן אוכף זאת, בודק את המצב הנוכחי לפני כל שינוי. מפתחות דה-דופ הופכים ריטריי לחינמי.
worker.go
func Apply(ctx context.Context, desired State) error {
current, err := Fetch(ctx, desired.Key)
if err != nil {
return err
}
if current.Equals(desired) {
return nil // already converged
}
return Reconcile(ctx, current, desired)
}מכיוון ש-Apply אינו עושה דבר כשהמצב כבר תואם, אותה לולאה יכולה לרוץ בתזמון, ב-webhook או בריטריי ידני עם תוצאות זהות. כשלים הופכים משעממים — פשוט מריצים שוב.
#n8n#go#automation