Durable Functions란?

완료됨

Durable Functions를 사용하면 서버리스 환경에서 복잡한 상태 저장 함수를 구현할 수 있습니다.

예제 시나리오에서 현재 회사는 프로젝트 디자인 제안에 대한 수동적인 승인 프로세스를 따릅니다. 프로세스에는 여러 단계가 있으며 프로세스의 각 단계는 기간에 따라 다를 수 있습니다. 사내에서 자동화된 프로세스를 구현하는 것은 복잡하고 비용이 많이 듭니다. 각 단계를 조정하려면 노력이 필요합니다. 또한 사용자 지정 논리를 워크플로에 통합할 수 있어야 합니다.

이 단원에서는 Durable Functions의 이점에 대해 알아봅니다. 다른 함수 형식 및 Durable Functions와 관련된 주요 개념에 대해 알아봅니다.

지속성 함수

Durable Functions는 Azure Functions의 확장입니다. Azure Functions가 상태 비저장 환경에서 작동하는 반면, Durable Functions는 함수 호출 간에 상태를 유지할 수 있습니다. 이 방식을 사용하면 서버리스 환경에서 복잡한 상태 저장 실행을 간소화할 수 있습니다.

Durable Functions는 필요에 따라 크기를 조정할 수 있으며, 클라우드에서 복잡한 워크플로를 구현하는 비용 효과적인 방법을 제공합니다. Durable Functions를 사용하면 다음과 같은 몇 가지 이점을 얻을 수 있습니다.

  • 이를 통해 이벤트 기반 코드를 쓸 수 있습니다. 지속성 함수는 하나 이상의 외부 이벤트를 비동기식으로 대기한 다음, 이러한 이벤트에 대응하여 일련의 태스크를 수행할 수 있습니다.

  • 함수를 함께 연결할 수 있습니다. 한 함수를 사용하여 다른 기능을 병렬로 호출한 다음, 결과를 축적하는 팬아웃/팬인과 같은 일반적인 패턴을 구현할 수 있습니다.

  • 함수를 오케스트레이션 및 조정하고 함수가 실행되어야 하는 순서를 지정할 수 있습니다.

  • 상태는 자동으로 관리됩니다. 장기 실행 함수를 위한 상태 정보를 저장하기 위해 사용자 고유의 코드를 작성할 필요가 없습니다.

Durable Functions를 통해 오케스트레이션 함수를 사용하여 상태 저장 워크플로를 정의할 수 있습니다. 오케스트레이션 함수는 다음과 같은 추가 이점을 제공합니다.

  • 코드에서 워크플로를 정의할 수 있습니다. JSON 설명을 작성하거나 워크플로 디자인 도구를 사용할 필요가 없습니다.

  • 함수를 동기적 및 비동기적으로 호출할 수 있습니다. 호출된 함수의 출력은 변수에 로컬로 저장되고 이후 함수 호출에 사용됩니다.

  • Azure는 함수가 대기할 때 자동으로 함수의 진행률을 확인합니다. Azure는 리소스를 보존하고 비용을 줄이기 위해 함수가 대기하는 동안 함수를 디하이드레이션하고 해당 상태를 저장하도록 선택할 수 있습니다. 함수가 다시 실행되기 시작하면 Azure는 리하이드레이션하고 해당 상태를 복원합니다.

함수 형식

사용할 수 있는 세 가지 지속성 함수 형식은 ‘클라이언트’, ‘오케스트레이터’ 및 ‘활동’입니다.

클라이언트 함수는 Durable Functions 오케스트레이션의 인스턴스를 만들기 위한 진입점입니다. 새로운 HTTP 요청 도착, 메시지 큐에 게시되는 메시지, 이벤트 스트림에 도착하는 이벤트와 같은 많은 원본에서의 이벤트에 응답하여 실행될 수 있다. 지원되는 언어 중 하나로 작성할 수도 있습니다.

