Azure Functions 소개

이 글은 Introducing Azure Functions의 블로그 글을 번역하였습니다.

진화하는 클라우드 개발

세상 어디서든 데이터가 존재하는 시대가 도래하였습니다. 클라우드와 온-프레미스는 물론이고, 인터넷에 연결된 장비까지 데이터가 저장되는 위치는 급격하게 확산되고 있습니다. 기업들은 데이터가 가지고 있는 가치를 찾아내기 위해서 노력하고 있으며, 개발자들은 제한된 시간 내에 확장성 높은 솔루션에 대응할 수 있도록 요구 받고 있습니다. 통상 이러한 솔루션들은 트랜잭션, 데이터 수집 및 처리 또는 실시간 이벤트에 대한 응답 등을 처리하기 위해서 수동으로 실행되거나 예약된 형태로 실행되는 배치 작업을 필요로 합니다.

이와 같은 변화의 요구는 간략 하면서 확장성 있는 이벤트 중심의 솔루션을 제공할 수 있도록 클라우드 개발 패러다임을 진화하게끔 만들었습니다. 개발자들은 일반적인 문제들과 클라우드 응용프로그램 개념을 추상화 할 수 있는 방법을 찾고 있는데, 이를 통하여 개발자는 개발에만 집중할 수 있도록 하여, 현실의 문제를 빠른 시간 내에, 데이터 중심의 방식으로 해결할 수 있습니다.

Azure Functions 요약

이번 Build 2016에서 Microsoft는 Azure Functions이라는 새로운 서비스를 발표하였습니다. Azure Functions은 이벤트 구동 방식의, 주문형 컴퓨팅 경험을 제공하는 서비스로, Azure, 서드파티 서비스, 온-프레미스 시스템에서 발생되는 이벤트에 의해서 코드가 실행되는 방식으로 기존 Azure 응용프로그램 플랫폼을 확장하고 있습니다. Azure Functions을 이용하면, 개발자는 데이터 원본 또는 메시징 솔루션에 대한 연결을 생성함으로써, 데이터 처리와 이벤트에 대한 반응을 쉽게 처리할 수 있게 되었습니다. 다양한 응용프로그램, 모바일, IoT 장비들이 Azure Functions을 이용하여 작성된 HTTP 기반의 API 끝점으로 연결할 수 있습니다. Azure Functions은 스케일 기반의 주문형 서비스로, 사용한 리소스만큼만 비용을 지불하면 됩니다.

0_Code_Logs

Azure Functions은 연속 배포 및 통합은 물론이고, 직관적인 웹 기반의 사용자 인터페이스를 제공하여, 다양한 프로그래밍 언어로 예약된 형식 또는 직접 호출되는 방식의 코드를 작성할 수 있습니다.

1_Integrated

Azure Functions은 다양한 호출 방식과 커넥터를 제공하는데, 개발자는 이를 이용하여 Azure 서비스에서 발생되는 이벤트에 반응하도록 할 수 있습니다. Azure Functions에 의해서 처리되는 데이터는 Azure Storage, Azure SQL DB, Document DB와 같은 Azure 데이터 서비스에 저장할 수 있습니다.

동작 방식

탄탄한 개발자 경험

