Durable Functions 형식 및 기능Durable Functions types and features

Durable Functions은 Azure Functions의 확장입니다.Durable Functions is an extension of Azure Functions. 함수 실행의 상태 저장 오케스트레이션에 Durable Functions를 사용할 수 있습니다.You can use Durable Functions for stateful orchestration of function execution. 지 속성 함수 앱은 다양 한 Azure 함수로 구성 된 솔루션입니다.A durable function app is a solution that's made up of different Azure functions. 함수는 지 속성 함수 오케스트레이션에 서 다른 역할을 수행할 수 있습니다.Functions can play different roles in a durable function orchestration.

현재 Azure Functions에는 작업, orchestrator, entity 및 client의 네 가지 지 속성 함수 형식이 있습니다.There are currently four durable function types in Azure Functions: activity, orchestrator, entity, and client. 이 섹션의 나머지 부분에서는 오케스트레이션과 관련 된 함수 유형에 대해 자세히 설명 합니다.The rest of this section goes into more details about the types of functions involved in an orchestration.

오케스트레이터 함수Orchestrator functions

오 케 스트레이 터 함수는 작업이 실행 되는 방법 및 작업이 실행 되는 순서를 설명 합니다.Orchestrator functions describe how actions are executed and the order in which actions are executed. Orchestrator 함수는 응용 프로그램 패턴 Durable Functions같이 코드에서 오케스트레이션을 설명 합니다 (c # 또는 JavaScript).Orchestrator functions describe the orchestration in code (C# or JavaScript) as shown in Durable Functions application patterns. 오케스트레이션은 활동 함수, 하위 오케스트레이션, 외부 이벤트 대기, HTTP타이머를 비롯 한 다양 한 유형의 작업을 포함할 수 있습니다.An orchestration can have many different types of actions, including activity functions, sub-orchestrations, waiting for external events, HTTP, and timers. Orchestrator 함수도 엔터티 함수와상호 작용할 수도 있습니다.Orchestrator functions can also interact with entity functions.

참고

Orchestrator 함수는 일반 코드를 사용 하 여 작성 되지만 코드를 작성 하는 방법에 대 한 엄격한 요구 사항이 있습니다.Orchestrator functions are written using ordinary code, but there are strict requirements on how to write the code. 특히 오 케 스트레이 터 함수 코드는 결정적이어야 합니다.Specifically, orchestrator function code must be deterministic. 이러한 확정 요구 사항을 따르지 않으면 오 케 스트레이 터 함수가 올바르게 실행 되지 않을 수 있습니다.Failing to follow these determinism requirements can cause orchestrator functions to fail to run correctly. 이러한 요구 사항 및 해결 방법에 대 한 자세한 내용은 코드 제약 조건 항목에서 찾을 수 있습니다.Detailed information on these requirements and how to work around them can be found in the code constraints topic.

Orchestrator 함수 및 해당 기능에 대 한 자세한 내용은 지 속성 오케스트레이션 문서를 참조 하세요.For more detailed information on orchestrator functions and their features, see the Durable orchestrations article.

활동 함수Activity functions

작업 함수는 영 속 함수 오케스트레이션의 기본 작업 단위입니다.Activity functions are the basic unit of work in a durable function orchestration. 작업 함수는 프로세스에서 오케스트레이션 되는 함수 및 작업입니다.Activity functions are the functions and tasks that are orchestrated in the process. 예를 들어 주문을 처리 하기 위해 오 케 스트레이 터 함수를 만들 수 있습니다.For example, you might create an orchestrator function to process an order. 작업에는 인벤토리 확인, 고객 요금 청구 및 배송 생성이 포함 됩니다.The tasks involve checking the inventory, charging the customer, and creating a shipment. 각 작업은 별도의 작업 함수입니다.Each task would be a separate activity function. 이러한 활동 함수는 직렬, 병렬 또는 둘의 조합으로 실행할 수 있습니다.These activity functions may be executed serially, in parallel, or some combination of both.

오 케 스트레이 터 함수와 달리 작업 함수는 작업의 형식에서 수행할 수 있는 작업 형식으로 제한 되지 않습니다.Unlike orchestrator functions, activity functions aren't restricted in the type of work you can do in them. 작업 함수는 네트워크 호출을 수행 하거나 CPU를 많이 사용 하는 작업을 실행 하는 데 자주 사용 됩니다.Activity functions are frequently used to make network calls or run CPU intensive operations. 또한 작업 함수는 orchestrator 함수로 데이터를 다시 반환할 수 있습니다.An activity function can also return data back to the orchestrator function. 지 속성 작업 프레임 워크는 호출 된 각 작업 함수가 오케스트레이션의 실행 중 에 한 번 이상 실행 되도록 보장 합니다.The Durable Task Framework guarantees that each called activity function will be executed at least once during an orchestration's execution.

참고

활동 함수는 적어도 한 번 실행 되도록 보장 하므로 가능 하면 활동 함수 논리를 idempotent 하는 것이 좋습니다.Because activity functions only guarantee at least once execution, we recommend you make your activity function logic idempotent whenever possible.

활동 트리거 를 사용 하 여 활동 함수를 정의 합니다.Use an activity trigger to define an activity function. .NET 함수는를 DurableActivityContext 매개 변수로 받습니다..NET functions receive a DurableActivityContext as a parameter. 트리거를 다른 serializeable 개체에 바인딩하여 함수에 입력을 전달할 수도 있습니다.You can also bind the trigger to any other JSON-serializeable object to pass in inputs to the function. JavaScript에서 <activity trigger binding name> context.bindings 개체의 속성을 통해 입력에 액세스할 수 있습니다.In JavaScript, you can access an input via the <activity trigger binding name> property on the context.bindings object. 작업 함수에는 단일 값만 전달할 수 있습니다.Activity functions can only have a single value passed to them. 여러 값을 전달 하려면 튜플, 배열 또는 복합 형식을 사용 해야 합니다.To pass multiple values, you must use tuples, arrays, or complex types.

참고

Orchestrator 함수 에서만 작업 함수를 트리거할 수 있습니다.You can trigger an activity function only from an orchestrator function.

엔터티 함수Entity functions

엔터티 함수는 작은 상태를 읽고 업데이트 하기 위한 작업을 정의 합니다.Entity functions define operations for reading and updating small pieces of state. 이러한 상태 저장 엔터티를 내구성이 있는 엔터티로자주 참조 합니다.We often refer to these stateful entities as durable entities. 오케스트레이터 함수와 마찬가지로 엔터티 함수는 특수 트리거 유형인 엔터티 트리거를 사용하는 함수입니다.Like orchestrator functions, entity functions are functions with a special trigger type, entity trigger. 클라이언트 함수 또는 orchestrator 함수에서 호출할 수도 있습니다.They can also be invoked from client functions or from orchestrator functions. Orchestrator 함수와 달리 entity 함수는 특정 코드 제약 조건을 포함 하지 않습니다.Unlike orchestrator functions, entity functions do not have any specific code constraints. 또한 엔터티 함수는 제어 흐름을 통해 상태를 암시적으로 나타내지 않고 명시적으로 관리합니다.Entity functions also manage state explicitly rather than implicitly representing state via control flow.

참고

엔터티 함수 및 관련 기능은 Durable Functions 2.0 이상에서만 사용할 수 있습니다.Entity functions and related functionality is only available in Durable Functions 2.0 and above.

엔터티 함수에 대 한 자세한 내용은 지 속성 엔터티 문서를 참조 하세요.For more information about entity functions, see the Durable Entities article.

클라이언트 함수Client functions

Orchestrator 함수는 오케스트레이션 트리거 바인딩을 통해 트리거되고 엔터티 함수는 엔터티 트리거 바인딩에의해 트리거됩니다.Orchestrator functions are triggered by an orchestration trigger binding and entity functions are triggered by an entity trigger binding. 이러한 트리거는 모두 작업 허브로 큐에 배치 되는 메시지에 응답 하 여 작동 합니다.Both of these triggers work by reacting to messages that are enqueued into a task hub. 이러한 메시지를 배달 하는 기본적인 방법은 클라이언트 함수내에서 orchestrator 클라이언트 바인딩 또는 엔터티 클라이언트 바인딩을 사용 하는 것입니다.The primary way to deliver these messages is by using an orchestrator client binding or an entity client binding from within a client function. 모든 오 케 스트레이 터 함수는 클라이언트 함수일 수 있습니다.Any non-orchestrator function can be a client function. 예를 들어 HTTP로 트리거되는 함수, Azure 이벤트 허브 트리거 함수 등에서 orchestrator를 트리거할 수 있습니다. 클라이언트 함수 에서 함수를 만드는 것은 내구성이 있는 클라이언트 출력 바인딩을 사용 하는 것입니다.For example, You can trigger the orchestrator from an HTTP-triggered function, an Azure Event Hub triggered function, etc. What makes a function a client function is its use of the durable client output binding.

참고

다른 함수 형식과 달리 orchestrator 및 entity 함수는 Azure Portal의 단추를 사용 하 여 직접 트리거할 수 없습니다.Unlike other function types, orchestrator and entity functions cannot be triggered directly using the buttons in the Azure Portal. Azure Portal에서 orchestrator 또는 entity 함수를 테스트 하려는 경우에는 해당 구현의 일부로 orchestrator 또는 entity 함수를 시작 하는 클라이언트 함수 를 대신 실행 해야 합니다.If you want to test an orchestrator or entity function in the Azure Portal, you must instead run a client function that starts an orchestrator or entity function as part of its implementation. 가장 간단한 테스트 환경을 위해 수동 트리거 함수를 권장 합니다.For the simplest testing experience, a manual trigger function is recommended.

Orchestrator 또는 entity 함수를 트리거하는 것 외에도 내구성이 있는 클라이언트 바인딩을 사용 하 여 오케스트레이션 및 엔터티를 실행 하는 것과 상호 작용할 수 있습니다.In addition to triggering orchestrator or entity functions, the durable client binding can be used to interact with running orchestrations and entities. 예를 들어 오케스트레이션을 쿼리, 종료 하 고 이벤트를 발생 시킬 수 있습니다.For example, orchestrations can be queried, terminated, and can have events raised to them. 오케스트레이션 및 엔터티 관리에 대 한 자세한 내용은 인스턴스 관리 문서를 참조 하세요.For more information on managing orchestrations and entities, see the Instance management article.

다음 단계Next steps

시작 하려면 c # 또는 JavaScript로 첫 번째 내구성이 있는 함수를 만듭니다.To get started, create your first durable function in C# or JavaScript.