Skip to content

Serverless computing

서버리스 컴퓨팅(serverless computing)은 클라우드 컴퓨팅 실행 모델의 하나로, 클라우드 제공자는 동적으로 머신 자원의 할당을 관리한다. 가격은 미리 구매한 용적 단위가 아닌 애플리케이션이 소비한 자원의 실제 양에 기반을 둔다. 유틸리티 컴퓨팅의 일종이다.

서버리스 컴퓨팅은 여전히 서버가 필요하므로 부적절한 명칭이다. "서버리스 컴퓨팅"이라는 이름이 사용된 이유는 서버 관리 및 용적 계획 결정이 완전히 개발자나 운영자로부터 숨겨져 있기 때문이다. 서버리스 코드는 마이크로서비스처럼 전통적인 스타일로 배치(deploy)된 코드와 결합하여 사용할 수 있다. 대안으로, 애플리케이션들은 순수 서버리스 형태로 작성할 수 있으며 프로비전된 서버를 아예 사용하지 않는다.

About

서버리스(Serverless)를 직역하자면, “서버가 없다” 라는 의미가 있습니다. 하지만, 사실상 서버가 없는건 아닙니다. 그저, 특정 작업을 수행하기 위해서 컴퓨터를 혹은 가상머신에 서버를 설정하고, 이를 통하여 처리 하는 것이 아님을 의미합니다.

그 대신에, BaaS (Backend as a Service) 혹은 FaaS (Function as a Service) 에 의존하여 작업을 처리하게 됩니다. BaaS 를 제공하는 서비스 중에선, Firebase, Parse (지금은 서비스종료 됨), Kinvey 등이 있고, FaaS 를 제공하는 서비스 중에선, AWS Lambda, Azure Functions, Google Cloud Functions 등이 있습니다.

DataDog의 Serverless 상태 보고서

2022년 6월 갱신.

  1. 각 클라우드에서 절반 이상의 조직이 서버리스를 채택했다.
    • 2020년에는 AWS에서 50%가 넘었는데 이젠 AWS, Azure, Google Cloud 모두에서 50%가 넘었다.
    • AWS: AWS Lambda, AWS App Runner, ECS Fargate, EKS Fargate
    • Azure: Azure Functions, AKS running on Azure Container Instances
    • Google Cloud: Google Cloud Functions, Google App Engine, Google Cloud Run
  2. Lambda 사용자에서 Python, Node.js가 여전히 지배적이다.
    • 이 두 언어는 Lambda 초기부터 지원되었던 언어이다.
    • 처음 Lambda를 도입할 때 편하고 자료도 많은 Python, Node.js를 주로 사용한다.
    • 이후 Lambda에 익숙해 지면 Python, Node.js로 작성되지 않은 워크로드를 Lambda로 마이그레이션 할 가능성이 높아진다.
    • 이로 인해 Lambda에서 Go와 Java의 채택이 높아져서 Lambda 조직의 30% 이상이 이 두 언어를 사용하고 있다.
  3. 큰 조직의 60% 이상이 최소 3개의 언어로 Lambda를 배포한다.
    • 이는 서버리스 애플리케이션을 만드는데 모든 상황에 맞는 한가지 방법은 없다는 것을 보여주고 사용사례에 따라 다른 런타임을 쓴다는 것을 의미한다.
  4. Lambda 함수를 가장 많이 호출하는 AWS 기술은 API Gateway와 SQS다.
  5. API Gateway가 호출하는 Lambda의 80%는 단일 목적 함수이다.
    • Lambda 함수에서 API를 제공하는 두가지 패턴은 모노리식 함수와 단일목적 함수다.
    • 모노리식 함수는 여러 HTTP 엔드포인트를 제공하고 여러 타입의 작업을 실행할 내부 라우팅 로직이 있다.
    • 단일목적 함수는 하나의 HTTP 메서드/엔드포인트에만 응답한다.
    • 이는 단일 목적함수가 많은 장점이 있다는 것을 보여준다.
    • 단일 목적함수는 다른 것과 격리되어 있고 더 안전하게 운영할 수 있으며 콜드 스타트시간도 짧다.
  6. Lambda 사용자 5명 중 한명은 컨테이너 이미지로 배포한다.
    • AWS는 2020년 zip 파일 외에 Docker 컨테이너 이미지로 배포할 수 있도록 Lambda에서 지원하기 시작했다.
    • 이후 서버리스와 컨테이너 기술의 장접을 합쳐서 쓰는 것이 지속적으로 증가해서 20%가 되었다.
    • zip 파일의 제한은 250MB이지만 컨테이너 이미지는 10GB까지 가능하다.
  7. Lambda 사용자의 20% 이상은 ECS Fargate도 사용한다.
    • Lambda가 인기를 끌면서 사용자들은 서버리스를 확장할 방법을 찾게되어 ECS Fargate도 쓰게 되었다.
    • ECS EC2의 사용은 줄어들고 ECS Fargate의 사용은 늘어나고 있다
  8. Google Cloud에서 서버리스 애플리케이션을 배포하는 방법 중 Google Cloud Run이 가장 빠르게 늘어나고 있다.
    • Google Cloud를 쓰는 DataDog 고객 중 40%가 Google Cloud Functions를 채택했지만 이는 Google Cloud Run보다 3% 정도만 높은 채택율이다.
  9. Azure Functions는 Azure에가 가장 인기있는 서버리스 제품이지만 Azure Container Instances의 채택이 빠르게 증가하고 있다.
    • Azure 고객 중 40% 이상이 Azure의 FaaS 제품인 Azure Functions를 사용하고 있다.
    • 서버리스 컨테이너 제품인 Azure Container Instances의 채택이 크게 증가해서 30%에 가까워졌다.

Category

Serverless Frameworks

서버리스 프레임워크들은 서버리스 애플리케이션을 더 쉽게 빌드, 테스트, 디플로이할 수 있도록 설계된다. 일부 저명한 것들은 다음과 같다:

Favorite site