자세히 보기

Simon Bisson
Contributing Writer

“서버리스의 재발견”··· 기술 트랜드에 맞춰 진화하는 ‘MS 애저 함수’

마이크로소프트(MS)는 서버리스 컴퓨팅 서비스에 대한 중요한 업데이트를 발표했다. 새로운 업데이트는 쿠버네티스와 생성형 AI 등 최신 개발 트렌드를 적극 반영하고 있다.

불과 몇 년 전만 해도 서버리스 컴퓨팅이 화두였다. 그러다 서버리스 컴퓨팅은 점차 사라지는 듯했고, 사람들의 관심사는 쿠버네티스, 이어서 생성형 AI로 옮겨지는 것처럼 보였다. 하지만 대부분의 기술과 마찬가지로 서버리스 컴퓨팅은 여전히 건재하며, 특히 현대 클라우드 네이티브 디자인의 핵심 요소인 온디맨드 컴퓨팅을 제공하고 있다.

MS의 애저 함수(Azure Functions)는 지속적으로 발전하여 최신 API와 언어를 지원할 뿐만 아니라, AI에서 사물 인터넷에 이르기까지 다양한 분야에서 활용되고 있다. 또한 애저 함수는 다른 애저 서비스와 함께 사용하기에 좋은 방법으로 제시되고 있다. 애저 함수의 핵심은 ‘사용한 만큼 지불’하는 방식으로 필요에 따라 컴퓨팅 자원을 제공하는 것이다. 서버리스 도구를 사용하면 인프라를 미리 준비할 필요가 없고, 대신 이벤트에 응답하는 무상태(stateless) 코드를 작성하면 된다.

이벤트 중심 모델은 서버리스 컴퓨팅의 핵심이다. 이 모델은 데이터가 도착하는 즉시 처리하고 사용할 수 있게 해준다. 이러한 특성 덕분에 서버리스는 최신 메시지 기반 애플리케이션의 핵심 구성 요소로 자리잡았다. 더불어 애저 이벤트 그리드(Azure Event Grid)와 같은 발행-구독 기술과 개방형 표준 기반 클라우드이벤트(CloudEvents) 메시징 형식을 활용하여 그 기능을 더욱 확장할 수 있다.

빌드 2024에서 MS는 애저 함수에 주요 업데이트 사항을 공개했다. 여기엔 관리형 쿠버네티스 환경에서 실행할 수 있는 기능과 애저 오픈AI(Azure OpenAI)를 중심으로 구축된 온디맨드 AI 애플리케이션 지원이 포함됐는데, 모두 최신 개발 트렌드를 반영한 결과물이었다.

애저 컨테이너 앱스에서 애저 컨테이너 함수 실행하기
MS의 애저 컨테이너 앱(Azure Container Apps, ACA)은 애플리케이션 컨테이너와 기본 확장 규칙만 신경 쓰면 되는 관리형 쿠버네티스 환경이다. 대부분의 기능이 자동화되어 있어 기본 쿠버네티스 플랫폼은 따로 작업할 필요가 없다. 애저 함수가 ‘서버리스’라면, 애저 컨테이너 앱은 ‘플랫폼리스’ 기술로 표현할 수 있다.  

애저 함수의 주요 특징은 이식성이다. 배포 및 테스트를 위해 컨테이너에서 함수 앱과 기본 런타임을 빌드할 수 있는 방식을 제공한다. MS는 빌드에서 ACA가 이제 컨테이너 호스팅 서비스의 일환으로 함수 컨테이너를 지원한다고 발표했다.  ACA는 이벤트 발생 시 필요에 따라 컨테이너를 자동으로 생성하고 실행할 수 있어, 애저 함수를 호스팅하는 데 이상적인 플랫폼으로 자리잡고 있다.

ACA에서 사용하는 컨테이너는 애저의 다른 서비스에서 사용하는 것과 같은 런타임 환경을 제공하기 때문에, 기존에 사용하던 개발 도구와 연동하여 계속 사용할 수 있다. 표준 애저 함수에서 제공하는 기능과 동일한 통합 기능을 사용할 수 있는 뜻이다. 여기에는 동일한 바인딩이 포함되며, ACA는 쿠버네티스 기반의 이벤트 중심 자동 확장(KEDA)을 사용하여 확장을 처리한다.

