0Pricing
Cloud & IT Cert Prep · 강의

Azure Functions 트리거 및 바인딩

HTTP로 트리거되는 함수를 작성하고, Azure Queue Storage에 쓰기 위한 출력 바인딩을 추가하며, Consumption Plan의 자동 확장 모델을 이해합니다.

Azure Functions 트리거 및 바인딩은(는) CoddyKit의 무료 Cloud & IT Cert Prep 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cloud & IT Cert Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

Azure Functions란?

Azure Functions는 인프라를 관리하지 않고 이벤트에 응답하여 작은 코드 단위(함수)를 실행할 수 있는 서버리스 컴퓨팅 서비스입니다. 함수가 실행되는 동안 사용한 실행 시간과 메모리에 대해서만 비용을 지불하며, 함수가 유휴 상태일 때는 비용이 발생하지 않습니다. Functions는 이벤트 기반 작업, 경량 API, 예약된 작업, 지속적인 서버 없이 클라우드 서비스를 통합하는 경우에 적합합니다.

트리거: 함수를 시작하는 요소

모든 Azure Function에는 해당 함수를 실행하게 만드는 이벤트를 정의하는 트리거가 정확히 하나 있어야 합니다. 일반적인 트리거로는 HTTP(수신 HTTP 요청), Timer(CRON 일정), Blob Storage(Container의 새 blob), Queue Storage(Queue의 새 메시지), Event Hub(이벤트 스트림), Service Bus(Queue/토픽 메시지), Cosmos DB(변경 피드)가 있습니다. 트리거는 이벤트 데이터를 받아 함수 코드에 전달합니다.

// HTTP trigger function (JavaScript/Node.js)
module.exports = async function (context, req) {
  const name = req.query.name || (req.body && req.body.name);
  const message = name ? 'Hello, ' + name : 'Pass a name in the query or body';
  context.res = {
    status: 200,
    body: { message }
  };
};

Function.json: 트리거 및 바인딩 구성

컴파일되지 않는 언어(JavaScript, Python)에서는 각 함수 디렉터리의 function.json 파일에 해당 함수의 트리거와 바인딩을 선언합니다. 이 파일은 이벤트 원본과 출력을 함수 코드의 이름이 지정된 매개 변수에 매핑합니다. C# 및 Java에서는 코드에 직접 특성/주석으로 바인딩을 선언합니다. Functions 런타임은 구성을 읽고 Azure 서비스에 대한 연결을 자동으로 설정합니다.

// function.json — HTTP trigger + Queue output binding
{
  'bindings': [
    {
      'authLevel': 'function',
      'type': 'httpTrigger',
      'direction': 'in',
      'name': 'req',
      'methods': ['post']
    },
    {
      'type': 'http',
      'direction': 'out',
      'name': 'res'
    },
    {
      'type': 'queue',
      'direction': 'out',
      'name': 'outputQueue',
      'queueName': 'processing-queue',
      'connection': 'AzureWebJobsStorage'
    }
  ]
}

출력 바인딩: 서비스에 데이터 쓰기

출력 바인딩을 사용하면 SDK나 연결 문자열을 관리하지 않고도 함수에서 Azure 서비스(Blob Storage, Queue Storage, Cosmos DB, Event Hub 등)에 데이터를 쓸 수 있습니다. 출력 바인딩 매개 변수에 값을 할당하기만 하면 Functions 런타임이 쓰기 작업을 처리합니다. 따라서 반복적인 코드가 크게 줄어들고 함수가 특정 Azure 서비스 구현 세부 정보와 분리됩니다.

// HTTP trigger with Queue output binding (Node.js)
module.exports = async function (context, req) {
  const orderData = req.body;

  // Write to queue via output binding -- no SDK needed!
  context.bindings.outputQueue = JSON.stringify({
    orderId: orderData.id,
    timestamp: new Date().toISOString()
  });

  context.res = { status: 202, body: 'Order queued' };
};

CRON 식을 사용한 Timer 트리거

Timer 트리거는 CRON 식으로 정의된 일정에 따라 함수를 실행합니다. Azure Functions는 6부분으로 구성된 CRON을 사용합니다: {seconds} {minutes} {hours} {day} {month} {day-of-week}. 매시간 실행하려면 0 0 * * * *, 매일 자정에 실행하려면 0 0 0 * * *, 평일 업무 시간 동안 매시간 실행하려면 0 0 9-17 * * 1-5를 사용하세요. Timer 함수는 정리 작업, 보고서 생성, 상태 확인에 유용합니다.

