הרכבת פונקציות לאורקסטרציה ללא שרת

כאשר מיקרוסרוויסים מקושרים בקריאות ישירות, היסטוריית הביצוע אובדת, וכשל בשלב אחד עוצר את כל התהליך. אנו מפתחים אורקסטרציה המבוססת על AWS Step Functions ו-Azure Durable Functions, כך שכל שלב הוא שקוף וניתן לניהול. הצוות שלנו מספק את הפרויקט במפתח מלא—מתכנון ועד תמיכה—ומבטיח אמינות וסקלביליות של הפתרון שלך.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
הרכבת פונקציות לאורקסטרציה ללא שרת
מורכב
~5 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1501
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1344
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1052
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1306
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1049
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1033

תארו לעצמכם ארכיטקטורת מיקרוסרוויסים שבה 15 פונקציות Lambda מעבדות הזמנה ברצף — אימות, בדיקת מלאי, חישוב משלוח, חיוב תשלום, התראה. אם תשרשרו אותן עם קריאות ישירות, תאבדו את היסטוריית הביצוע, קשה לאתר שגיאות, וכשל בודד עוצר את כל התהליך. עבור פלטפורמת פינטק המטפלת ב-1000 הזמנות/שנייה, פתרנו זאת על ידי הצגת אורכסטרציה באמצעות AWS Step Functions. התוצאה — זמן עיבוד קוצר ב-30% ונראות מלאה של כל ביצוע. ראינו תוצאות דומות ביותר מ-30 פרויקטים שבהם יישמנו אורכסטרציה, ממסחר אלקטרוני ועד פינטק. החיסכון הממוצע בעלויות תשתית מגיע ל-40%, ותקופת ההחזר היא 3-6 חודשים.

קריאה ישירה של Lambda אחת מתוך אחרת היא אנטי-דפוס: אתם מאבדים את היסטוריית הביצוע, טיפול בשגיאות הופך למורכב, ואין נראות להתקדמות. אורכסטרציה עם Step Functions או Durable Functions פותרת שאילתות N+1 למסד נתונים, אובדן מצב ופערי ניטור. המהנדסים שלנו סיפקו 30+ פרויקטי אורכסטרציה — ממסחר אלקטרוני ועד פינטק. קבלו הערכה לפרויקט שלכם ביום אחד — פשוט צרו קשר, ונכין הצעה מסחרית.

מתי נדרשת אורכסטרציה במקום קריאות ישירות?

תהליך עסקי מורכב מכמה שלבים עם מצב, דורש הסתעפות מותנית (אם שלב_A הצליח, אז שלב_B, אחרת שלב_C), ביצוע מקבילי של מספר פונקציות עם איגוד תוצאות, תהליכים ארוכי טווח (>15 דקות עבור Lambda), או אישור אנושי בשלב מסוים (המתנה ל-callback). בכל המקרים האלה, קריאות ישירות מובילות לקוד ספגטי וסיוטי דיבאג.

הרכבת פונקציות כפתרון לאורכסטרציה של Serverless

אורכסטרטור מטפל בניתוב, ניסיונות חוזרים ואיסוף מדדים. במקום עשרות קריאות בקוד, אתם מתארים את זרימת העבודה באופן הצהרתי. זה מפשט את הדיבאג — כל ביצוע ניתן למעקב שלב אחר שלב בקונסולה. במקרה של כשל, המערכת מנסה שוב אוטומטית את השלב או עוברת לפעולת פיצוי. מניסיוננו, אורכסטרציה מפחיתה עלויות תשתית בעד 40% באמצעות קריאות אופטימליות. השוו: שרשרת Lambda ישירה דורשת 15 קריאות לכל הזמנה עם סיכוני timeout; אורכסטרטור מבצע את אותם שלבים עם טיפול מובטח בשגיאות פי 5 מהר יותר.

AWS Step Functions: דוגמה מעשית

