서버리스란?

서버리스 컴퓨팅은 애플리케이션 개발 부문에서 패러다임의 전환을 가져온 혁신 기술로 개발자가 인프라 걱정 없이 코드 작성에 집중하도록 도와줍니다. 이 솔루션은 서버 관리 및 사전 프로비저닝이 필요 없고 자동 확장이 가능하며 사용한 리소스에 대한 요금만 지불하면 되는 등 기존 컴퓨팅에 비해 훨씬 다양한 이점을 제공합니다. 이러한 이점 때문에 이 서버리스 컴퓨팅은 스테이트리스(Stateless) HTTP 애플리케이션, 웹, 모바일, IoT 백엔드, 일괄 및 스트림 데이터 처리, 챗봇 등의 사용 사례에 적합합니다.


GCP 서버리스 컴퓨팅 포트폴리오

Cloud Functions

서버리스 함수 및 이벤트

Cloud Functions

Google 및 타사 클라우드 서비스를 쉽게 연결하고 확장하며 순식간에 전 세계 규모로 확장되는 애플리케이션을 빌드할 수 있는 이벤트 기반 컴퓨팅 플랫폼입니다.

자세히 알아보기 
App Engine 표준

서버리스 http 애플리케이션

App Engine 표준 환경

웹 및 API 백엔드용 완전 관리형 서버리스 애플리케이션 플랫폼입니다. 인프라 관리에 대한 걱정 없이 일반적으로 많이 쓰이는 개발 언어를 사용할 수 있습니다.

자세히 알아보기 
Cloud Run

서버리스 컨테이너

Cloud Run

HTTP 요청을 통해 호출 가능한 스테이트리스(Stateless) 컨테이너를 실행하도록 도와주는 서버리스 컴퓨팅 플랫폼입니다. Cloud Run은 사용한 만큼만 지불하면 되는 완전 관리형 플랫폼으로 GKE 부가기능으로도 사용될 수 있습니다.

자세히 알아보기 

내게 맞는 서버리스 컴퓨팅 플랫폼

서버리스 옵션

* App Engine 표준 환경은 Node.js, Python, 자바, Go, PHP를 지원합니다.

* Cloud 함수는 Node.js, Python, Go를 지원합니다.

사용 사례

웹 애플리케이션

웹 애플리케이션

App Engine 표준 환경은 Node.js, Python, PHP, 자바, Go로 실행되며 최소한의 관리만 필요로 하는 웹 앱에 적합합니다. 원하는 언어 라이브러리를 사용해 표준 관용구로 애플리케이션을 제작할 수 있습니다. App Engine 표준 환경은 빠른 배포 시간과 확장성을 갖춰 작업이 급증하는 경우에 적합합니다.

비동기 백엔드 처리

비동기 백엔드 처리

Cloud Functions는 클라우드의 데이터 이벤트에 응답하고 Cloud Storage에 업로드된 이미지의 크기를 조절하거나 Firestore 데이터베이스에서 값이 수정되면 데이터를 검증하는 등의 간단한 처리를 수행합니다.

모바일 백엔드

모바일 백엔드

App Engine 표준 환경은 모바일 애플리케이션을 위한 기존 REST API 백엔드에서 호스팅 환경을 모니터링, 업데이트, 확장해 주는 앱 플랫폼입니다. 사용자는 모바일 백엔드 서비스 코드만 작성하면 됩니다. Firebase는 실시간 NoSQL 데이터베이스, 인증, 호스팅, 파일 스토리지 등 모바일 애플리케이션에 직접 통합되는 강력한 백엔드 서비스 제품군을 제공합니다. Firebase는 Cloud Functions와 통합되어 다른 Google Cloud Platform 서비스와 쉽게 연결할 수 있습니다.

API

API

단순한 API(HTTP 또는 Cloud Pub/Sub를 통해 액세스하는 작은 함수 집합)를 빌드할 때는 Cloud Functions를 사용하는 것이 좋습니다. 급격히 증가하는 작업 부하를 위해 설계된 제품으로 이 프로그래밍 패러다임(함수)을 사용하면 소규모 백엔드 코드를 정리하는 데 도움이 됩니다. 더 복잡한 API(많은 경로를 사용하는 REST API 등)에는 여러 함수를 더 쉽게 정리할 수 있는 App Engine 표준 환경을 사용하는 것이 좋습니다. API 관리를 위해 Cloud Endpoints를 사용한다면 App Engine 표준 환경과 함께 Cloud Endpoints를 지원하는 Python 2.7 및 자바 8을 사용하는 것이 좋습니다.

주기적 작업

주기적 작업

Cloud 스케줄러에서는 정해진 일정에 따라 HTTP 요청을 전송해 주기적으로 작업을 트리거할 수 있습니다. App Engine을 정확히 타겟팅하거나 Cloud Functions 및 Cloud Run과 같은 HTTP 엔드포인트를 타겟팅할 수도 있습니다.

신속한 프로토타입 제작 및 API 결합

