Jump to section

서비스로서의 기능(FaaS)이란?

URL 복사

FaaS(Function-as-a-Service)는 개발자가 자체 인프라를 유지관리할 필요 없이 애플리케이션 패키지를 기능으로 빌드, 실행, 관리할 수 있게 해주는 일종의 클라우드 컴퓨팅 서비스입니다.

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

FaaS 솔루션은 애플리케이션 개발을 위해 엔터프라이즈 IT에 새로운 기능을 대폭 추가하여, 주요 퍼블릭 클라우드에서 이용할 수 있으며 온프레미스에서 프로비저닝될 수 있습니다. 클라우드 네이티브 전략 가이드를 다운로드하여 FaaS로 서버리스 방식을 구현해보세요.

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

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

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

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

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

실제로 전체 애플리케이션은 기능, 마이크로서비스, 지속 실행 서비스 같은 여러 솔루션이 혼합된 형태로 구성됩니다.

제공업체는 애플리케이션 프로그래밍 인터페이스(API)를 통해 기능을 사용할 수 있도록 하고 리소스 할당을 관리합니다. 기능은 리소스가 아닌 이벤트 기반이므로 손쉽게 확장 가능하며, 이러한 확장성을 통해 효율성과 가치를 높일 수 있습니다.

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

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

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

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

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

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

FaaS를 사용하여 완전한 서버리스 애플리케이션을 빌드하거나, 일부는 서버리스로, 일부는 전통적인 마이크로서비스 구성 요소로 애플리케이션을 구성함으로써 더 새로운 기술과 쿠버네티스와 같은 컨테이너 오케스트레이션 시스템을 이용할 수 있습니다.

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

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

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

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

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

추가 자료

문서

스테이트풀과 스테이트리스 비교

스테이트풀과 스테이트리스는 상호 작용 상태가 얼마나 오래 기록되는지, 해당 정보가 어떤 식으로 저장되는지를 기준으로 구별할 수 있습니다.

문서

Quarkus란?

Quarkus는 Java 가상 머신(Java Virtual Machine, JVM)과 네이티브 컴파일을 위해 만들어진 쿠버네티스 네이티브 Java 스택으로, 특히 컨테이너에 Java를 최적화합니다.

문서

서버리스란?

서버리스(serverless)란 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델입니다.

클라우드 네이티브 애플리케이션에 대한 자세한 내용

제품

선택한 인프라에서 애플리케이션 출시 테스트를 완료한 통합 서비스 세트를 포함하는 엔터프라이즈 애플리케이션 플랫폼입니다.

여러 서비스를 서로 분리하여 독립적으로 생성, 확장, 배포할 수 있게 하는 분산형 클라우드 네이티브 통합 플랫폼입니다.

리소스

e-book

클라우드 네이티브와 하이브리드 클라우드의 융합: 전략 가이드

E-book

클라우드 네이티브 애플리케이션 구현을 위한 과정

교육

무료 교육 과정

Developing Cloud-Native Applications with Microservices Architectures