Cloud Run이란 무엇인가요?

Cloud Run은 Google의 확장성이 뛰어난 인프라에서 코드, 함수 또는 컨테이너를 실행하는 완전 관리형 애플리케이션 플랫폼입니다.

간단히 말해, Cloud Run에서는 개발자가 코드 작성에 시간을 쓰고 Cloud Run 서비스를 운영, 구성, 확장하는 데는 시간을 거의 쓰지 않아도 됩니다. Cloud Run을 사용하면 생산성을 높이기 위해 클러스터를 만들거나 인프라를 관리할 필요가 없습니다.

서비스 및 작업

Cloud Run에서 코드는서비스작업,

다음 표에서는 각 Cloud Run 리소스 유형에서 제공하는 옵션을 간략하게 보여줍니다.

리소스 설명
서비스 다양한 주요 측정항목을 기반으로 자동 확장되는 스테이트리스(Stateless) 인스턴스를 사용하여 고유하고 안정적인 엔드포인트로 전송된 HTTP 요청에 응답하고 이벤트와 함수에도 응답합니다.
작업 수동으로 또는 일정에 따라 실행되고 완료될 때까지 실행되는 동시에 로드할 수 있는 태스크를 실행합니다.

Cloud Run 서비스

Cloud Run 서비스는 안정적인 HTTPS 엔드포인트를 실행하는 데 필요한 인프라를 제공합니다. 사용자는 코드가 TCP 포트에서 리슨하고 HTTP 요청을 처리하는지 확인해야 합니다.

다음 다이어그램은 HTTPS 엔드포인트를 사용하여 클라이언트의 웹 요청과 이벤트를 처리하기 위해 여러 컨테이너 인스턴스를 실행하는 Cloud Run 서비스를 보여줍니다.

Cloud Run 서비스는 웹 요청 및 이벤트를 처리하기 위해 컨테이너를 실행합니다.

표준 서비스에는 다음 기능이 포함됩니다.

모든 서비스의 고유 HTTPS 엔드포인트
모든 Cloud Run 서비스에는 *.run.app 도메인의 고유한 하위 도메인에 HTTPS 엔드포인트가 있습니다. 커스텀 도메인을 구성할 수도 있습니다. Cloud Run에서는 TLS가 자동으로 관리되고, WebSocket, HTTP/2(엔드 투 엔드), gRPC(엔드 투 엔드)가 지원됩니다.
빠른 요청 기반 자동 확장
Cloud Run은 결제 설정이 인스턴스 기반 결제로 설정된 경우 빠르게 수평 확장되어 모든 수신 요청을 처리하거나 요청 외의 증가된 CPU 사용률을 처리합니다. 인스턴스 1,000개까지 서비스를 신속하게 확장할 수 있고, 할당량 증가를 요청하면 그 이상으로 확장 가능합니다. 수요가 증가하면 Cloud Run이 유휴 컨테이너를 삭제합니다. 비용이나 다운스트림 시스템 과부하가 걱정될 경우에는 최대 인스턴스 수를 제한할 수 있습니다.
선택적 수동 확장
기본적으로 Cloud Run은 더 많은 트래픽을 처리하기 위해 더 많은 인스턴스로 자동 확장되지만 수동 확장을 사용하여 이 동작을 재정의하여 확장 동작을 제어할 수 있습니다.
기본 제공되는 트래픽 관리

새 버전을 배포할 위험을 줄이기 위해 Cloud Run에서는 수신 트래픽을 최신 버전으로 라우팅하거나 이전 버전으로 롤백하거나 동시에 여러 버전으로 트래픽을 분할하는 등의 점진적 출시 수행을 지원합니다.

예를 들어 요청의 1%를 새 버전으로 전송하는 것으로 시작해서 원격 분석을 모니터링하면서 백분율을 늘릴 수 있습니다.

공개 및 비공개 서비스

인터넷에서 Cloud Run 서비스에 연결하거나 다음 방법으로 액세스를 제한할 수 있습니다.

Firebase 호스팅 및 Cloud CDN과 같은 콘텐츠 전송 네트워크(CDN)로 Cloud Run 서비스를 프론팅하여 클라이언트에 더 가까운 에지 위치에서 캐시 가능한 애셋을 제공할 수 있습니다.

0개 및 최소 인스턴스로 조정

기본적으로 결제가 인스턴스 기반 결제로 설정된 경우 Cloud Run은 모든 수신 요청을 처리하거나 요청 외의 증가된 CPU 사용률을 처리하기 위해 인스턴스를 자동으로 추가 및 삭제합니다.

서비스에 수신 요청이 없으면 마지막 남은 인스턴스도 삭제됩니다. 이 동작을 일반적으로 Scale-to-zero라고 부릅니다. 이후 요청이 수신될 때 활성 인스턴스가 없으면 Cloud Run에서 새 인스턴스를 만듭니다. 이렇게 하면 컨테이너의 요청 처리 준비에 걸리는 시간에 따라 첫 번째 요청의 응답 시간이 늘어납니다.

