다음을 통해 공유


Azure Functions 시나리오

종종 일련의 중요한 이벤트에 대응하는 시스템을 빌드합니다. 웹 API를 빌드하거나, 데이터베이스 변경에 응답하거나, 이벤트 스트림 또는 메시지를 처리하는 경우 Azure Functions를 사용하여 이러한 시스템을 구현할 수 있습니다.

대부분의 경우 함수는 여러 클라우드 서비스와 통합되어 다양한 기능을 제공하는 구현을 제공합니다. 다음 목록에서는 Azure Functions에 대한 일반적인(그러나 완전하지는 않음) 시나리오를 보여 줍니다.

문서 상단에서 개발 언어를 선택합니다.

파일 업로드 처리

여러 가지 방법으로 함수를 사용하여 Blob Storage 컨테이너 내/외부의 파일을 처리할 수 있습니다. BLOB 컨테이너에서 트리거하는 옵션에 대한 자세한 내용은 모범 사례 설명서의 BLOB 작업을 참조하세요.

예를 들어 소매 솔루션에서 파트너 시스템은 제품 카탈로그 정보를 파일로 Blob Storage에 제출할 수 있습니다. Blob 트리거 함수를 사용하여 파일을 업로드할 때 파일의 유효성을 검사, 변환 및 주 시스템으로 처리할 수 있습니다.

Azure Functions를 사용하는 파일 업로드 프로세스의 다이어그램.

다음 자습서에서는 Blob 트리거(Event Grid 기반)를 사용하여 Blob 컨테이너에서 파일을 처리합니다.

예를 들어 Blob 컨테이너에서 이벤트 구독과 함께 Blob 트리거를 사용합니다.

[FunctionName("ProcessCatalogData")]
public static async Task Run([BlobTrigger("catalog-uploads/{name}", Source = BlobTriggerSource.EventGrid, Connection = "<NAMED_STORAGE_CONNECTION>")] Stream myCatalogData, string name, ILogger log)
{
    log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myCatalogData.Length} Bytes");

    using (var reader = new StreamReader(myCatalogData))
    {
        var catalogEntry = await reader.ReadLineAsync();
        while(catalogEntry !=null)
        {
            // Process the catalog entry
            // ...

            catalogEntry = await reader.ReadLineAsync();
        }
    }
}

실시간 스트리밍 및 이벤트 처리

클라우드 애플리케이션, IoT 장치 및 네트워킹 장치는 많은 양의 원격 분석 데이터를 생성하며 수집합니다. Azure Functions는 해당 데이터를 근 실시간으로 실행 부하 과다 경로로 처리한 다음, 분석 대시보드에서 사용할 Azure Cosmos DB에 저장할 수 있습니다.

또한 함수는 Event Grid와 같은 낮은 대기 시간 이벤트 트리거 및 SignalR과 같은 실시간 출력을 사용하여 근 실시간으로 데이터를 처리할 수 있습니다.

Azure Functions를 사용하는 실시간 스트림 프로세스의 다이어그램.

예를 들어 이벤트 허브 트리거를 사용하여 이벤트 허브에서 읽고 출력 바인딩을 사용하여 이벤트를 분리하고 변환한 후 이벤트 허브에 쓸 수 있습니다.

[FunctionName("ProcessorFunction")]
public static async Task Run(
    [EventHubTrigger(
        "%Input_EH_Name%",
        Connection = "InputEventHubConnectionSetting",
        ConsumerGroup = "%Input_EH_ConsumerGroup%")] EventData[] inputMessages,
    [EventHub(
        "%Output_EH_Name%",
        Connection = "OutputEventHubConnectionSetting")] IAsyncCollector<SensorDataRecord> outputMessages,
    PartitionContext partitionContext,
    ILogger log)
{
    var debatcher = new Debatcher(log);
    var debatchedMessages = await debatcher.Debatch(inputMessages, partitionContext.PartitionId);

    var xformer = new Transformer(log);
    await xformer.Transform(debatchedMessages, partitionContext.PartitionId, outputMessages);
}

기계 학습 및 AI

Azure Functions는 클라우드 호스팅 지능형 애플리케이션 빌드를 간소화하기 위해 AI 및 Azure 서비스와 통합되는 서버리스 컴퓨팅 리소스를 제공합니다. Functions 프로그래밍 모델을 사용하여 MCP(원격 모델 콘텐츠 프로토콜) 서버를 만들고 호스트하고 다양한 AI 도구를 구현할 수 있습니다. 자세한 내용은 도구 및 MCP 서버를 참조하세요.

