[Azure] Functions 이란
개요
앞으로 Azure 클라우드 환경에서 업무를 진행하게 되었다. 업무에 필요한 기술 지식을 확보하기 위해 앞으로 다룰 서비스 중 하나인 Functions에 대해 정리한다.
Functions
Azure에서 제공하는 클라우드 기반 컴퓨팅 서비스 중 하나로, 스케일링 가능한 이벤트 기반 서버리스 컴퓨팅을 제공한다.
애플리케이션이 동작하는데 필요한 리소스는 클라우드에서 제공하므로 서버 배포 및 유지 관리에 신경 쓰지 않을 수 있다. 또한 기본적으로 함수가 실행된 시간에 대해서만 요금을 청구하기 때문에 비용을 절감할 수 있게 한다.
기능
- 사용 언어 설정 가능 : C#, Java, JavaScript, PowerShell, Python 등의 언어를 사용할 수 있다.
- 배포 자동화 : 도구 기반, 외부 파이프라인 기반 등 여러 가지 배포 옵션을 사용할 수 있다.
- 문제 해결 : 모니터링 도구 또는 테스트 전략을 사용하여 애플리케이션에 대한 인사이트를 얻을 수 있다.
- 동적 스케일링 : 함수가 부하에 따라 동적으로 스케일링된다. 수요가 늘면 리소스가 자동으로 추가 할당되며 요청이 줄면 리소스 및 애플리케이션이 자동으로 삭제된다.
- 이벤트 기반 아키텍쳐 : 데이터를 받으면 처리를 완료하거나 새로운 이벤트를 발생시킨다.
- 유연한 비용 옵션
- 소비 플랜 : 완전한 서버리스 호스팅 옵션. 자동 스케일링을 지원하고 함수가 실행 중인 때만 컴퓨팅 리소스에 대한 비용을 지불한다. 간헐적으로 발생하는 짧은 프로세스 워크로드에 적합하다.
- 프리미엄 플랜 : 초기화된 상태에서 유지되어 유후 상태로 진입해도 지연이 없다. 애플리케이션을 오래 실행해야 할 때 적합하며, 소비 플랜에 비래 더 많은 리소스를 사용해 빠르게 스케일링할 수 있다.
- 전용 플랜 : 함수를 지속적으로 실행해야 하는 경우에 적합하다. 애플리케이션 스케일링 방식을 제어할 수 있어 비용 예측에 용이하다.
트리거
트리거란 코드의 실행을 시작하게 하는 역할을 맡는다. 함수가 호출되는 방식을 정의하며, 함수에 데이터를 전달하는 역할을 수행할 수도 있다. 하나의 함수는 하나의 트리거를 가져야 한다. Azure Functions에서는 아래 유형의 트리거를 제공하고 있다.
- 스토리지 : 새 행을 삽입할 때 데이터베이스에서 이벤트를 수신 대기할 수 있다.
- 이벤트 : Event Grid 또는 Event Hubs로 코드를 트리거 할 수 있는 이벤트를 생성한다.
- HTTP : 웹 요청 또는 웹 후크로 HTTP 코드를 트리거할 수 있다.
- 큐 : 큐 메시지를 처리한다.
- 타이머 : 특정 시간 간격으로 호출한다.
바인딩
함수를 데이터 원본과 연결하는 방법이다. 함수에 데이터를 전달하거나 매개변수를 사용하여 데이터를 쓸 수 있게 함으로써 입력 및 출력 데이터를 위한 코딩을 간소화할 수 있다.
위에서 살펴본 트리거도 특수한 입력 바인딩에 해당된다.
사용 사례
Azure Functions은 다음과 같은 사례에서 사용을 고려할 수 있다.
- 알림 : 특정 간격으로 실행할 수 있기 때문에 알림을 받는 것이 중요한 경우
- 작업 예약 : 특정 시각에 동작해야 하거나 특정 주기로 동작해야 하는 작업이 있는 경우
- API : 적은 비용으로 수백만 건의 호출을 수행할 수 있다.
- 간헐적인 비즈니스 흐름
- 큐 기반
- 실시간 데이터 처리
등등…….
참고 문서
https://learn.microsoft.com/ko-kr/training/paths/create-serverless-applications/
https://learn.microsoft.com/ko-kr/training/modules/intro-azure-functions/
https://github.com/angie4u/AzureFunctions