비용 측면에서 애저 함수는 실행 시간과 리소스 사용량에 따라 청구되지만, ACA는 서버리스 소비 모델 또는 전용 상품을 통해 청구된다. 중요한 점은 ACA에 호스팅된 애저 함수 사용 비용은 애저 함수 이용료로 별도로 청구되지 않고, ACA 서비스의 요금제에 포함된다는 부분이다. 참고로 ACA 전용 상품을 사용하는 경우, 애저 함수는 GPU 리소스에 접근할 수 있어 로컬 AI 모델을 가속화하는 데 도움이 될 수 있다.

애저 함수를 호스팅하는 컨테이너는 리눅스 기반이며, 각 언어 옵션마다 기본 이미지가 다르다. 새 함수 프로젝트를 만들 때 -docker 옵션을 사용하면 함수 명령줄 개발 도구가 올바른 이미지를 생성한다. 최신 보안 패치를 적용하려면 이 이미지를 최신 상태로 유지해야 하며, 새 이미지가 정기적으로 출시되므로 약 한 달 주기로 이미지를 다시 배포해야 한다.

애저 오픈AI와 함께 애저 함수 사용하기
MS 빌드 2024 내용 상당수는 AI와 관련돼 있었다. 애저 함수는 아직 자체 코파일럿이 없지만, MS가 만든 다양한 AI 프로그래밍 도구와 함께 쓸 수 있다. 함수를 사용하여 생성형 AI 작업을 수행하고 애저 오픈 AI의 트리거에 응답할 수 있는 API 세트를 제공하는 식이다.

애저 오픈AI에서 함수를 트리거하는 것은 서버리스 에이전트를 제공하는 데 도움이 된다. 프롬프트는 알려진 함수를 호출하고, 함수 출력은 그 자체로 자연어 출력을 제공할 수 있는 프롬프트로 사용된다. 다른 도구를 사용하면 벡터 검색 인덱스를 업데이트하고 읽을 수 있어 함수를 사용하여 로컬 시맨틱 스토어를 유지할 수 있다.

MS는 지원하는 거의 모든 언어에 함수 확장 기능을 추가하고 있다. 개발 도구 확장 패키지에 함수를 설치하시는 식으로 개발자는 선호하는 언어로 애저 함수를 쉽게 개발할 수 있다. 예를 들어, C#을 사용하는 경우 NuGet(C#의 패키지 관리자)을 통해 .NET CLI에서 필요한 패키지를 설치하는 식이다. 이때 사용 중인 벡터 데이터베이스에 맞는 패키지를 설치해야 한다(예: 애저 AI 서치 또는 코스모스 DB의 새로운 DiskANN 기반 벡터 검색).

애저 오픈AI와 애저 함수를 함께 사용하면 특정 작업을 수행하는 함수를 만들어서, 그 함수를 프롬프트 플로우(입력 처리, 이해 및 해석, 응답을 처리하는 등 사용자가 요청을 처리하는 일련의 단계) 과정에서 필요한 기술로 활용할 수 있다. 예를 들어, 챗봇이 함수에 전달해야 하는 요청을 감지하면 함수 설명에 따라 데이터를 문자열로 전달할 수 있다. 이후 함수는 해당 문자열을 처리하여 다른 애플리케이션의 데이터베이스에 추가하는 등의 작업을 수행할 수 있다.

필요한 경우, 애저 함수를 사용하여 외부 트리거를 기반으로 챗봇(또는 생성형 AI와 상호작용 기술)을 만들 수 있다. 이렇게 하면 AI를 게이트키핑하는 함수를 사용하여 프롬프트를 동적으로 생성하고 필터를 제공하며 알려진 프롬프트 삽입 공격을 피할 수 있다. 간단한 상호 작용을 통해 애저 오픈AI 엔드포인트에 요청을 보내고 다른 함수로 전달할 수 있는 응답을 받는다.

서버리스 컴퓨팅 기술을 애저 오픈AI과 함께 수행할 수 있는 작업은 많다. 애저 함수는 프롬프트 흐름이나 시맨틱 커널과 같은 도구의 플러그인 및 스킬로 잘 작동하며, 기본적인 챗봇을 넘어 애저 오픈AI를 기반으로 한 AI 에이전트를 구성할 수 있다. 이를 통해 LLM과 사용자가 직접 상호작용하지 않게 할 수 있다. LLM과 애저 함수를 결합해, 검색 증강 생성(RAG) 기반 애플리케이션이나 복잡한 애플리케이션을 위한 자연어 인터페이스로 사용해볼 수 있다.

