서버리스(Serverless)란?

서버의 준비나 대수 관리, OS 업데이트 등을 이용자가 의식하지 않고 클라우드 사업자에게 맡겨 애플리케이션을 실행하는 형태. 대표는 FaaS(Function as a Service)로, 요청이나 이벤트가 왔을 때만 함수가 실행되며, 실행 횟수나 시간과 메모리의 양에 따라 요금이 든다. 부하에 따른 증감은 자동으로 이루어지며, 사용하지 않을 때는 비용이 거의 들지 않는다. 한편 한동안 사용되지 않은 뒤의 첫 호출이 늦어지는 콜드 스타트나 실행 시간의 상한 등의 제약이 있다.

일본어 명칭: サーバーレス

서버리스(Serverless)은(는) 클라우드와 컨테이너의 기초 등 1개 분야의 연습 문제 1개에 나와요.

분야: 클라우드와 컨테이너의 기초

실제로는 서버가 있다

'서버리스'는 서버가 없다는 뜻이 아니라, 이용자가 서버를 관리하지 않아도 된다는 뜻입니다. 사업자는 요청에 따라 컨테이너나 경량 가상 머신 등의 실행 환경을 준비하여 함수를 실행합니다. 관리형 데이터베이스나 스토리지, 메시지 큐(queue) 등과 조합하여 애플리케이션 전체를 구성하는 경우가 많습니다.

콜드 스타트

한동안 호출되지 않으면 실행 환경은 정리되고, 다음 호출에서는 환경 준비, 언어 런타임의 시작, 함수의 초기화가 필요해집니다. 이 지연이 콜드 스타트로, 사용하는 언어나 라이브러리의 양에 따라 수백 밀리초에서 수 초가 되는 경우가 있습니다. 초기화를 가볍게 하거나, 일정 수의 환경을 미리 준비해 두는 설정을 사용하는 등으로 억제합니다.

적합한 처리

업로드된 이미지의 변환, 정기적인 집계, Webhook 수신처럼 이벤트에 따라 짧은 시간에 끝나는 처리나, 부하의 변동이 크고 아무것도 하지 않는 시간이 긴 처리에 적합합니다. 항상 높은 부하가 계속 걸리는 처리에서는 상시 가동하는 서버나 컨테이너 쪽이 저렴해지기도 합니다. 함수 안에 상태를 두지 않고, 상태는 데이터베이스 등에 둡니다.

도전해 보기: 서버리스(Serverless) 관련 문제

서버리스 함수(FaaS)에서, 한동안 호출되지 않았던 함수의 첫 호출만 응답이 수백 밀리초에서 수 초 늦어지는 경우가 있다. 이 현상의 설명으로 올바른 것은?

  1. A첫 호출의 결과가 캐시되어, 두 번째 이후로는 함수의 코드가 실행되지 않고 저장된 결과만 반환되기 때문에
  2. B함수를 실행할 환경을 새로 준비하고, 언어 런타임의 시작이나 초기화 처리를 수행하는 데 시간이 걸리기 때문에(콜드 스타트)
  3. C첫 호출에서는 함수의 코드가 이용자의 단말로 보내져, 단말 위에서 컴파일된 뒤 실행되기 때문에
정답과 해설 보기

정답: B. 함수를 실행할 환경을 새로 준비하고, 언어 런타임의 시작이나 초기화 처리를 수행하는 데 시간이 걸리기 때문에(콜드 스타트)

서버리스 함수에서는 사업자가 실행 환경(컨테이너나 경량 가상 머신 등)을 필요에 따라 준비하고, 한동안 사용되지 않으면 정리합니다. 정리된 뒤의 첫 호출에서는 환경 준비, 언어 런타임의 시작, 함수의 초기화 처리가 필요해지며, 그만큼 응답이 늦어집니다. 이어서 호출되면 준비된 환경이 재사용되므로 빨라집니다(웜 스타트). 대책으로는 초기화 처리나 읽어 들이는 라이브러리를 가볍게 하거나, 미리 일정 수의 환경을 준비해 두는 설정을 사용하는 방법 등이 있습니다.

자주 묻는 질문

서버리스와 컨테이너는 대립하는 것인가요?

대립하는 것이 아닙니다. 많은 서버리스 기반은 내부에서 컨테이너나 경량 가상 머신을 사용하고 있으며, 컨테이너 이미지를 그대로 함수로 실행할 수 있는 서비스도 있습니다. 차이는 대수나 실행 환경의 관리를 누가 하느냐에 있습니다.

서버리스로 하면 반드시 저렴해지나요?

꼭 그렇지는 않습니다. 사용한 만큼 지불하므로 이용이 적고 변동이 큰 처리에서는 저렴해지지만, 항상 일정 이상의 부하가 있는 처리에서는 상시 가동하는 서버 쪽이 저렴해지는 경우가 있습니다. 데이터 전송료 등도 포함하여 비교해야 합니다.

해설 속 서버리스(Serverless)

서버리스(Serverless)이(가) 나오는 문제 (1)

  1. 서버리스 함수(FaaS)에서, 한동안 호출되지 않았던 함수의 첫 호출만 응답이 수백 밀리초에서 수 초 늦어지는 경우가 있다. 이 현상의 설명으로 올바른 것은?

관련 용어

컨테이너(Container) 가용 영역(Availability Zone) 공동 책임 모델(Shared Responsibility Model) 관측 가능성(Observability) 블루-그린 배포(Blue-Green Deployment) 오브젝트 스토리지(Object Storage) 오토 스케일링(Autoscaling) 이뮤터블 인프라스트럭처(Immutable Infrastructure) 카나리 릴리스(Canary Release) 컨테이너 이미지(Container Image)

용어집으로 돌아가기