Azure Functions: 서버리스 컴퓨팅 시작하기 완전 가이드

Azure Functions 서버리스 컴퓨팅
Azure Functions – 서버 없이 코드만 실행하는 서버리스 컴퓨팅

Azure Functions란?

Azure Functions는 Microsoft Azure의 서버리스(Serverless) 컴퓨팅 서비스로, 인프라를 직접 관리하지 않고 이벤트 중심의 코드를 실행할 수 있게 해줍니다. “함수(Function)”라는 이름처럼 특정 이벤트에 반응하는 작은 코드 단위를 정의하고, 이벤트가 발생할 때만 코드가 실행됩니다. 서버 프로비저닝, OS 패치, 스케일링 등 인프라 관련 작업을 Azure가 모두 처리하므로 개발자는 비즈니스 로직 구현에만 집중할 수 있습니다.

Azure Functions는 C#, JavaScript(Node.js), Python, Java, PowerShell, TypeScript 등 다양한 언어를 지원합니다. HTTP 요청, 타이머, 메시지 큐, Blob Storage, Event Hub, Cosmos DB 변경 피드 등 수십 가지 트리거와 바인딩을 통해 Azure 서비스 및 외부 서비스와 쉽게 연동할 수 있습니다.

서버리스의 핵심 개념

이벤트 중심 아키텍처

서버리스 함수는 이벤트가 발생할 때만 실행됩니다. HTTP 요청, 파일 업로드, 메시지 도착, 스케줄(CRON), 데이터베이스 변경 등 다양한 이벤트가 트리거가 될 수 있습니다. 함수가 실행되지 않을 때는 비용이 발생하지 않으며(소비 계획 기준), 트래픽이 급증하면 자동으로 수평 확장됩니다. 이 특성 덕분에 간헐적으로 실행되는 작업, 트래픽이 불규칙한 워크로드에 서버리스가 특히 경제적입니다.

트리거와 바인딩

트리거(Trigger)는 함수를 시작시키는 이벤트 소스이고, 바인딩(Binding)은 함수의 입력/출력 데이터 소스를 선언적으로 정의하는 방법입니다. 예를 들어 Blob 트리거 함수는 스토리지 컨테이너에 파일이 업로드될 때 실행되고, 입력 바인딩으로 해당 파일 내용을 읽으며, 출력 바인딩으로 처리 결과를 Cosmos DB에 저장하는 구성을 몇 줄의 설정으로 구현할 수 있습니다. 바인딩을 통해 SDK 초기화, 연결 관리, 인증 코드를 직접 작성할 필요가 없어 개발 생산성이 크게 향상됩니다.

서버리스 아키텍처 이벤트 처리
Azure Functions 서버리스 아키텍처 – 이벤트 중심 자동 확장

Azure Functions 호스팅 계획

소비 계획(Consumption Plan)

소비 계획은 함수가 실행될 때만 비용을 지불하는 진정한 서버리스 방식입니다. 월 100만 회 실행과 40만 GB-초의 리소스 소비는 무료입니다. 자동으로 스케일아웃하며, 최대 200개 인스턴스까지 확장됩니다. 단, 콜드 스타트(Cold Start) 지연이 발생할 수 있어 실시간 응답이 중요한 HTTP 함수에는 주의가 필요합니다. 개발, 테스트, 간헐적 워크로드에 가장 적합합니다.

Flex Consumption 계획

2024년 출시된 Flex Consumption 계획은 소비 계획의 유연성과 프리미엄 계획의 성능을 결합한 새로운 옵션입니다. 항상 준비된 최소 인스턴스 수를 설정해 콜드 스타트를 줄이면서, 트래픽 급증 시 빠르게 확장합니다. VNet 통합도 지원해 프라이빗 네트워크 리소스에 접근할 수 있습니다.

프리미엄 계획(Premium Plan)

프리미엄 계획은 콜드 스타트 없는 사전 웜업 인스턴스, VNet 통합, 더 강력한 인스턴스(vCPU, 메모리)를 제공합니다. 지속적인 실행이 필요하고 네트워크 격리가 필요한 엔터프라이즈 워크로드에 적합합니다. 대용량 연속 처리가 필요하다면 App Service 계획에 Functions를 배포하는 방식도 있습니다.

Azure Functions 실전 사용 사례

이미지 처리 파이프라인

사용자가 이미지를 업로드하면 Blob Storage 트리거 함수가 자동으로 실행되어 이미지 리사이징, 썸네일 생성, 메타데이터 추출을 처리합니다. 처리된 이미지는 출력 바인딩으로 별도 컨테이너에 저장하고, Cosmos DB에 메타데이터를 기록합니다. 이 패턴은 서버 없이 완전 자동화된 이미지 처리 파이프라인을 구현합니다.

API 백엔드

HTTP 트리거 함수들을 조합해 경량 REST API를 구현할 수 있습니다. Azure API Management와 통합하면 인증, 속도 제한, 캐싱, API 문서화 기능을 추가할 수 있습니다. 트래픽이 불규칙한 내부 API, 관리자 API, 웹훅(Webhook) 처리에 특히 적합합니다.

자동화 및 스케줄 작업

타이머 트리거를 사용하면 CRON 표현식으로 정기 실행 작업을 구현합니다. 매일 밤 12시에 데이터 집계, 매시간 외부 API 데이터 수집, 주기적인 데이터 정리 작업 등에 활용합니다. 온프레미스 SQL Server Agent 작업을 Azure Functions 타이머 트리거로 이전하면 서버 없이 스케줄 작업을 운영할 수 있습니다.

서버리스 비용 최적화
Azure Functions 비용 – 실행 횟수와 리소스 소비량만큼 지불

Durable Functions: 장기 실행 워크플로우

Durable Functions는 일반 Azure Functions를 확장해 상태 저장(Stateful) 워크플로우를 구현할 수 있게 하는 확장 기능입니다. 오케스트레이터 함수가 여러 액티비티 함수를 순차적 또는 병렬로 조율하며, 장기 실행 프로세스에서도 상태를 영속적으로 저장합니다. 주문 처리 워크플로우(주문 접수 → 결제 확인 → 재고 확인 → 배송 예약), 승인 프로세스, 배치 처리 조율에 활용됩니다.

마치며

Azure Functions는 현대 클라우드 아키텍처에서 빠질 수 없는 서버리스 컴퓨팅 솔루션입니다. 인프라 관리 부담 없이 이벤트 중심의 코드를 실행하고, 사용한 만큼만 비용을 지불하는 경제적 모델로 다양한 워크로드를 효율적으로 처리할 수 있습니다. 이미지 처리, API 백엔드, 스케줄 작업부터 복잡한 Durable Functions 워크플로우까지 Azure Functions의 가능성을 직접 탐험해 보세요.

댓글 남기기