본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Serverless Computing; 서버리스 컴퓨팅; 서버리스
서버 프로비저닝·운영·확장을 클라우드 사업자가 전담하고, 이용자는 코드와 설정만 제공하며 실제 실행량만큼 비용을 내는 클라우드 실행 모델

서버리스라는 이름과 달리 서버가 없는 것은 아니다. 서버의 존재가 이용자에게 추상화되어 용량 계획, OS 패치, 확장, 가용성 구성을 직접 하지 않는다는 뜻이다. 클라우드 컴퓨팅에서 IaaS → PaaS → 서버리스로 갈수록 이용자의 관리 범위는 줄고 사업자의 책임은 늘어난다.

구분 FaaS(Function as a Service) BaaS(Backend as a Service)
개념 이벤트가 발생하면 이용자가 작성한 함수를 실행 인증, DB, 저장소, 메시징 등 백엔드 기능을 관리형 서비스(API)로 제공
이용자 제공물 함수 코드, 트리거·메모리·제한 시간 설정 설정과 API 호출 코드
예 AWS Lambda, Azure Functions, Google Cloud Run functions 관리형 인증, 관리형 NoSQL DB, 오브젝트 스토리지, 푸시 알림

실무의 서버리스 애플리케이션은 FaaS 함수가 BaaS 서비스를 호출하는 조합으로 구성되는 경우가 많다.

이벤트 기반 실행

편집 원본 편집
  • 함수는 트리거에 의해 실행된다. HTTP 요청(API 게이트웨이), 파일 업로드, 큐·스트림 메시지, DB 변경, 일정(타이머) 등이 트리거가 된다.
  • 요청이 늘면 실행 환경을 자동으로 늘리고, 요청이 없으면 0까지 줄일 수 있다(scale to zero).
  • 함수는 무상태(stateless)로 작성해야 한다. 실행 환경은 재사용될 수도 있지만 언제든 사라질 수 있으므로 상태는 외부 저장소에 둔다.
  • 1회 실행 시간에 상한이 있다. AWS Lambda의 표준 함수는 최대 15분이다.

새 실행 환경을 준비할 때(코드 다운로드, 런타임 기동, 핸들러 밖 초기화 코드 실행) 생기는 지연을 콜드 스타트라 한다. 이미 준비된 환경을 재사용하는 경우는 웜 스타트라 한다. AWS 문서는 콜드 스타트가 보통 전체 호출의 1% 미만에서 발생하고, 지연은 100ms 미만에서 1초 이상까지 다양하다고 설명한다.

완화 방법
  • 미리 초기화된 실행 환경을 유지한다(AWS Lambda 프로비저닝된 동시성, Azure Functions Premium 플랜의 항상 준비된 인스턴스).
  • 초기화 상태의 스냅숏에서 복원한다(AWS Lambda SnapStart).
  • 패키지 크기와 의존 라이브러리를 줄이고, 초기화 코드를 가볍게 한다.
장점 단점
서버 운영·패치·확장 부담 제거 콜드 스타트로 인한 지연 변동
사용량 기반 과금, 유휴 비용 최소화 실행 시간·메모리 제한, 장시간 작업 부적합
자동 확장과 기본 가용성 제공 특정 사업자 서비스에 대한 종속(lock-in)
기능 단위의 빠른 배포 분산된 함수 간 디버깅·모니터링·추적의 어려움
이벤트 기반 마이크로서비스 아키텍처와 잘 맞음 호출량이 꾸준히 많으면 오히려 비용이 커질 수 있음
  • AWS Lambda: 이벤트에 반응하여 코드를 실행하는 AWS의 FaaS이다.
  • Azure Functions: 트리거와 바인딩으로 다른 서비스와 연결한다. 호스팅은 Flex Consumption(권장), Premium, Dedicated(App Service), Container Apps 등이 있고, 기존 Consumption 플랜은 레거시로 분류된다.
  • Google Cloud Run functions: 이전 이름은 Cloud Functions이다. 2세대 Cloud Functions가 Cloud Run functions가 되었고, 1세대는 Cloud Run functions(1st gen)로 불린다. 함수를 Cloud Run 플랫폼에 배포하는 형태로 통합되었다.

컨테이너·PaaS와 비교

편집 원본 편집
구분 컨테이너(오케스트레이션) PaaS 서버리스(FaaS)
배포 단위 컨테이너 이미지 애플리케이션 함수
확장 설정한 규칙에 따라 확장, 클러스터 용량 관리 필요 인스턴스 수 기준 확장 요청 단위 자동 확장, 0까지 축소
과금 노드·클러스터 자원 인스턴스 실행 시간 호출 횟수·실행 시간·메모리
실행 시간 제한 없음 제한 없음 제한 있음
제어 수준 높음(OS·런타임 선택) 중간 낮음
적합 업무 상시 서비스, 복잡한 시스템 일반 웹 애플리케이션 간헐적·이벤트성 처리, 배치·연계

감리 관점 점검 사항

편집 원본 편집
  • 함수별 실행 권한을 최소화했는지, 비밀정보를 코드가 아닌 비밀 관리 서비스에 두었는지 확인한다.
  • 동시 실행 한도, 제한 시간, 재시도·중복 실행에 대비한 멱등성 설계를 확인한다.
  • 분산 추적·로그 수집 체계를 갖추었는지 확인한다.
  • 호출량 예측을 바탕으로 비용을 산정했는지 확인한다.
  • FaaS와 BaaS의 구분, 이벤트 기반·무상태 실행
  • 콜드 스타트의 원인과 완화책(사전 초기화, 스냅숏)
  • 서버리스의 한계(실행 시간 제한, 벤더 종속)와 컨테이너·PaaS와의 차이
  • 서버가 없다는 뜻이 아니라 서버 관리가 추상화된 것이라는 점