로그인 / 등록 Account

클라우드 네이티브 애플리케이션

서비스로서의 기능(Function-as-a-Service, FaaS)이란?

Jump to section

서비스로서의 기능(Function-as-a-Service, FaaS)이란 스테이트리스(stateless) 컨테이너에서 실행되는 이벤트 기반 컴퓨팅 실행 모델로서, 서비스를 사용하여 서버측 로직과 상태를 관리합니다. 

개발자는 이를 통해 자체 인프라를 유지관리할 필요 없이 기능으로서의 애플리케이션 패키지를 구축 실행 및 관리할 수 있습니다.

FaaS는 서버리스(serverless) 컴퓨팅을 구현하는 방식으로, 개발자가 비즈니스 로직을 작성하면 플랫폼이 관리를 전담하는 Linux 컨테이너에서 이를 실행합니다.

보통 그러한 플랫폼은 클라우드에 있지만, 해당 모델은 온프레미스 및 하이브리드 배포를 포함하도록 확장됩니다.

서버리스는 개발자의 서버 및 리소스 할당 관리 또는 프로비저닝과 같은 인프라 문제를 추상화하고 이를 플랫폼(예: Red Hat OpenShift)에 적용하므로 개발자는 코드 작성과 비즈니스 가치 제공에 집중할 수 있습니다.

기능이란 비즈니스 로직을 실행하는 소프트웨어 요소이며 애플리케이션은 여러 기능으로 구성될 수 있습니다.

FaaS 모델 사용은 서버리스 아키텍처로 애플리케이션을 구축하는 한 가지 방식이지만 서버리스 패러다임의 인기가 높아지면서 개발자들은 서버리스 마이크로서비스와 스테리트리스 컨테이너 구축을 지원하는 솔루션을 찾고 있습니다.

잘 알려진 FaaS의 몇 가지 예는 다음과 같습니다.

  • AWS Lambda
  • Google Cloud Functions
  • Microsoft Azure Functions(오픈소스)
  • OpenFaaS(오픈소스)

서비스로서의 기능(Function-as-a-Service, FaaS) 작동 방식

FaaS는 개발자에게 서버를 관리할 필요 없이 이벤트에 대응하여 애플리케이션을 실행하도록 지원하는 추상화 기능을 제공합니다. 예를 들어, 파일을 업로드하면 다양한 형식으로 파일을 트랜스코딩하는 사용자 지정 코드를 트리거할 수 있습니다.

FaaS 인프라는 주로 이벤트 기반 실행 모델을 통해 온디맨드로 미터링되는 것이 일반적이므로, 필요한 경우 사용 가능하지만 서비스로서의 플랫폼(Platform-as-a-service, PaaS)처럼 서버 프로세스를 백그라운드에서 계속 실행할 필요는 없습니다. 

현대적인 PaaS 솔루션은 개발자가 애플리케이션을 배포하는 데 사용할 수 있는 일반적인 워크플로우의 일부로 서버리스 기능을 제공하여, PaaS와 FaaS 간 구분이 모호해졌습니다. 

실제로 현대적인 애플리케이션은 기능, 마이크로서비스, 지속 실행 서비스와 같은 솔루션들이 혼합된 형태로 이루어집니다.

클라우드 제공업체는 고객 환경의 기능을 사용할 수 있도록 하고 리소스 할당을 관리합니다. 기능은 리소스가 아닌 이벤트 기반이므로 손쉽게 확장 가능합니다.

기능 실행의 시간 제한과 같이 이러한 이점들을 지원하는 데 아키텍처 제약 조건이 있으므로, 기능은 신속하게 시작해 실행할 수 있는 것이어야 합니다. 

기능은 몇 밀리초 내에 시작되며 개별 요청을 처리합니다. 기능에 여러 요청이 동시에 들어오는 경우, 시스템은 이러한 수요를 충족하는데 필요한 만큼의 기능 복사본을 생성합니다.

요청 수가 하락하면 애플리케이션은 자동으로 스케일 다운됩니다. 동적인 스케일링은 FaaS의 이점이며 비용 효율적이기도 합니다. 공급업체들이 유휴 시간을 뺀 사용된 리소스에 대해서만 과금하기 때문입니다.

온프레미스에서 실행 중인 경우, 이러한 동적인 성격으로 인해 플랫폼 집적도가 향상되면서 더 많은 워크로드가 실행되고 리소스 사용을 최적화할 수 있습니다.

수평적 스케일링이 필요한 이벤트 기반 서비스는 기능 뿐 아니라 RESTful 애플리케이션으로 원활히 작동할 수 있습니다. 

FaaS는 대량의 트랜잭션, 리포트 생성이나 이미지 처리 또는 예약된 태스크와 같이 가끔씩만 발생하는 워크로드에도 적합합니다. 일반적인 FaaS 활용 사례로는 데이터 처리, IoT 서비스, 모바일 또는 웹 애플리케이션 등이 있습니다.

FaaS를 사용하여 완전한 서버리스 애플리케이션을 구축하거나, 일부는 서버리스로, 일부는 전통적인 마이크로서비스 구성 요소로 애플리케이션을 구성할 수 있습니다.

FaaS의 이점

  • 개발자 생산성 향상 및 개발 시간 단축
  • 서버 관리의 부담이 없음
  • 손쉬운 확장 및 플랫폼에서 관리하는 수평적 스케일링
  • 필요한 경우에만 리소스를 사용하거나 지불
  • 거의 모든 프로그래밍 언어로 기능 작성 가능

FaaS와 서버리스의 차이

원래 FaaS와 서버리스는 거의 같은 의미로 사용되었으나, 서버리스는 FaaS에 인코딩된 맞춤형 비즈니스 로직과 함께 공통 서비스를 범위하게 사용하는 대규모 아키텍처 패턴 및 프랙티스를 의미하는 것으로 확장되었습니다.

마이크로서비스와 전통적인 애플리케이션은 컨테이너화되어 동적 확장 및 상태 관리 요건을 준수하는 한 서버리스를 사용할 수 있습니다. 

"서버리스"라는 용어는 또한 데이터베이스와 메시징 시스템과 같은 관리형 서비스를 나타내는 것으로 사용되고 있으며, 클라우드 제공업체 또는 타사가 해당 시스템을 관리하므로 개발자나 관리자는 이를 운영할 필요가 없습니다.  

주로 이벤트 기반 아키텍처를 통해 연결된 일반적인 백엔드 서비스(예: 데이터베이스, 메시징 및 인증)와 FaaS가 결합되면서 서버리스 개발자는 최적의 이점을 얻을 수 있게 되었습니다.

서버리스 컴퓨팅을 위한 쿠버네티스 기반

Red Hat OpenShift Logo

클라우드 네이티브 애플리케이션을 더 빠르게 배포할 수 있도록 하는 컨테이너와 쿠버네티스 플랫폼

Red Hat OpenShift Application Runtimes logo

클라우드 네이티브 애플리케이션 개발에 적합한 애플리케이션 런타임과 프레임워크 셀렉션

FaaS의 더 큰 가능성을 살펴보세요