Orchestrator 함수는 작업이 실행되는 방법 및 실행되는 순서를 설명합니다. 코드에서 오케스트레이션 논리를 작성합니다(C# 또는 JavaScript).

활동 함수는 Durable Functions 오케스트레이션에서의 기본적인 작업 단위입니다. 활동 함수는 오케스트레이션되는 태스크에서 수행하는 실제 작업을 포함합니다.

애플리케이션 패턴

Durable Functions를 사용하여 많은 일반적인 워크플로 패턴을 구현할 수 있습니다. 이러한 패턴은 다음과 같습니다.

  • 함수 연결: 이 패턴에서 워크플로는 지정된 시퀀스에 따라 일련의 함수를 실행합니다. 한 함수의 출력은 시퀀스에서 다음 함수의 입력에 적용됩니다. 최종 함수의 출력은 결과를 생성하는 데 사용됩니다.

    Diagram illustrating a function chaining pattern.

  • 팬아웃/팬인: 이 패턴은 여러 함수를 병렬로 실행하고 모든 함수가 완료될 때까지 기다립니다. 병렬 실행의 결과를 집계하거나 이를 사용하여 최종 결과를 계산할 수 있습니다.

    Diagram illustrating a fan out/fan in pattern.

  • 비동기 HTTP API: 이 패턴은 외부 클라이언트와의 장기 실행 작업 상태 조정 문제를 해결합니다. HTTP 호출은 장기 실행 작업을 트리거한 다음 클라이언트를 상태 엔드포인트로 리디렉션할 수 있습니다. 클라이언트는 이 엔드포인트를 폴링하여 작업이 완료되는 시기를 알 수 있습니다.

    Diagram illustrating an async HTTP API pattern.

  • 모니터: 이 패턴은 워크플로의 반복적인 프로세스를 구현하므로 상태의 변경 내용을 찾을 수 있습니다. 예를 들어 특정 조건이 충족될 때까지 이 패턴을 사용하여 폴링할 수 있습니다.

    Diagram illustrating a monitor pattern.

  • 사용자 상호 작용: 이 패턴은 인간의 상호 작용도 일부 포함하는 자동화된 프로세스를 결합합니다. 자동화된 프로세스 내에 수동 프로세스는 까다롭습니다. 사람들은 대부분의 컴퓨터만큼 가용성과 반응성이 높지 않기 때문입니다. 인간이 지정된 응답 시간 내에 올바르게 상호 작용하지 못하는 경우 실행되는 시간 초과 및 보상 논리를 사용하여 인간 상호 작용을 통합할 수 있습니다. 승인 프로세스가 인간 상호 작용을 포함하는 프로세스의 예제입니다.

    Diagram illustrating a human interaction pattern.

Logic Apps와의 비교

Durable Functions와 Logic Apps는 모두 서버리스 워크로드를 사용하는 Azure 서비스입니다. Azure Durable Functions는 사용자 지정 논리를 실행하는 강력한 서버리스 컴퓨팅 옵션으로 제공됩니다. Azure Logic Apps는 Azure 서비스 및 구성 요소를 통합 하는 데 더 적합합니다. 두 기술 중 하나를 사용하여 복잡한 오케스트레이션을 만들 수 있습니다. Azure Durable Functions를 사용하면 코드를 작성하고 Durable Functions 확장을 사용하여 오케스트레이션을 개발할 수 있습니다. Logic Apps를 사용하면 디자인 화면을 사용하거나 구성 파일을 편집하여 오케스트레이션을 만들 수 있습니다.

다음 표에는 Azure Durable Functions 및 Azure Logic Apps 간의 주요 차이점이 몇 가지 나와 있습니다.

작업 Azure Durable Functions Azure Logic Apps
개발 코드 중심(명령적) 디자인 중심(선언적)
연결 약 12개의 기본 제공 바인딩 형식. 사용자 지정 바인딩에 대한 코드를 작성할 수 있습니다. 대규모의 커넥터 컬렉션. B2B용 엔터프라이즈 통합 팩. 사용자 지정 커넥터를 빌드할 수도 있습니다.
작업 각 활동은 Azure Function입니다. 활동 함수에 대한 코드를 작성할 수 있습니다. 즉시 사용 가능한 작업의 대규모 컬렉션. 사용자 지정 커넥터를 통해 사용자 지정 논리를 통합할 수 있습니다.
모니터링 Azure Application Insights Azure Portal, Azure Monitor 로그
관리 REST API, PowerShell, Visual Studio Azure Portal, REST API, PowerShell, Visual Studio, Visual Studio Code 확장

지식 점검

1.

Durable Functions란?

2.

다음 중 워크플로에서 Orchestrator 함수의 역할을 가장 잘 설명한 것은 무엇인가요?

3.

다음 중 인간 상호 작용 애플리케이션 패턴이 Durable Functions의 이점을 활용하는 이유를 가장 잘 설명한 것은 무엇인가요?