Azure OpenAI 바인딩 확장을 사용하면 RAG(검색 보강 세대)와 같은 Azure OpenAI 서비스의 AI 기능과 동작을 함수 코드 실행에 통합할 수 있습니다. 자세한 내용은 검색 보강 생성을 참조하세요.

함수는 TensorFlow 모델 또는 Azure AI 서비스를 호출하여 이미지 스트림을 처리하고 분류할 수도 있습니다.

Azure Functions를 사용하는 기계 학습 및 AI 프로세스의 다이어그램.

자세한 내용은 Azure Functions에서 AI 도구 및 모델 사용을 참조하세요.

예약된 작업 실행

함수를 사용하면 정의한 cron 일정에 따라 코드를 실행할 수 있습니다.

일정에 따라 실행되는 Azure Portal에서 함수 만들기를 참조하세요.

예를 들어 동일한 고객에게 여러 통신이 진행되는 것을 방지하기 위해 15분마다 중복 항목에 대한 금융 서비스 고객 데이터베이스를 분석할 수 있습니다.

함수가 비즈니스 논리에 따라 항목을 중복 제거하여 15분마다 데이터베이스를 정리하는 예약된 작업의 다이어그램.

예제는 다음 코드 조각을 참조하세요.

[FunctionName("TimerTriggerCSharp")]
public static void Run([TimerTrigger("0 */15 * * * *")]TimerInfo myTimer, ILogger log)
{
    if (myTimer.IsPastDue)
    {
        log.LogInformation("Timer is running late!");
    }
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");

    // Perform the database deduplication
}

확장성 있는 웹 API 빌드

HTTP 트리거 함수는 HTTP 엔드포인트를 정의합니다. 이러한 엔드포인트는 직접 또는 바인딩 확장을 사용하여 다른 서비스에 연결할 수 있는 함수 코드를 실행합니다. 엔드포인트를 웹 기반 API로 작성할 수 있습니다.

HTTP 트리거 함수 엔드포인트를 GitHub 웹후크와 같은 웹후크 통합으로 사용할 수도 있습니다. 이러한 방식으로 GitHub 이벤트의 데이터를 처리하는 함수를 만들 수 있습니다. 자세한 내용은 Azure Functions에서 웹후크를 사용하여 GitHub 이벤트 모니터링을 참조하세요.

Azure Functions를 사용하여 HTTP 요청을 처리하는 다이어그램

예제는 다음 코드 조각을 참조하세요.

[FunctionName("InsertName")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req,
    [CosmosDB(
        databaseName: "my-database",
        collectionName: "my-container",
        ConnectionStringSetting = "CosmosDbConnectionString")]IAsyncCollector<dynamic> documentsOut,
    ILogger log)
{
    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic data = JsonConvert.DeserializeObject(requestBody);
    string name = data?.name;

    if (name == null)
    {
        return new BadRequestObjectResult("Please pass a name in the request body json");
    }

    // Add a JSON document to the output container.
    await documentsOut.AddAsync(new
    {
        // create a random ID
        id = System.Guid.NewGuid().ToString(), 
        name = name
    });

    return new OkResult();
}

서버리스 워크플로 빌드

함수는 Logic Apps 워크플로와 같은 서버리스 워크플로 토폴로지에서 컴퓨팅 구성 요소 역할을 하는 경우가 많습니다. 지속성 함수 확장을 사용하여 장기 실행 오케스트레이션을 만들 수도 있습니다. 자세한 내용은 Durable Functions 개요를 참조하세요.

Azure Functions를 사용하는 일련의 특정 서버리스 워크플로의 조합 다이어그램입니다.

데이터베이스 변경에 응답

일부 프로세스는 저장된 데이터가 변경될 때 다른 작업을 기록, 감사 또는 수행해야 합니다. 함수 트리거는 이러한 작업을 초기화하기 위한 데이터 변경 내용을 알림으로 알 수 있는 좋은 방법을 제공합니다.

데이터베이스 변경에 응답하는 데 사용되는 함수의 다이어그램입니다.

안정적인 메시지 시스템 만들기

Azure 메시징 서비스와 함께 Functions를 사용하여 고급 이벤트 기반 메시징 솔루션을 만들 수 있습니다.

예를 들어 일련의 함수 실행을 함께 연결하는 방법으로 Azure Storage 큐의 트리거를 사용할 수 있습니다. 또는 온라인 오더링 시스템에 Service Bus 큐 및 트리거를 사용합니다.

신뢰할 수 있는 메시지 시스템의 Azure Functions 다이어그램.

다음 문서에서는 스토리지 큐에 출력을 쓰는 방법을 보여 줍니다.

이 문서에서는 Azure Service Bus 큐 또는 토픽에서 트리거하는 방법을 보여줍니다.

다음 단계