Cloud Run 1주년: 돌아보기
![https://storage.googleapis.com/gweb-cloudblog-publish/images/Google_Cloud-01_E25W0JA.max-2100x2100.png](https://storage.googleapis.com/gweb-cloudblog-publish/images/Google_Cloud-01_E25W0JA.max-2100x2100.png)
Ahmet Alp Balkan
Senior Developer Advocate
Steren Giannini
Group Product Manager
* 본 아티클의 원문은 2020년 12월 3일 Google Cloud 블로그(영문)에 게재되었습니다.
Cloud Run은 컨테이너의 유연성에 서버리스의 단순성, 확장성, 생산성을 결합한다는 간단한 전제를 바탕으로 빌드되었습니다. Cloud Run을 사용하면 클릭 몇 번만으로 Git 저장소를 완전 관리형 환경에 지속적으로 배포하여 컨테이너를 안전한 HTTPS 엔드포인트로 자동 확장할 수 있습니다. Cloud Run은 인프라 관리가 필요 없는 완전 관리형이기 때문에 개발자는 애플리케이션을 신속하게 제공하는 데 집중할 수 있습니다.
Cloud Run이 정식 출시된 지 이제 1년이 되었습니다! 1년 동안 Cloud Run이 어떻게 발전해 왔는지 여기에서 간략히 살펴보겠습니다.
엔터프라이즈 지원
Google은 Cloud Run을 21개 리전으로 확대하고자 노력해왔으며 2020년 연말까지 나머지 모든 Google Cloud 리전에서도 사용할 수 있도록 하기 위해 작업 중입니다.
![https://storage.googleapis.com/gweb-cloudblog-publish/images/Cloud_Run_to_21_regions.max-1000x1000.jpg](https://storage.googleapis.com/gweb-cloudblog-publish/images/Cloud_Run_to_21_regions.max-1000x1000.jpg)
![https://storage.googleapis.com/gweb-cloudblog-publish/images/Cloud_Run_to_21_regions.max-1000x1000.jpg](https://storage.googleapis.com/gweb-cloudblog-publish/images/Cloud_Run_to_21_regions.max-1000x1000.jpg)
이제 Cloud Run 서비스에 비공개 IP를 사용하는 리소스를 연결할 수 있으며 공유 VPC를 지원하는 서버리스 VPC 커넥터를 사용하여 Cloud Memorystore Redis와 Memcached를 사용할 수도 있으므로 온프레미스나 서로 다른 프로젝트에 있는 리소스를 연결할 수 있습니다. VPC를 통해 모든 이그레스를 라우팅하면 Cloud Run에서 출발한 트래픽에 대해 고정 아웃바운드 IP 주소를 활용하여 특정 IP 범위만 허용하는 외부 서비스를 호출할 때 유용할 수 있습니다.
또한 Cloud Load Balancing의 기능을 Cloud Run과 함께 활용할 수도 있습니다. 자체 TLS 인증서를 준비하거나, 허용할 SSL 버전을 지정하거나, 부하 분산기에 커스텀 URL 기반 라우팅을 구성하여 여러 백엔드의 콘텐츠를 제공할 수 있습니다.
![https://storage.googleapis.com/gweb-cloudblog-publish/images/Cloud_Load_Balancing.max-1500x1500.jpg](https://storage.googleapis.com/gweb-cloudblog-publish/images/Cloud_Load_Balancing.max-1500x1500.jpg)
![https://storage.googleapis.com/gweb-cloudblog-publish/images/Cloud_Load_Balancing.max-1500x1500.jpg](https://storage.googleapis.com/gweb-cloudblog-publish/images/Cloud_Load_Balancing.max-1500x1500.jpg)
또한 글로벌 부하 분산을 통해 여러 리전에서 들어오는 트래픽을 전달하여 전 세계에 분산된 애플리케이션을 실행하거나, Cloud CDN을 통해 에지에 캐시된 정적 콘텐츠를 제공하거나, Cloud Armor 웹 애플리케이션 방화벽으로 엔드포인트를 보호할 수 있습니다.
API 게이트웨이 지원을 통해 호스팅 API에 대한 기타 일반적인 문제를 걱정하거나 인증을 구현할 필요 없이 고객을 위한 API를 빌드하여 Cloud Run에서 실행할 수 있습니다.
이제 점진적 출시와 롤백을 통해 각 버전으로 전송된 트래픽의 비율을 관리하고 전용 URL로 특정 버전을 테스트하여 Cloud Run 서비스의 새로운 버전을 안전하게 출시할 수 있습니다.
개발자 친화적
개발자의 입장에서, 개발자 커뮤니티에서 활발하게 사용되는 제품을 개발한다는 것은 아주 뿌듯한 일입니다.
제품을 처음 사용하는 초보자도 5분 안에 앱을 빌드하고 배포할 수 있습니다. 누구나 하루에도 여러 번 배포할 수 있을 정도로 빠르고 간편합니다. Cloud Run으로 생산성이 향상되어 더 빠르게 코드를 제공할 수 있다는 개발자의 스토리를 들으면 큰 보람을 느낍니다.![https://storage.googleapis.com/gweb-cloudblog-publish/images/Developer_friendly.max-1400x1400.jpg](https://storage.googleapis.com/gweb-cloudblog-publish/images/Developer_friendly.max-1400x1400.jpg)
![https://storage.googleapis.com/gweb-cloudblog-publish/images/Developer_friendly.max-1400x1400.jpg](https://storage.googleapis.com/gweb-cloudblog-publish/images/Developer_friendly.max-1400x1400.jpg)
지난 1년 동안 개발자의 생산성을 높일 수 있는 여러 가지 기능을 추가했습니다.
간편한 사용자 인터페이스를 추가하여 Git 저장소에서 지속적 배포를 설정할 수 있도록 했습니다. 특정 분기에 대한 커밋을 푸시하거나 새 버전에 태그를 지정할 때마다 Cloud Build를 통해 Cloud Run에 자동으로 빌드되고 배포됩니다.
애플리케이션 개발도 한층 더 간편해졌습니다. 이제 Cloud Code를 사용하여 로컬에서 Cloud Run 애플리케이션을 배포하고 실행할 수 있습니다. 처음 시작하는 사용자라면 Cloud Code에서 새 애플리케이션 템플릿이 생성되며 에뮬레이터를 통해 로컬에서 코드를 실행하거나 디버깅할 수 있습니다.
Dockerfile 작성이 번거로우신가요? Google Cloud Buildpacks를 사용하면 애플리케이션 코드를 지원되는 언어의 컨테이너 이미지로 바로 전환할 수 있습니다. 이 기능은 기존 애플리케이션을 Cloud Run으로 가져오는 경우 특히 유용합니다. 또한 Buildpacks에서는 함수 프레임워크를 지원하므로 Cloud Functions도 컨테이너 이미지로 변환할 수 있습니다.
이뿐만 아니라 이제 Cloud Run 서비스로 전송된 요청이 Cloud Trace에서 즉시 캡처되어 서비스의 성능을 모니터링하고 지연 시간 문제를 손쉽게 파악할 수 있습니다. 여러 서비스 간 분산 추적을 수행하려는 경우 수신한 trace 헤더를 발신 요청에 전달하기만 하면 trace 스팬이 자동으로 연결됩니다.
요청에 응답하고 Pub/Sub에서 푸시한 메시지를 비공개로 안전하게 처리할 수 있는 Cloud Run에 60개 이상의 Google Cloud 소스에서 Cloud Run 서비스를 트리거할 수 있는 기능을 추가했습니다. 더 효과적인 조정이 필요할 경우에는 Workflows를 활용해 Cloud Run을 사용하는 프로세스를 자동화하고 조정할 수 있습니다.
유연성
Google에서는 완전 관리형 환경에서 더 많은 워크로드를 실행할 수 있도록 계속해서 Cloud Run의 한계에 도전하고 있습니다. 이제 컨테이너에 최대 4GB의 메모리와 CPU 4개를 할당할 수 있습니다.![https://storage.googleapis.com/gweb-cloudblog-publish/images/Flexibility.max-1100x1100.jpg](https://storage.googleapis.com/gweb-cloudblog-publish/images/Flexibility.max-1100x1100.jpg)
![https://storage.googleapis.com/gweb-cloudblog-publish/images/Flexibility.max-1100x1100.jpg](https://storage.googleapis.com/gweb-cloudblog-publish/images/Flexibility.max-1100x1100.jpg)
특히 0에서부터 확장할 때 '콜드 스타트'를 최소화하고 싶다는 의견도 있었습니다. 이에 도움이 될 수 있도록 웜 컨테이너 인스턴스의 최소 개수를 유지하는 기능을 추가하여 콜드 스타트를 피해 요청을 처리할 수 있도록 했습니다. 이러한 유휴 인스턴스는 요청을 처리하고 있지 않은 경우 활성 인스턴스보다 비용이 저렴합니다. 콜드 스타트가 거슬린다면 이 기능을 이용해 보세요.
gRPC및 서버 측 스트리밍을 사용하면 부분 응답을 계산하는 동시에 전송하고 서버 측으로부터 데이터를 스트리밍하는 애플리케이션을 작성할 수 있으므로 서비스에서 첫 번째 바이트까지 소요되는 시간을 줄일 수 있습니다. 이 기능을 활용하면 응답이 더 이상 32MB로 제한되지 않으며 서버 전송 이벤트(SSE)를 구현할 수 있습니다.
1시간 요청 제한 시간을 사용하여 하나의 요청을 최대 1시간까지 실행할 수 있습니다. 서버 측 스트리밍과 함께 이제 Cloud Run에서 대규모 응답(예: 문서 또는 동영상)을 스트리밍하거나 장기 실행 작업을 처리할 수 있습니다.
마지막으로, 단계적 인스턴스 종료를 통해 Cloud Run이 컨테이너 인스턴스를 축소하기 전에 프로세스에 종료 신호(SIGTERM)를 보냅니다. 그러면 로컬에 저장된 원격 분석 데이터를 삭제하고, 열려 있는 연결을 정리하고, 잠금을 해제하는 등의 작업을 수행할 수 있습니다.
Cloud Run의 다음 단계
지난 한 해 동안 Cloud Run은 멋진 성과를 거두었지만 이는 단지 시작일 뿐입니다. Google에서는 더욱 다양한 워크로드에 Cloud Run을 사용할 수 있도록 개선에 힘쓰고 있습니다. 이와 동시에, 훌륭한 개발자 환경을 제공하고 주요 기업 요구사항을 해결하는 데 여전히 집중하고 있습니다. 앞으로도 Cloud Secret Manager에서 보안 비밀 마운팅, IAP(Identity-Aware Proxy) 통합, 양방향 스트리밍, WebSocket 등 새롭고 흥미로운 출시 소식을 기다려 주시기 바랍니다.
Cloud Run 기능의 과거와 미래에 대해 알아보려면 출시 노트를 참조하세요. 이러한 새로운 기능에 대해 자세히 알아보려면 이 동영상을 확인하시기 바랍니다. Google에서 진행하는 연구에 참여하여 Cloud Run의 미래를 함께 만들어 주세요.