brief.ing.gg

WIKI

FaaS

FaaS

함수를 독립적으로 배포·실행하는 모델의 장단점은 무엇인가.

Scope

핵심 질문

Function as a Service는 함수를 독립적인 배포·실행 단위로 만들 때 어떤 장점과 제약을 가지는가?

Research

핵심 근거

  • FaaS는 함수 호출 단위로 실행환경을 제공하고 scale-to-zero 또는 요청 기반 scaling을 지원하는 경우가 많다.
  • 상태는 외부 저장소로 분리하는 것이 일반적이며 cold start, 실행시간 제한, provider 제약이 주요 trade-off다.
  • 작은 HTTP endpoint와 event handler에는 편리하지만 장시간 stateful process에는 부적합할 수 있다.

참고 자료

  • CNCF Serverless overview: https://www.cncf.io/

Draft

FaaS(Function as a Service)는 애플리케이션 전체 서버를 직접 운영하기보다 개별 함수를 배포하고 이벤트나 HTTP 요청에 따라 실행하는 모델이다.

실행 단위

개발자는 입력을 받아 결과를 반환하는 함수를 작성하고 플랫폼은 프로세스 시작, 요청 라우팅, 격리, scaling을 담당한다. 사용하지 않을 때 인스턴스를 줄이는 구조를 사용할 수 있어 짧고 간헐적인 작업에 효율적이다.

Stateless 설계

함수 인스턴스는 언제든 사라질 수 있으므로 로컬 메모리에 영속 상태를 두면 안 된다. 데이터베이스, object storage, queue 같은 외부 저장소를 사용해야 한다.

Cold Start

실행환경이 없는 상태에서 새 인스턴스를 시작하면 runtime과 dependency를 로드하는 지연이 생길 수 있다. 이를 cold start라고 한다. latency에 민감한 서비스에서는 중요한 제약이다.

적합한 작업

Webhook 처리, 이미지 변환, 작은 API endpoint, queue consumer처럼 짧고 독립적인 이벤트 처리에 잘 맞는다.

반대로 긴 연결을 유지하는 서버, 대용량 local cache, 수시간짜리 작업처럼 프로세스 수명에 의존하는 워크로드에는 일반 서버나 job system이 더 자연스럽다.

핵심

FaaS는 서버가 사라지는 것이 아니라 서버 운영과 scaling 책임을 플랫폼으로 이동시키는 모델이다. 작은 이벤트 중심 작업에는 강하지만 상태와 장시간 실행은 외부 시스템으로 분리해야 한다.