I. 개요
서버리스 컴퓨팅이란 서버 프로비저닝·관리·스케일링을 클라우드 공급자가 완전히 추상화하고, 개발자는 비즈니스 로직 코드에만 집중할 수 있는 실행 모델이다. “서버리스”는 물리적 서버가 없다는 의미가 아니라 서버 관리 책임이 제거됨을 의미한다. 2014년 AWS Lambda 출시로 상용화되었으며, 사용량(invocation) 기반 과금이 핵심 특성이다.
II. FaaS와 BaaS 구분
| 유형 | 정의 | 대표 서비스 | 특징 |
|---|---|---|---|
| FaaS (Function as a Service) |
이벤트 트리거 기반 함수 단위 실행 |
AWS Lambda, Azure Functions, GCP Cloud Run |
상태 비보존(Stateless), 수명 제한(최대 15분) |
| BaaS (Backend as a Service) |
인증·DB·푸시 등 백엔드 기능 서비스화 |
Firebase, AWS Cognito, Supabase |
서버 코드 불필요, 모바일·웹 앱 최적 |
III. 컴퓨팅 모델 비교
| 구분 | VM | 컨테이너(K8s) | 서버리스(FaaS) |
|---|---|---|---|
| 관리 단위 | OS 이미지 | 컨테이너 이미지 | 함수(Function) |
| 스케일링 | 수동/자동 (분 단위) | HPA (초 단위) | 즉시 자동 (ms 단위) |
| 과금 | 시간당 고정 | Node 시간당 | 호출 건수·실행시간 |
| 상태 관리 | Stateful 가능 | PV/StatefulSet | Stateless (외부 저장소 필수) |
IV. Cold Start 문제와 완화 방안
Cold Start란 함수 인스턴스가 idle 상태에서 최초 요청 시 컨테이너 초기화·런타임 로딩에 소요되는 지연(수백ms~수초)이다. 완화 방안은 다음과 같다.
- Provisioned Concurrency(AWS): 미리 워밍업된 인스턴스 유지 (비용 증가)
- 경량 런타임 선택: Node.js·Python이 Java·.NET 대비 Cold Start 수십ms 단축
- 함수 크기 최소화: 의존성 패키지·번들 크기 축소로 초기화 시간 단축
- GraalVM Native Image: JVM 언어를 네이티브 바이너리로 컴파일해 시작시간 제거
V. 결론 및 기술사 관점
서버리스는 트래픽 변동이 크고 짧은 작업 위주의 이벤트 기반 워크로드(API 백엔드·데이터 처리·알림)에 최적이다. 반면 장기 실행·상태 유지·예측 가능한 부하에서는 컨테이너나 VM이 TCO 측면에서 유리하다. 서버리스 우선 설계(Serverless-First)와 기존 컨테이너 아키텍처의 혼합 전략이 현실적 접근이다.
핵심 키워드: Serverless, FaaS, BaaS, Cold Start, Provisioned Concurrency, AWS Lambda, Stateless, Event-Driven, GraalVM Native Image