신속한 프로토타입 제작 및 API 결합

신속한 프로토타입 제작 또는 여러 API 및 서비스의 결합이 필요한 소규모 또는 '해커톤' 프로젝트에는 Cloud Functions를 사용하는 것이 좋습니다. 프로그래밍 패러다임을 통해 소규모 앱 또는 기존 API 및 서비스를 결합해 주는 '결합 코드'를 빠르게 개발할 수 있습니다.

제공업체의 제약이 없는 컨테이너 실행

제공업체의 제약이 없는 컨테이너 실행

Docker 컨테이너는 업계 표준으로서 모든 클라우드 또는 온프레미스에서 실행할 수 있습니다. Cloud Run은 서버리스 요청-응답 방식으로 컨테이너를 실행할 수 있습니다. GPU 등의 커스텀 하드웨어나 Kubernetes 클러스터가 필요한 경우가 아니라면 Cloud Run을 사용하는 것이 좋습니다. (Kubernetes 클러스터가 필요한 경우에는 Google Kubernetes Engine 클러스터에서 GKE의 Cloud Run을 실행하면 됩니다.)

서버리스 및 스테이풀(Stateful) 작업 결합

서버리스 및 스테이풀(Stateful) 작업 결합

GKE의 Cloud Run에서는 간단하게 서버리스 및 스테이트풀(Stateful) 작업을 함께 실행할 수 있습니다. 예를 들어 Marketplace의 MongoDB를 GKE 클러스터에 배포해 서버리스 작업의 문서 스토리지로 사용할 수 있습니다. GKE는 클러스터에서 무엇이든 실행할 수 있는 유연성을 제공하며 Cloud Run을 사용해 서버리스 작업을 배포할 수 있습니다.

제품 비교

App Engine 표준 환경 Cloud Functions Cloud Run(베타)1 GKE의 Cloud Run(베타)1
배포 아티팩트 함수 컨테이너 컨테이너
Scale-to-zero 확인 확인 확인 Pod2
무료 등급 확인 확인 확인
웹소켓 확인
언어 자바, Node.js, Python, Go, PHP Node.js, Python, Go 모두 모두
액세스 제어 Oauth 2.0, CICP, Firebase 인증, Google 로그인, Users API 호출자 IAM 권한 호출자 IAM 권한, CICP, Google 로그인, Firebase 인증 클러스터만, VPC만
HTTP/2 및 gRPC 확인
커스텀 도메인 확인 확인 확인
요청 시간 종료 1분3 9분 15분 15분
GPU 및 TPU 확인
VPC 연결 확인베타1 추가 예정 확인

1. 베타 소프트웨어에는 SLA가 적용되지 않습니다.

2. GKE의 Cloud Run은 pod 수를 0으로 조정 가능합니다. 클러스터당 노드 수는 0으로 조정 불가능하며 이 노드는 요청이 없을 때도 요금이 청구됩니다.

3. 자동 확장: HTTP 요청의 기한은 60초입니다.

고급 도움말 및 권장사항

고려해야 할 몇 가지 사항을 소개합니다.

아키텍처에 자동 확장되지 않거나 서버리스가 아닌 구성요소가 포함된 경우 자동 확장된 구성요소로 인해 이러한 구성요소가 과부하될 수 있습니다. Cloud Pub/Sub 주제를 사용하고 Cloud Functions에서 max_instances 속성을 설정하면 자동 확장되지 않는 구성요소에 대한 호출을 큐에 추가할 수 있습니다.
많은 GCP 제품에서 트래픽이 적은 간단한 애플리케이션의 리소스 사용량을 대부분 지원해 주는 무료 등급을 제공하고 있습니다. Cloud Functions를 사용해 쉽게 결제 한도를 구성할 수 있습니다.
자세한 내용은 이 가이드를 참조하세요.
Cloud Functions는 각 요청에 필요한 컴퓨팅 및 메모리 전체를 할당할 수 있도록 인스턴스당 1개의 요청만 처리하도록 설계되어 있습니다. 그로 인해 Cloud Functions에서는 확장 속도가 느려질 수 있지만 App Engine 표준 환경, Cloud Run, GKE의 Cloud Run에서 인스턴스당 다수의 동시 요청을 처리할 수 있습니다. 이러한 서비스에서는 인스턴스당 처리되는 트래픽이 더 많아 훨씬 빠르게 확장할 수 있지만 한 인스턴스의 모든 요청이 리소스를 공유해야 합니다.
Cloud Run은 Knative 오픈소스 API 및 런타임 환경과 호환됩니다. 따라서 Cloud Run, GKE의 Cloud Run 또는 자체 Kubernetes 클러스터에서 서버리스 작업을 이전할 수 있습니다. Cloud Run에서 작업 실행을 시작했다가 커스텀 머신 유형 또는 VPC 액세스 등 특정 GKE 기능이 필요해지면 GKE의 Cloud Run을 사용하도록 이전할 수도 있습니다.