Azure Functions을 이용하는 개발자는 Bash, Batch, PowerShell과 같은 스크립트는 물론이고, 다양한 언어(JavaScript, C#, Python, PHP)로 이벤트를 구현할 수 있습니다. 또한, 개발자는 미리 컴파일된 실행 파일을 업로드하여 실행할 수도 있습니다. 각각의 Azure Function은 Git 끝점으로 프로비전이 가능한데, 기존과 동일한 방식으로 개발을 할 수 있는 것은 물론이고, Visual Studio Team Services, GitHub, BitBucket과 같은 서비스를 이용하여 연속 통합(Continuous Integration)도 가능하게 해줍니다. Azure Functions에서 제공되는 로깅 기능을 이용하면, Azure Functions에 대한 모니터링과 문제 해결도 가능합니다.

다양한 호출 옵션

Azure Functions은 다양한 방법으로 호출할 수 있습니다. 예를 들면, CRON 표현식을 이용하여 미리 지정된 시간에 호출하거나, Azure Storage Blob 컨테이너, Azure Queue, Service Bus의 메시지에 변경사항이 있는 경우에도 호출할 수도 있으며, HTTP 트리거에 의해서도 호출할 수 있습니다. HTTP 지원 기능을 이용하면, Azure Functions은 웹 후크(Web Hooks)를 지원하는 SaaS 제품에서 발생시키는 이벤트에 대해서 반응할 수 있습니다. 설정 작업은 매우 쉽고 구성도 간단합니다.

혁신적인 방식의 데이터 접근과 처리

Azure Functions은 다른 서비스에 있는 데이터에 대한 코드를 호출하는 것뿐만 아니라, 해당 데이터에 대한 접근 및 처리도 간단하게 수행할 수 있도록 해줍니다. Azure Functions의 바인딩(Bindings)을 이용하면, 개발자는 데이터가 어떻게 Azure Function으로 오가는지에 대해서는 신경 쓸 필요 없이, 다른 데이터 원본에 대한 작업을 간단하게 처리하여 서비스를 제공할 수 있습니다. 바인딩은 작업들을 매우 간단하게 처리할 수 있도록 해줍니다. 예를 들어, 큐에 메시지를 추가하는 작업은 JSON을 Azure Function의 출력 변수로 전달하고, Blob을 가져오는 작업은 Azure Function의 입력 변수로 Blob를 읽어오는 방식으로 처리할 수 있습니다. 이와 같은 기능을 이용하면, 개발자는 상호 작용할 기반 서비스에 대해서는 기본적인 수준에서만 알고 있으면 되며, 향후에 다른 서비스로 전환이 필요한 경우에도 간단하게 변경이 가능합니다.

"서버가 필요 없는" 실행 모델

PaaS 솔루션의 핵심 가치 중에 하나는 코드로부터 운영 시스템 계층을 추상화 한다는데 있습니다. 기본 플랫폼은 미리 구성된 운영 시스템 이미지를 제공하게 됩니다. 따라서, 패칭이나 유지 관리가 필요 없고 응용프로그램에 대한 부하에 따라서 스케일을 자동으로 조정할 수 있습니다. Azure Functions은 개발자에게 기본 인프라와 완전하게 분리된 계층을 제공하는 방식으로 PaaS 개념을 확장하고 있으며, 트리거 호출에 따라서 자동으로 스케일이 조정되는 pay-per-execution 청구 모델을 채용하고 있습니다. Azure Functions의 자세한 가격 정보 정보는 여기(https://azure.microsoft.com/pricing/details/functions/)에서 확인하실 수 있습니다.

어디서든 실행되는 오픈 소스 런타임

Functions의 런타임, 템플릿, UI와 기본 WebJobs SDK는 모두 오픈 소스 프로젝트로 공개적으로 개발되고 있습니다. Azure Function 런타임은 Function이 실행될 수 있는 곳(Azure, 여러 분의 데이터센터 또는 다른 클라우드)이라면 어디든지 사용할 수 있습니다.

그 외의 장점들

Azure Functions은 개발자로 하여금 개발 슬롯, 간편한 인증 등과 같은 다양한 개발자 생산성 기능을 사용할 수 있도록 합니다. 응용프로그램 컨테이너를 세부적으로 제어해야 하는 고객은 앱 서비스 환경(App Service Environments, ASEs)과 같은 기존 응용프로그램 서비스 계획에 Azure Functions을 운영할 수 있습니다. 게다가, 회사의 방화벽 안에 응용프로그램, API 또는 데이터베이스를 가지고 있는 고객은 하이브리드 연결 또는 VNET과 같은 다양한 Azure 기술을 이용하여, 온-프레미스 리소스에서 Azure Functions을 호출하거나 Azure Function에서 온-프레미스에 있는 시스템으로 데이터를 저장할 수 있습니다.

시작하기

Azure Functions을 사용하려면, 먼저 Azure Functions 포털로 가서 설명에 따라서 진행하면 됩니다. 먼저 해결하려는 시나리오를 선택하는 화면부터 시작하게 됩니다.
옵션을 선택하고 나면, Azure Functions 대시보드로 이동합니다. 대시보드에서는 코드 작성, 이벤트 구성, 실행에 대한 모니터링과 기타 일반 설정들을 관리할 수 있습니다.

2_Function_Dashboard

브라우저 안에서 제공되는 코드 작성 기능은 Azure에서 지원되는 모든 언어들을 손쉽게 작성할 수 있는 환경을 제공합니다. 아래의 그림에서는 JavaScript를 이용하여 Azure Function을 작성하는 화면을 볼 수 있습니다.

3_in-browser code experience

Events and Data 페이지를 이용하면, 이벤트와 바인딩의 구성과 관리도 간단하게 처리할 수 있습니다.

4_Events and Data

향후 계획

현재 Azure Functions은 미리보기 단계로, Azure 고객과 체험판을 이용하는 고객이라면 모두 사용할 수 있습니다. 기능에 대한 백로그(backlog)는 GitHub 페이지에서 확인할 수 있습니다. 몇 달 이내에 새로운 기능들이 발표될 예정에 있습니다. Azure Functions에 대한 여러 분의 피드백도 고대하고 있으니, Azure UserVoice 사이트에 의견을 남겨주시길 바랍니다.