// Timer trigger — runs every day at 02:00 UTC
// function.json binding:
// {
//   'type': 'timerTrigger',
//   'schedule': '0 0 2 * * *',
//   'name': 'myTimer'
// }

module.exports = async function (context, myTimer) {
  const now = new Date().toISOString();
  context.log('Daily cleanup started at', now);
  // ... perform cleanup logic ...
  context.log('Cleanup completed');
};

Consumption 플랜: 서버리스 확장

Consumption 플랜에서 Azure Functions는 트리거 이벤트 발생률에 따라 인스턴스를 0개에서 수백 개까지 자동으로 확장합니다. 실행 횟수와 사용한 메모리의 GB-초에 대해서만 비용을 지불하며, 매월 처음 100만 회의 실행은 무료입니다. Functions 호스트는 HTTP 트리거를 최대 200개 인스턴스로 확장하고, Queue 트리거는 Queue 메시지 수만큼 동시에 확장할 수 있습니다. 콜드 스타트(유휴 상태 후 첫 실행)는 짧은 지연을 추가하며, Premium 플랜의 사전 워밍된 인스턴스를 사용하면 이를 줄일 수 있습니다.

# View billing details for a function app
az functionapp show \
  --name myFunctionApp \
  --resource-group MyRG \
  --query '{name:name, plan:serverFarmId, state:state}'

# Create a Function App on Consumption plan
az functionapp create \
  --name myFunctionApp \
  --resource-group MyRG \
  --consumption-plan-location eastus \
  --runtime node \
  --runtime-version 18 \
  --storage-account mystorageaccount

Premium 및 Dedicated 플랜

Premium 플랜은 사전 워밍된 인스턴스를 유지하여 콜드 스타트를 없애고, VNet 통합을 추가하며, 더 긴 실행 timeout(최대 60분)을 허용합니다. Dedicated (App Service) 플랜은 웹 앱과 동일한 App Service 플랜에서 함수를 실행하므로, 예측 가능한 비용이 필요하거나 기존에 사용할 App Service 컴퓨팅이 있을 때 유용합니다. 진정한 서버리스 비용 구조에는 Consumption을, 성능이 중요하거나 VNet에 연결된 함수에는 Premium을 선택하세요.

# Create a Function App on Premium plan (EP1)
az functionapp plan create \
  --name MyPremiumPlan \
  --resource-group MyRG \
  --location eastus \
  --sku EP1 \
  --is-linux

az functionapp create \
  --name myFunctionAppPremium \
  --resource-group MyRG \
  --plan MyPremiumPlan \
  --runtime python \
  --runtime-version 3.11 \
  --storage-account mystorageaccount

Azure Functions 배포

Azure Functions Core Tools(func azure functionapp publish), VS Code 확장, Azure CLI를 통한 ZIP 배포, 또는 Azure Pipelines나 GitHub Actions의 CI/CD 파이프라인을 사용하여 Azure Functions를 배포할 수 있습니다. 프로덕션에서는 테스트하고 태그를 지정한 버전이 프로덕션에 도달하도록 항상 개발자 컴퓨터가 아닌 파이프라인에서 배포하세요. Functions 런타임은 런타임 환경을 완전히 제어할 수 있는 Docker Container 배포도 지원합니다.

# Local development: install Core Tools
npm install -g azure-functions-core-tools@4

# Start locally (triggers work against real Azure services)
func start

# Deploy to Azure
func azure functionapp publish myFunctionApp

# Or deploy via Azure CLI (ZIP deploy)
zip -r function.zip . --exclude '.git/*'
az functionapp deployment source config-zip \
  --name myFunctionApp \
  --resource-group MyRG \
  --src function.zip

애플리케이션 설정 및 Key Vault 참조

Function App은 애플리케이션 설정에 구성을 저장하며, 이 설정은 함수 코드에서 환경 변수로 표시됩니다. 연결 문자열, API 키, 보안 값은 애플리케이션 설정으로 저장하세요. 프로덕션에서는 Key Vault 참조를 사용하여 값을 Key Vault에 저장하고 앱 설정에는 이름으로만 참조하면 됩니다. 이렇게 하면 포털과 배포 아티팩트에 보안 값이 노출되지 않습니다. 자격 증명 없이 Key Vault에 인증할 수 있도록 Function App에서 관리 ID를 사용하도록 설정하세요.

