비즈니스 요구 사항에 서버리스 컴퓨팅이 적합한지 결정
서버리스 컴퓨팅이 적합한지 여부를 결정하는 데 도움이 되도록 먼저 서버리스의 개념을 살펴보겠습니다.
서버리스 컴퓨팅이란?
서버리스 컴퓨팅은 FaaS(Function as a Service) 또는 클라우드 플랫폼에서 호스트되는 마이크로 서비스로 간주할 수 있습니다. 비즈니스 논리가 함수로 실행되며 인프라를 수동으로 프로비전하거나 크기를 조정할 필요가 없습니다. 클라우드 공급자가 인프라를 관리합니다. 부하에 따라 앱이 자동으로 확장되거나 축소됩니다. Azure에는 이 유형의 아키텍처를 빌드하는 여러 가지 방법이 있습니다. 가장 일반적인 두 가지 방법은 Azure Logic Apps 및 Azure Functions인데 이 모듈의 초점이 아닙니다.
Azure Functions란?
Azure Functions는 서버리스 애플리케이션 플랫폼입니다. 이를 통해 개발자는 인프라를 프로비전하지 않고도 실행할 수 있는 비즈니스 논리를 호스트할 수 있습니다. Azure Functions는 기본적으로 스케일링 성능을 제공하고 사용된 리소스에 대한 요금만 부과합니다. C#, Java, JavaScript, Python, PowerShell를 포함하여 선택한 언어로 함수 코드를 작성할 수 있습니다. NuGet 및 npm과 같은 패키지 관리자에 대한 지원도 포함되므로 비즈니스 논리에서 인기 있는 라이브러리를 사용할 수 있습니다.
서버리스 컴퓨팅 솔루션의 이점
서버리스 컴퓨팅은 클라우드에서 비즈니스 논리 코드를 호스트하는 훌륭한 옵션입니다. Azure Functions와 같은 서버리스 제품을 사용하면 선택한 언어로 비즈니스 논리를 작성할 수 있습니다. 자동 스케일링을 사용할 수 있고, 관리할 서버가 없으며, 예약된 시간이 아닌 사용된 양에 따라 요금이 부과됩니다. 다음은 고려해야 하는 서버리스 솔루션의 몇 가지 다른 특성입니다.
인프라 초과 할당 없음
VM(가상 머신) 서버를 프로비전하고 피크 부하 시간을 처리하기에 충분한 리소스로 서버를 구성했다고 가정해 봅시다. 부하가 적은 경우에는 사용하지 않는 인프라에 대해 요금을 지불할 가능성이 있습니다. 서버리스 컴퓨팅은 자동으로 크기를 확장 및 축소하여 할당 문제를 해결하는 데 유용하며, 함수가 작업을 처리할 때만 요금이 청구됩니다.
상태 비저장 논리
상태 비저장 함수는 서버리스 컴퓨팅을 위한 좋은 후보입니다. 함수 인스턴스는 요청 시 생성되고 제거됩니다. 상태가 필요한 경우 연관된 스토리지 서비스에 저장할 수 있습니다.
이벤트 기반
함수는 ‘이벤트를 기반’으로 합니다. HTTP 요청 또는 큐에 메시지 추가 등의 이벤트(“트리거”라고 함)에 응답해서만 실행됩니다. 함수 정의의 일부로 트리거를 구성합니다. 이 방법은 데이터가 들어오는 위치(트리거/입력 바인딩) 및 나가는 위치(출력 바인딩)를 정할 수 있기 때문에 코드를 단순화합니다. 큐, BLOB, 허브 등을 보기 위한 코드를 작성할 필요가 없습니다. 비즈니스 논리에만 집중할 수 있습니다.
이전 컴퓨팅 환경에서 함수를 사용할 수 있습니다.
함수는 서버리스 컴퓨팅의 핵심 구성 요소이지만, 모든 코드 형식을 실행하기 위한 일반 컴퓨팅 플랫폼이기도 합니다. 앱의 요구 사항이 변경되면 프로젝트를 가져와서 서버리스가 아닌 환경에 배포할 수 있습니다. 스케일링을 관리하고, 가상 네트워크에서 실행하고, 함수를 완전히 격리할 수 있는 유연성을 제공합니다.
서버리스 컴퓨팅 솔루션의 단점
사용량 플랜에서 Azure Functions가 제공하기는 하지만 경우에 따라 서버리스 컴퓨팅 솔루션이 비즈니스 논리를 호스팅하는 데 적합하지 않을 수도 있습니다. 다음은 서버리스 컴퓨팅으로 서비스를 호스트하는 결정에 영향을 줄 수있는 함수의 몇 가지 특징입니다.
실행 시간
기본적으로 함수에는 5분의 시간 제한이 있습니다. 이 시간 제한을 최대 10분으로 구성할 수 있습니다. 실행하는 데 10분 넘게 필요한 경우 VM에서 호스트할 수 있습니다. 그뿐만 아니라 HTTP 요청을 통해 서비스가 시작되고 해당 값이 HTTP 응답으로 예상되는 경우 제한 시간은 2.5분으로 더 제한됩니다. 하지만 시간 제한 없이 여러 함수의 실행을 오케스트레이션할 수 있는 Durable Functions라는 옵션도 있습니다.
실행 빈도
또 다른 특성은 실행 빈도입니다. 클라이언트가 함수를 계속 실행할 것으로 예상되는 경우에는 사용량을 추정하고 적절하게 함수 사용 비용을 계산하는 것이 좋습니다. VM에서 서비스를 호스트하는 것이 더 저렴할 수 있습니다.
함수가 크기 조정되면 10초마다 함수 앱 인스턴스 하나만 만들 수 있으며 총 인스턴스 수는 최대 200개입니다. 각 인스턴스는 여러 동시 실행을 서비스할 수 있으므로, 단일 인스턴스가 처리할 수 있는 트래픽의 양에는 일정한 제한이 없습니다. 서로 다른 형식의 트리거는 크기 조정 요구 사항이 서로 다르므로, 선택한 트리거를 알아보고 한도를 조사하세요.