이 동작을 변경하려면 다음 방법 중 하나를 사용합니다.

서비스 사용량에 따른 가격 책정

Scale-to-zero는 100밀리초의 세밀한 단위로 인스턴스에 할당되는 CPU 및 메모리에 대한 비용이 청구되므로 경제적인 면에서 매력적입니다. 최소 인스턴스를 구성하지 않은 경우 서비스를 사용하지 않으면 비용이 청구되지 않습니다. 넉넉한 혜택을 제공하는 무료 등급이 있습니다. 자세한 내용은 가격 책정을 참조하세요.

사용 설정할 수 있는 결제 설정에는 두 가지가 있습니다.

요청 기반
인스턴스가 요청을 처리하지 않으면 비용이 청구되지 않습니다. 요청별 비용을 지불합니다.
인스턴스 기반
인스턴스의 전체 기간에 대한 비용이 청구됩니다. 요청별 비용은 없습니다.

넉넉한 혜택을 제공하는 무료 등급이 있습니다. 자세한 내용은 가격 책정을, 서비스에 요청 기반 또는 인스턴스 기반 결제를 사용 설정하는 방법은 결제 설정을 참조하세요.

폐기 가능한 컨테이너 파일 시스템

Cloud Run의 인스턴스는 일회용입니다. 모든 컨테이너에는 인메모리 방식의 쓰기 가능한 파일 시스템 오버레이가 포함되며, 컨테이너가 종료되면 사라집니다. Cloud Run은 수평 축소 등의 경우 인스턴스에 요청 전송을 중지하고 종료할 시간을 결정합니다.

Cloud Run이 인스턴스를 종료하려고 할 때 경고를 받기 위해 애플리케이션에서 SIGTERM 신호를 잡을 수 있습니다. 이렇게 하면 코드가 로컬 버퍼를 플러시하고 외부 데이터 스토어에 로컬 데이터를 유지할 수 있습니다.

파일을 영구적으로 유지하려면 Cloud Storage와 통합하거나 네트워크 파일 시스템(NFS)을 마운트합니다.

Cloud Run 서비스를 사용해야 하는 경우

Cloud Run 서비스는 요청, 이벤트 또는 함수를 처리하는 코드에 매우 효과적입니다. 사용 사례의 예를 들면 다음과 같습니다.

웹사이트 및 웹 애플리케이션
원하는 스택을 사용해서 웹앱을 빌드하고 SQL 데이터베이스에 액세스하고, 동적 HTML 페이지를 렌더링합니다.
API 및 마이크로서비스
REST API, GraphQL API 또는 HTTP나 gRPC로 통신하는 비공개 마이크로서비스를 빌드할 수 있습니다.

Cloud Run 작업

코드에서 스크립트 사용과 같은 작업을 수행한 후 중지하면 Cloud Run 작업을 사용하여 코드를 실행할 수 있습니다. Google Cloud CLI를 사용하여 명령줄에서 또는 반복 작업을 예약하거나

작업을 더 빠르게 실행하는 배열 작업

스크립트 또는 도구를 실행할 때 일반적으로 그렇듯이 작업이 코드 실행을 위해 하나의 인스턴스를 시작할 수 있습니다.

하지만 여러 개의 동일하고 독립적인 인스턴스를 동시에 시작하는 배열 작업을 사용할 수도 있습니다. 배열 작업을 사용하면 여러 개의 독립된 태스크로 분할할 수 있는 작업을 빠르게 처리할 수 있습니다.

다음 다이어그램은 7개의 태스크가 있는 작업을 순차적으로 실행하는 데 4개의 인스턴스가 독립적인 태스크를 동시에 처리할 수 있는 동일한 작업보다 시간이 더 오래 걸리는 것을 보여줍니다.

동시에 로드할 수 있는 작업을 더 빠르게 실행하는 배열 작업

예를 들어 Cloud Storage에서 이미지 1,000개의 크기를 조절하고 자르는 경우 연속 처리 속도가 Cloud Run에서 자동 확장을 관리하는 여러 인스턴스에서 동시에 처리할 때보다 느립니다.

Cloud Run 작업을 사용해야 하는 경우

Cloud Run 작업은 작업을 수행하고 작업이 완료되면 종료되는 코드를 실행하는 데 적합합니다. 예를 들면 다음과 같습니다.

스크립트 또는 도구
스크립트를 실행하여 데이터베이스 마이그레이션 또는 기타 운영 작업을 수행합니다.
배열 작업
Cloud Storage 버킷에 있는 모든 파일의 처리를 대량으로 동시에 수행합니다.
예약된 작업
정기적인 간격으로 인보이스를 만들고 전송하거나 데이터베이스 쿼리 결과를 XML로 저장하고 파일을 몇 시간 간격으로 업로드합니다.

다음 단계