다양한 선택지와 유연한 과금방식을 제공하는 ‘유연 소비 유금제’
새로운 애플리케이션 개발 기능과 함께 애저 함수에는 새로운 비용 지불 방법이 제공된다. ‘유연소비(Flex Consumption) 요금제’는 기존 ‘소비(Consumption) 기반 요금제’의 확장 상품으로, 기본 인프라에 더 많은 유연성을 추가했다. 인스턴스는 리눅스 서버 위에 구축되며, C# .NET 8 코드 및 Node.js를 비롯한 친숙한 함수 프로그래밍 환경을 지원한다.

서버리스 컴퓨팅의 큰 장점은 인프라를 신경 쓰지 않고 단순히 사용 가능한 리소스로 실행할 수 있다는 것이다. 하지만 함수가 배포되는 방식과 사용할 수 있는 리소스를 제어하는 몇 가지 기본 설정 항목이 여전히 필요하다. 대표적으로 사설 네트워크 사용 여부 선택, 호스트 인스턴스의 메모리 크기 결정, 다양한 확장 모델 지원을 들 수 있다. 이런 기본 설정을 조정하며 개발자는 서버리스 환경에서도 어느 정도의 제어권을 갖고 맞춤화할 수 있다.

어떤 면에서 유연 소비 요금제는 고성능과 빠른 응답 시간이 중요한 대규모 애플리케이션에 적합한 솔루션이라고 볼 수 있다. 일단 이벤트 기반 확장을 유지하면서 인스턴스 수를 200개에서 최대 1,000개까지 인스턴스를 보유할 수 있다. 동시에 새로운 인스턴스는 빠른 배포를 지원할 뿐만 아니라 항상 실행할 준비가 되어 있는 인스턴스 수를 설정할 수 있다. 이 접근 방식은 현재 세트가 활성화되는 즉시 항상 준비된 인스턴스를 추가로 가동하여 애플리케이션 지연 시간을 줄여준다. 더 큰 메모리 인스턴스는 더 많은 네트워크 대역폭과 더 많은 CPU에 접근할 수 있다.

유연 소비 요금제는 기본 2,048MB 메모리 옵션 외에도 4,096MB를 지원하는 더 큰 인스턴스를 제공한다. 이는 더 큰 메모리나 더 많은 컴퓨팅 파워가 필요한 애플리케이션에 유용하다. 가령 이벤트 기반 RAG 애플리케이션의 벡터 검색 실행에 도움이 될 수 있다. 또한 프라이빗 가상 네트워크를 이용할 수 있다는 점도 기업 서버리스 컴퓨팅 환경에서 유용할 수 있다. 이를 통해 다른 애저 서비스와 자체 보안 네트워크 내 스토리지에 대한 연결 안정성을 높일 수 있기 때문이다.

애저 함수와 같은 서버리스 기술은 최신 클라우드 기반 애플리케이션 개발의 핵심 도구로 자리 잡았다. 이 기술은 빠른 확장을 위한 프레임워크를 제공하고, 실행 시에만 요금이 부과되어 비용을 절감할 수 있다. 또한 이벤트와 메시지에 신속하게 응답할 수 있어, 쿠버네티스와 최신 AI 플랫폼과 잘 어우러진다. 이를 통해 애저 애플리케이션에 새로운 기능과 서비스를 빠르고 효과적으로 추가할 수 있을 것이다.
dl-ciokorea@foundryco.com

Simon Bisson

Author of InfoWorld's Enterprise Microsoft blog, Simon Bisson prefers to think of “career” as a verb rather than a noun, having worked in academic and telecoms research, as well as having been the CTO of a startup, running the technical side of UK Online (the first national ISP with content as well as connections), before moving into consultancy and technology strategy. He’s built plenty of large-scale web applications, designed architectures for multi-terabyte online image stores, implemented B2B information hubs, and come up with next generation mobile network architectures and knowledge management solutions. In between doing all that, he’s been a freelance journalist since the early days of the web and writes about everything from enterprise architecture down to gadgets. He is the author of Azure AI Services at Scale for Cloud, Mobile, and Edge: Building Intelligent Apps with Azure Cognitive Services and Machine Learning.

이 저자의 추가 콘텐츠