דוגמת State Machine (ASL)
{ "Comment": "Обработка заказа",
  "StartAt": "ValidateOrder",
  "States": {
    "ValidateOrder": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-east-1:123:function:validate-order",
      "Next": "CheckInventory",
      "Retry": [
        {
          "ErrorEquals": ["Lambda.ServiceException"],
          "MaxAttempts": 3
        }
      ],
      "Catch": [
        {
          "ErrorEquals": ["ValidationError"],
          "Next": "NotifyInvalidOrder"
        }
      ]
    },
    "CheckInventory": {
      "Type": "Parallel",
      "Branches": [
        {
          "StartAt": "ReserveItems",
          "States": {
            "ReserveItems": {
              "Type": "Task",
              "Resource": "arn:...:reserve-items",
              "End": true
            }
          }
        },
        {
          "StartAt": "CalculateShipping",
          "States": {
            "CalculateShipping": {
              "Type": "Task",
              "Resource": "arn:...:calc-shipping",
              "End": true
            }
          }
        }
      ],
      "Next": "ProcessPayment"
    },
    "ProcessPayment": {
      "Type": "Task",
      "Resource": "arn:aws:states:::lambda:invoke.waitForTaskToken",
      "Parameters": {
        "FunctionName": "arn:...:process-payment",
        "Payload": {
          "taskToken.$": "$$.Task.Token",
          "orderId.$": "$.orderId"
        }
      },
      "Next": "FulfillOrder",
      "TimeoutSeconds": 300
    },
    "FulfillOrder": {
      "Type": "Task",
      "Resource": "arn:...:fulfill-order",
      "End": true
    },
    "NotifyInvalidOrder": {
      "Type": "Task",
      "Resource": "arn:...:notify-invalid",
      "End": true
    }
  }
}

{ "Comment": "Обработка заказа", "StartAt": "ValidateOrder", "States": { "ValidateOrder": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123:function:validate-order", "Next": "CheckInventory", "Retry": [{"ErrorEquals": ["Lambda.ServiceException"], "MaxAttempts": 3}], "Catch": [{ "ErrorEquals": ["ValidationError"], "Next": "NotifyInvalidOrder" }] }, "CheckInventory": { "Type": "Parallel", "Branches": [ {"StartAt": "ReserveItems", "States": {"ReserveItems": {"Type": "Task", "Resource": "arn:...:reserve-items", "End": true}}}, {"StartAt": "CalculateShipping", "States": {"CalculateShipping": {"Type": "Task", "Resource": "arn:...:calc-shipping", "End": true}}} ], "Next": "ProcessPayment" }, "ProcessPayment": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke.waitForTaskToken", "Parameters": { "FunctionName": "arn:...:process-payment", "Payload": { "taskToken.$": "$$.Task.Token", "orderId.$": "$.orderId" } }, "Next": "FulfillOrder", "TimeoutSeconds": 300 }, "FulfillOrder": {"Type": "Task", "Resource": "arn:...:fulfill-order", "End": true}, "NotifyInvalidOrder": {"Type": "Task", "Resource": "arn:...:notify-invalid", "End": true} } } מאפשר ל-Step Functions להמתין ל-callback ממערכת חיצונית (למשל, שער תשלומים) ללא polling. שער התשלומים קורא ל-.waitForTaskToken עם ה-token כאשר העסקה מסתיימת.

Terraform עבור Step Functions

resource "aws_sfn_state_machine" "order_processing" {
  name = "order-processing"
  role_arn = aws_iam_role.sfn_role.arn
  definition = templatefile("${path.module}/state_machine.json", {
    validate_lambda_arn = aws_lambda_function.validate_order.arn
    reserve_lambda_arn = aws_lambda_function.reserve_items.arn
    payment_lambda_arn = aws_lambda_function.process_payment.arn
    fulfill_lambda_arn = aws_lambda_function.fulfill_order.arn
  })
  logging_configuration {
    log_destination = "${aws_cloudwatch_log_group.sfn.arn}:*"
    include_execution_data = true
    level = "ERROR"
  }
  tracing_configuration {
    enabled = true # X-Ray tracing
  }
}

