Function Composition для serverless-оркестрації в AWS та Azure

Уявіть: мікросервісна архітектура, де 15 Lambda-функцій послідовно обробляють замовлення — валідація, перевірка складу, розрахунок доставки, списання оплати, сповіщення. Якщо зв'язати їх прямими викликами, історія втрачається, помилки важко локалізувати, а при збої одного кроку весь процес зависає.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Function Composition для serverless-оркестрації в AWS та Azure
Складний
~5 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1418
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    983
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1242
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    983
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    997

Уявіть: мікросервісна архітектура, де 15 Lambda-функцій послідовно обробляють замовлення — валідація, перевірка складу, розрахунок доставки, списання оплати, сповіщення. Якщо зв'язати їх прямими викликами, історія втрачається, помилки важко локалізувати, а при збої одного кроку весь процес зависає. Для фінтех-платформи з навантаженням 1000 замовлень/сек ми вирішили цю проблему, впровадивши оркестрацію через AWS Step Functions. Результат — скорочення часу обробки на 30% та повна прозорість кожного виконання. Такі ж результати показують 30+ проєктів, де ми застосовували оркестрацію: від e-commerce до FinTech. Середня економія на інфраструктурі досягає 40%, а окупність впровадження — 3-6 місяців.

Прямі виклики однієї Lambda з іншої — антипатерн: втрачається історія виконання, складно обробляти помилки, немає видимості прогресу. Оркестрація за допомогою Step Functions або Durable Functions вирішує проблеми N+1 запитів до баз даних, втрату стану та відсутність моніторингу. Наші інженери реалізували понад 30 проєктів з оркестрацією — від e-commerce до FinTech. Оцініть ваш проєкт за один день — пишіть, і ми підготуємо комерційну пропозицію.

Коли потрібна оркестрація замість прямих викликів?

Бізнес-процес складається з кількох кроків зі станом, потрібні умови розгалуження (if step_A succeeded, then step_B, else step_C), паралельне виконання кількох функцій з очікуванням результату, довготривалі процеси (>15 хвилин для Lambda) або людське підтвердження на якомусь кроці (wait for callback). У всіх цих випадках прямі виклики призводять до спагеті-коду та проблем з налагодженням.

Function Composition як рішення проблем serverless-оркестрації

Оркестратор бере на себе маршрутизацію, повторні спроби та збір метрик. Замість десятків викликів з коду ви описуєте workflow декларативно. Це спрощує налагодження — кожне виконання можна простежити крок за кроком у консолі. При збої система автоматично повторює крок або переходить до компенсуючої дії. За нашими оцінками, впровадження оркестрації знижує витрати на інфраструктуру до 40% за рахунок оптимізації викликів. Порівняйте: пряме зв'язування Lambda вимагає 15 викликів на замовлення з ризиком таймаутів, оркестратор же виконує ті ж кроки з гарантованою обробкою помилок у 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} } } 

.waitForTaskToken дозволяє Step Functions чекати callback від зовнішньої системи (наприклад, платіжного шлюзу) без постійного опитування. Платіжний шлюз викликає SendTaskSuccess з токеном, коли транзакція завершена.

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 vs Azure Durable Functions

Характеристика AWS Step Functions Azure Durable Functions
Максимальна тривалість 1 рік Необмежено (перевірки кожні 10 сек)
Візуалізація виконання Вбудована консоль Application Insights
Ціноутворення $0.025/1k переходів (Standard) Плата за execution time + storage
Інтеграція з мовами JSON/ASL C#, Python, JavaScript, F#
Умовна компіляція Ні Так (if/else в коді)

Ваш вибір залежить від екосистеми: якщо ви на AWS — Step Functions, якщо на Azure — Durable Functions. У випадку мультихмари можна використовувати єдиний оркестратор на базі 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" } 

Кожен крок, який потрібно відкотити при помилці, має компенсуючу функцію. Видимість забезпечується через CloudWatch Metrics та X-Ray для Step Functions, а для Durable Functions — Application Insights.

Express vs Standard Workflows

Standard Express
Тривалість До 1 року До 5 хвилин
Execution history Повна CloudWatch Logs
Ціна $0.025/1k transitions $0.00001/state transition
Підходить для Бізнес-процеси High-volume, short workflows

Standard Workflows у 2500 разів дорожчі за Express Workflows за перехід, але підтримують довгі процеси з повним аудитом. Для проєктів з навантаженням понад 10 000 викликів на день вигідніше Express.

Що входить в роботу

  • Архітектурна документація з описом workflow та всіх функцій.
  • Код оркестратора та лямбда-функцій (або Azure Functions) у вашому репозиторії.
  • Інфраструктурний код (Terraform / Bicep) для розгортання.
  • Налаштований моніторинг та алерти (CloudWatch / Application Insights).
  • Доступ до репозиторію та інструкції з розгортання.
  • Навчання вашої команди роботі з оркестратором.

Процес роботи та терміни

  1. Проектування state machine + ASL опис — 2–3 дні.
  2. Lambda функції для кожного кроку — 3–7 днів.
  3. Step Functions state machine + IAM — 2–3 дні.
  4. Обробка помилок + компенсації — 2–3 дні.
  5. Моніторинг + алерти + тестування — 2–3 дні.

Зв'яжіться з нами для консультації — замовте реалізацію Function Composition під ключ. Пишіть, і отримайте комерційну пропозицію з детальним планом протягом одного дня. Наш досвід підтверджують 30+ успішних впроваджень у фінтесі, e-commerce та логістиці. Отримайте консультацію безкоштовно — просто напишіть нам.