# Set application settings
az functionapp config appsettings set \
  --name myFunctionApp \
  --resource-group MyRG \
  --settings \
    STORAGE_CONNECTION='@Microsoft.KeyVault(SecretUri=https://mykv.vault.azure.net/secrets/storage-conn/)' \
    COSMOS_DB_URI='https://mycosmosdb.documents.azure.com'

# In function code, read as normal env var
# const storageConn = process.env['STORAGE_CONNECTION'];

Application Insights를 사용한 Functions 모니터링

계측 키 또는 연결 문자열을 제공하면 Azure Functions가 Application Insights와 자동으로 통합됩니다. 모든 함수 실행은 요청으로 추적되며, 실행 시간, 성공/실패 여부, 사용자 지정 속성이 포함됩니다. 테스트 중에는 Live Metrics를 사용하여 실행을 실시간으로 확인하고, Failures 창에서 전체 예외 추적과 종속성 호출을 확인하여 오류를 진단하세요.

# Connect Application Insights to a Function App
az functionapp config appsettings set \
  --name myFunctionApp \
  --resource-group MyRG \
  --settings \
    APPLICATIONINSIGHTS_CONNECTION_STRING='InstrumentationKey=xxxxxxxx;...'

# Custom telemetry in function code (Node.js)
const appInsights = require('applicationinsights');
appInsights.setup().start();
const client = appInsights.defaultClient;
client.trackEvent({ name: 'OrderProcessed', properties: { orderId: '123' } });

동시성 및 확장 동작

Queue 트리거 함수의 경우 Functions 호스트가 여러 메시지를 병렬로 처리합니다. host.json의 batchSize를 구성하여 단일 인스턴스가 동시에 처리하는 메시지 수를 제어하세요. HTTP 트리거의 경우 스케일 아웃 시 새 인스턴스가 자동으로 추가됩니다. maxConcurrentCalls(Service Bus 트리거) 또는 maxPollingInterval(Queue 트리거)을 사용하여 처리량을 조정하고 스케일 아웃 중 데이터베이스와 같은 다운스트림 서비스에 과도한 부하가 발생하지 않도록 하세요.

// host.json — tune queue trigger concurrency
{
  'version': '2.0',
  'extensions': {
    'queues': {
      'batchSize': 16,          // messages per instance
      'newBatchThreshold': 8,   // fetch more when < 8 remain
      'maxPollingInterval': '00:00:02',
      'visibilityTimeout': '00:05:00'
    }
  },
  'functionTimeout': '00:10:00'
}

빠른 확인

이 레슨에서 배운 Microsoft Azure 기초(AZ-900) 개념에 대한 이해도를 확인해 보세요.

레슨 요약

이 레슨에서는 다음을 배웠습니다. 트리거는 함수를 시작하는 이벤트(HTTP, Timer, Queue, Blob 등)를 정의하고, 출력 바인딩을 사용하면 SDK 코드 없이 함수에서 Azure 서비스에 쓸 수 있으며, Consumption 플랜은 0부터 시작하는 진정한 서버리스 실행당 과금 방식의 확장을 제공합니다. 다음으로 상태 저장 워크플로를 위한 Durable 함수를 살펴보겠습니다.

자주 묻는 질문

“Azure Functions 트리거 및 바인딩” 강의는 무료인가요?

네 — “Azure Functions 트리거 및 바인딩” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cloud & IT Cert Prep 강의 전체를 잠금 해제할 수 있습니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

“Azure Functions 트리거 및 바인딩”에서 뭘 배우나요?

HTTP로 트리거되는 함수를 작성하고, Azure Queue Storage에 쓰기 위한 출력 바인딩을 추가하며, Consumption Plan의 자동 확장 모델을 이해합니다. 브라우저에서 직접 실행하는 실습 코드로 Cloud & IT Cert Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cloud & IT Cert Prep을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cloud & IT Cert Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“Azure Functions 트리거 및 바인딩” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cloud & IT Cert Prep 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cloud & IT Cert Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Azure Functions 트리거 및 바인딩
  2. 상태 저장 워크플로를 위한 Durable Functions
  3. Azure Logic Apps
  4. Event Grid 및 이벤트 기반 아키텍처
← Cloud & IT Cert Prep(으)로 돌아가기