Serverless
무엇인가
서버리스(Serverless)는 개별 함수를 작성하면 클라우드 제공자가 무언가가 그 함수를 트리거할 때만 — HTTP 요청, 파일 업로드, 예약된 타이머 등 — 실행해 주는 방식입니다. 그 아래에는 여전히 서버가 있지만 직접 보거나 관리할 일이 없습니다. 코드가 실제로 실행되는 시간에 대해서만, 종종 밀리초 단위까지 비용을 지불합니다.
강점
- 프로비저닝하거나, 패치하거나, 계속 켜둘 서버가 없습니다.
- 0에서 수천 개의 동시 실행까지 자동으로 확장됩니다.
- 사용량 기반 과금; 유휴 상태의 코드는 비용이 들지 않습니다.
- 클라우드 이벤트(큐, 스토리지, 데이터베이스)와 깔끔하게 통합됩니다.
- 폭발적이거나 예측 불가능한 트래픽에 적합합니다.
트레이드오프
- 콜드 스타트: 최근에 실행되지 않은 함수는 깨어나는 데 추가 시간이 걸릴 수 있습니다.
- 실행 시간 제한(보통 몇 분)으로 인해 장시간 작업은 불가능합니다.
- 매우 높고 일정한 트래픽에서는 일반 서버에 비해 비용이 예상을 넘어설 수 있습니다.
- 로컬 테스트와 디버깅이 일반 앱보다 까다롭습니다.
- 벤더 종속(lock-in) — 각 제공자의 이벤트 모델과 API가 다릅니다.
언제 사용하나
트래픽이 고르지 않고 인프라를 직접 돌보고 싶지 않은 API, 웹훅, 예약 작업, 이벤트 기반 작업에는 서버리스를 선택하세요. 클라우드 서비스 사이를 잇는 글루 코드(glue code)에서 빛을 발합니다.
바이브 코딩 적합성
서버리스는 작업 단위가 하나의 자립적인 함수이기 때문에 AI 주도 개발과 잘 어울립니다 — 에이전트가 생성하고, 테스트하고, 배포하기 쉽습니다. AWS SAM, Serverless Framework, Vercel 같은 프레임워크를 사용하면 AI가 함수와 그 트리거, 권한을 하나의 설정 파일에 정의할 수 있습니다. 팁: 에이전트에게 합리적인 타임아웃과 메모리 크기를 명시적으로 설정하고 의존성을 최소화하도록 요청하세요 — 패키지가 적을수록 번들이 작아지고 콜드 스타트가 빨라집니다.
# serverless.yml — AWS Lambda 함수
service: my-api
provider:
name: aws
runtime: nodejs20.x
timeout: 10
functions:
hello:
handler: handler.hello
events:
- httpApi:
path: /hello
method: get
# 스택 배포
npx serverless deploy