השוואה: AWS Step Functions לעומת Azure Durable Functions

תכונה AWS Step Functions Azure Durable Functions
משך מקסימלי שנה אחת ללא הגבלה (בדיקה כל 10 שניות)
ויזואליזציה של ביצוע קונסולה מובנית Application Insights
תמחור $0.025/1000 מעברים (Standard) תשלום לפי זמן ביצוע + אחסון
אינטגרציית שפות JSON/ASL C#, Python, JavaScript, F#
קומפילציה מותנית לא כן (if/else בקוד)

הבחירה שלכם תלויה במערכת האקולוגית שלכם: אם אתם על AWS — Step Functions; אם על Azure — Durable Functions. בתרחישי multi-cloud, אפשר להשתמש באורכסטרטור אחיד כמו Temporal או Camunda, אבל זה חורג מ-serverless.

Azure Durable Functions: אלטרנטיבה

אורכסטרטור מבוסס .NET / Node.js / Python על Azure Functions:

import azure.durable_functions as df

def orchestrator_function(context: df.DurableOrchestrationContext):
    parallel_tasks = [
        context.call_activity("ReserveItems", context.get_input()),
        context.call_activity("CalculateShipping", context.get_input())
    ]
    results = yield context.task_all(parallel_tasks)
    approval = yield context.wait_for_external_event("ApprovalReceived")
    if approval:
        return (yield context.call_activity("FulfillOrder", context.get_input()))
    else:
        return (yield context.call_activity("CancelOrder", context.get_input()))

main = df.Orchestrator.create(orchestrator_function)

Durable Functions משתמשות ב-Azure Storage כדי לשמר מצב. האורכסטרטור יכול להמתין לאירוע חיצוני ללא הגבלת זמן.

איך לטפל בשגיאות באורכסטרציה?

תהליכים מבוזרים חסרים טרנזקציות מובנות. דפוס ה-Saga משתמש בפעולות פיצוי במקרה של כשל:

"ProcessPayment": {
  "Type": "Task",
  "Resource": "...",
  "Catch": [{
    "ErrorEquals": ["PaymentFailed"],
    "Next": "CompensateReservation"
  }]
},
"CompensateReservation": {
  "Type": "Task",
  "Resource": "arn:...:release-reservation",
  "Next": "NotifyPaymentFailed"
}

לכל שלב שדורש rollback בשגיאה יש פונקציית פיצוי. נראות מסופקת דרך CloudWatch Metrics ו-X-Ray עבור Step Functions, ו-Application Insights עבור Durable Functions.

Express לעומת Standard Workflows

Standard Express
משך עד שנה עד 5 דקות
היסטוריית ביצוע מלאה CloudWatch Logs
מחיר $0.025/1000 מעברים $0.00001/מעבר מצב
מתאים ביותר ל תהליכים עסקיים זרימות קצרות בנפח גבוה

Standard Workflows יקרים פי 2500 לכל מעבר מאשר Express Workflows, אבל תומכים בתהליכים ארוכי טווח עם ביקורת מלאה. לפרויקטים עם יותר מ-10,000 קריאות ביום, Express משתלם יותר.

מה כלול

  • תיעוד ארכיטקטוני המתאר את זרימת העבודה וכל הפונקציות.
  • קוד אורכסטרטור ו-Lambda (או Azure Functions) במאגר שלכם.
  • קוד תשתית (Terraform / Bicep) לפריסה.
  • ניטור והתראות מוגדרים (CloudWatch / Application Insights).
  • גישה למאגר והוראות פריסה.
  • הדרכה לצוות שלכם על עבודה עם האורכסטרטור.

תהליך ולוחות זמנים

  1. עיצוב State machine + תיאור ASL — 2-3 ימים.
  2. פונקציות Lambda לכל שלב — 3-7 ימים.
  3. State machine של Step Functions + IAM — 2-3 ימים.
  4. טיפול בשגיאות + פיצויים — 2-3 ימים.
  5. ניטור + התראות + בדיקות — 2-3 ימים.

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