Google Cloud Well-Architected Framework의 지속 가능성 부문에서 이 원칙을 따르면 Google Cloud에서 워크로드의 리소스 사용량을 최적화하는 데 도움이 되는 권장사항을 확인할 수 있습니다.
원칙 개요
리소스 사용량을 최적화하는 것은 클라우드 환경의 지속 가능성을 높이는 데 매우 중요합니다. 컴퓨팅 주기부터 데이터 스토리지에 이르기까지 프로비저닝된 모든 리소스는 에너지 사용량, 물 사용량, 탄소 배출량에 직접적인 영향을 미칩니다. 워크로드의 환경 영향을 줄이려면 클라우드 리소스를 프로비저닝, 관리, 사용할 때 정보에 입각한 선택을 해야 합니다.
권장사항
리소스 사용량을 최적화하려면 다음 섹션의 권장사항을 고려하세요.
자동 및 동적 확장 구현
자동화된 동적 확장으로 리소스 사용이 최적화되어 유휴 상태이거나 과도하게 프로비저닝된 인프라로 인한 에너지 낭비를 방지할 수 있습니다. 에너지 낭비가 줄어들면 비용이 절감되고 탄소 배출량이 줄어듭니다.
다음 기법을 사용하여 자동 및 동적 확장성을 구현하세요.
수평 확장 사용
수평 확장은 대부분의 클라우드 우선 애플리케이션에 선호되는 확장 기법입니다. 수직 확장이라고 하는 각 인스턴스의 크기를 늘리는 대신 인스턴스를 추가하여 부하를 분산합니다. 예를 들어 관리형 인스턴스 그룹 (MIG)을 사용하여 Compute Engine VM 그룹을 자동으로 스케일 아웃할 수 있습니다. 인스턴스 장애가 애플리케이션의 가용성에 영향을 미치지 않으므로 수평으로 확장된 인프라가 더 탄력적입니다. 수평 확장은 부하 수준이 가변적인 애플리케이션에 리소스 효율적인 기법이기도 합니다.
적절한 확장 정책 구성
워크로드의 요구사항에 따라 자동 확장 설정을 구성합니다. 애플리케이션 동작에 특화된 맞춤 측정항목과 기준을 정의합니다. CPU 사용률에만 의존하는 대신 비동기 작업의 대기열 깊이, 요청 지연 시간, 맞춤 애플리케이션 측정항목과 같은 측정항목을 고려하세요. 불필요한 확장이 자주 발생하거나 플래핑이 발생하는 것을 방지하려면 명확한 확장 정책을 정의하세요. 예를 들어 Google Kubernetes Engine (GKE)에 배포하는 워크로드의 경우 적절한 클러스터 자동 확장 정책을 구성합니다.
사후 대응적 확장과 사전 대응적 확장 결합
반응형 확장에서는 시스템이 실시간 부하 변화에 따라 확장됩니다. 이 기법은 부하가 예측할 수 없을 정도로 급증하는 애플리케이션에 적합합니다.
사전 대응형 확장 기능은 고정된 일일 영업시간 및 주간 보고서 생성과 같이 예측 가능한 패턴이 있는 워크로드에 적합합니다. 이러한 워크로드의 경우 예상 부하 수준을 처리할 수 있도록 예약된 자동 확장을 사용하여 리소스를 사전 프로비저닝하세요. 이 기술은 리소스 확보를 방지하고 효율성을 높여 사용자 환경을 더 원활하게 만듭니다. 이 기법은 주요 할인 행사 및 집중적인 마케팅 활동과 같이 알려진 부하 급증에 대비하여 사전 계획을 세우는 데도 도움이 됩니다.
Google Cloud GKE Autopilot, Cloud Run, MIG와 같은 관리형 서비스 및 기능은 워크로드 패턴을 학습하여 사전 대응적 확장을 자동으로 관리합니다. 기본적으로 Cloud Run 서비스가 트래픽을 수신하지 않으면 인스턴스 0개로 확장됩니다.
스테이트리스(Stateless) 애플리케이션 설계
애플리케이션이 수평으로 확장되려면 구성요소가 스테이트리스여야 합니다. 즉, 특정 사용자의 세션이나 데이터가 단일 컴퓨팅 인스턴스에 연결되지 않습니다. Redis용 Memorystore와 같이 컴퓨팅 인스턴스 외부에 세션 상태를 저장하면 모든 컴퓨팅 인스턴스가 모든 사용자의 요청을 처리할 수 있습니다. 이 설계 접근 방식을 사용하면 원활하고 효율적인 수평 확장이 가능합니다.
예약 및 배치 사용
일괄 처리는 대규모의 긴급하지 않은 워크로드에 적합합니다. 일괄 작업을 사용하면 에너지 효율성과 비용을 위해 워크로드를 최적화할 수 있습니다.
다음 기법을 사용하여 예약 및 일괄 작업을 구현합니다.
탄소 집약도가 낮은 시간대 예약
탄소 배출량이 적은 지역에서 현지 전력망의 청정 에너지 비율이 높은 시간대에 일괄 작업을 실행하도록 예약합니다. 리전에서 탄소 집약도가 가장 낮은 시간대를 확인하려면 탄소 발자국 보고서를 사용하세요.
중요하지 않은 워크로드에 스팟 VM 사용
스팟 VM을 사용하면 미사용 Compute Engine 용량을 대폭 할인된 가격으로 활용할 수 있습니다. 스팟 VM은 선점될 수 있지만 전용의 상시 사용 리소스 없이 대규모 데이터 세트를 처리하는 비용 효율적인 방법을 제공합니다. 스팟 VM은 중요하지 않은 내결함성 일괄 작업에 적합합니다.
작업 통합 및 병렬화
개별 작업을 시작하고 종료하는 오버헤드를 줄이려면 유사한 작업을 하나의 큰 배치로 그룹화하세요. Batch와 같은 서비스에서 이러한 대량 워크로드를 실행합니다. 이 서비스는 필요한 인프라를 자동으로 프로비저닝하고 관리하므로 최적의 리소스 활용률을 보장할 수 있습니다.
관리형 서비스 사용
Batch 및 Dataflow와 같은 관리형 서비스는 리소스 프로비저닝, 예약, 모니터링을 자동으로 처리합니다. 클라우드 플랫폼에서 리소스 최적화를 처리합니다. 애플리케이션 로직에 집중할 수 있습니다. 예를 들어 Dataflow는 파이프라인의 데이터 양에 따라 작업자 수를 자동으로 조정하므로 유휴 리소스에 대한 비용을 지불하지 않습니다.
워크로드 요구사항에 맞게 VM 머신 계열 조정
Compute Engine VM에 사용할 수 있는 머신 유형은 다양한 워크로드에 최적화된 머신 제품군으로 그룹화됩니다. 워크로드의 요구사항에 따라 적절한 머신 계열을 선택합니다.
| 머신 계열 | 워크로드 유형에 권장됨 | 지속 가능성 안내 |
|---|---|---|
| 범용 인스턴스 (E2, N2, N4, Tau T2A/T2D): 이러한 인스턴스는 CPU와 메모리의 균형 잡힌 비율을 제공합니다. | 웹 서버, 마이크로서비스, 중소 규모 데이터베이스, 개발 환경 | E2 시리즈는 리소스의 동적 할당으로 인해 비용 효율성과 에너지 효율성이 매우 높습니다. Tau T2A 시리즈는 대규모 워크로드의 성능 단위당 에너지 효율성이 더 높은 경우가 많은 Arm 기반 프로세서를 사용합니다. |
| 컴퓨팅 최적화 인스턴스 (C2, C3): 이러한 인스턴스는 높은 vCPU-메모리 비율과 코어당 높은 성능을 제공합니다. | 고성능 컴퓨팅 (HPC), 일괄 처리, 게임 서버, CPU 기반 데이터 분석 | C 시리즈 인스턴스를 사용하면 CPU 집약적인 작업을 더 빠르게 완료할 수 있으므로 작업의 총 컴퓨팅 시간과 에너지 소비가 줄어듭니다. |
| 메모리 최적화 인스턴스 (M3, M2): 이러한 인스턴스는 대량의 메모리가 필요한 워크로드용으로 설계되었습니다. | SAP HANA 또는 인메모리 분석과 같은 대규모 인메모리 데이터베이스 및 데이터 웨어하우스 | 메모리 최적화 인스턴스를 사용하면 메모리 사용량이 많은 워크로드를 더 적은 수의 물리적 노드로 통합할 수 있습니다. 이렇게 통합하면 여러 개의 작은 인스턴스를 사용하는 것과 비교하여 필요한 총 에너지가 줄어듭니다. 고성능 메모리는 데이터 액세스 지연 시간을 줄여 CPU가 활성 상태로 있는 총 시간을 줄일 수 있습니다. |
| 스토리지 최적화 인스턴스 (Z3): 이 인스턴스는 처리량이 많고 지연 시간이 짧은 로컬 SSD 스토리지를 제공합니다. | 데이터 웨어하우징, 로그 분석, SQL, NoSQL, 벡터 데이터베이스 | 스토리지 최적화 인스턴스는 대규모 데이터 세트를 로컬로 처리하므로 위치 간 네트워크 데이터 이그레스에 사용되는 에너지를 절약할 수 있습니다. IOPS가 높은 작업에 로컬 스토리지를 사용하면 여러 표준 인스턴스를 과도하게 프로비저닝하지 않아도 됩니다. |
| 가속기 최적화 인스턴스 (A3, A2, G2): 이러한 인스턴스는 AI, ML, HPC와 같은 GPU 및 TPU 가속 워크로드용으로 빌드됩니다. | ML 모델 학습 및 추론, 과학 시뮬레이션 | TPU는 최적의 에너지 효율성을 위해 설계되었습니다. 와트당 더 높은 컴퓨팅을 제공합니다. NVIDIA H100 GPU가 있는 A3 시리즈와 같은 GPU 가속 인스턴스는 대규모 모델을 학습할 때 CPU 전용 대안보다 에너지 효율성이 훨씬 높을 수 있습니다. GPU 가속 인스턴스의 공칭 전력 사용량은 더 높지만 작업은 훨씬 빠르게 완료됩니다. |
최신 머신 유형으로 업그레이드
최신 머신 유형을 사용하면 지속 가능성을 개선하는 데 도움이 될 수 있습니다. 머신 유형이 업데이트되면 에너지 효율성을 높이고 와트당 성능을 높이도록 설계되는 경우가 많습니다. 최신 머신 유형을 사용하는 VM은 더 적은 전력 소비로 동일한 양의 작업을 완료할 수 있습니다.
CPU, GPU, TPU는 다음과 같은 칩 아키텍처의 기술 발전으로 이점을 얻는 경우가 많습니다.
- 특수 코어: 프로세서의 발전에는 일반적인 워크로드에 대한 특수 코어 또는 명령어가 포함되는 경우가 많습니다. 예를 들어 CPU에는 벡터 작업을 위한 전용 코어 또는 통합 AI 가속기가 있을 수 있습니다. 이러한 작업이 기본 CPU에서 오프로드되면 작업이 더 효율적으로 완료되고 에너지 소비가 줄어듭니다.
- 전원 관리 개선: 칩 아키텍처의 발전에는 워크로드에 따라 전압과 주파수를 동적으로 조정하는 등 더 정교한 전원 관리 기능이 포함되는 경우가 많습니다. 이러한 전원 관리 기능을 통해 칩은 최고 효율로 실행되고 유휴 상태일 때는 저전력 상태로 전환되어 에너지 소비를 최소화할 수 있습니다.
칩 아키텍처의 기술적 개선사항은 지속 가능성 및 비용에 다음과 같은 직접적인 이점을 제공합니다.
- 와트당 성능 향상: 지속 가능성을 위한 주요 측정항목입니다. 예를 들어 동일한 에너지 소비량에 대해 C4 VM은 C3 VM에 비해 40% 더 높은 가격 대비 성능을 보여줍니다. C4A 프로세서는 동급 x86 프로세서보다 에너지 효율성이 60% 더 높습니다. 이러한 성능 기능을 사용하면 작업을 더 빠르게 완료하거나 동일한 부하에 더 적은 인스턴스를 사용할 수 있습니다.
- 총 에너지 소비량 감소: 프로세서가 개선되어 특정 작업에 컴퓨팅 리소스가 사용되는 기간이 짧아지므로 전체 에너지 사용량과 탄소 발자국이 줄어듭니다. 탄소 영향은 특히 배치 작업 및 ML 모델 학습과 같이 수명이 짧고 컴퓨팅 집약적인 워크로드에서 높습니다.
- 최적의 리소스 활용: 최신 머신 유형은 최신 소프트웨어에 더 적합하고 클라우드 플랫폼의 고급 기능과 더 호환되는 경우가 많습니다. 이러한 머신 유형은 일반적으로 리소스 활용률을 개선하여 과도한 프로비저닝의 필요성을 줄이고 모든 와트의 전력이 생산적으로 사용되도록 지원합니다.
컨테이너화된 애플리케이션 배포
지속 가능한 클라우드 컴퓨팅 전략의 일환으로 GKE 및 Cloud Run과 같은 컨테이너 기반 완전 관리형 서비스를 사용할 수 있습니다. 이러한 서비스는 리소스 사용률을 최적화하고 리소스 관리를 자동화하는 데 도움이 됩니다.
Cloud Run의 0으로 확장 기능을 활용합니다.
Cloud Run은 서비스에 수신 트래픽이 없거나 작업이 완료되면 인스턴스를 0으로 자동 확장하는 관리형 서버리스 환경을 제공합니다. 자동 확장은 유휴 인프라의 에너지 소비를 없애는 데 도움이 됩니다. 리소스는 요청을 적극적으로 처리할 때만 전원이 공급됩니다. 이 전략은 간헐적 또는 이벤트 기반 워크로드에 매우 효과적입니다. AI 워크로드의 경우 Cloud Run에서 GPU를 사용하여 GPU가 사용될 때만 GPU를 소비하고 비용을 지불할 수 있습니다.
GKE를 사용하여 리소스 최적화 자동화
GKE는 컨테이너 조정 플랫폼으로, 애플리케이션이 필요한 리소스만 사용하도록 합니다. 리소스 최적화를 자동화할 수 있도록 GKE는 다음 기법을 제공합니다.
- 빈 패킹: GKE Autopilot은 사용 가능한 노드에 여러 컨테이너를 지능적으로 패킹합니다. 빈 패킹은 각 노드의 활용도를 극대화하고 유휴 상태이거나 활용도가 낮은 노드의 수를 줄여 에너지 소비를 줄이는 데 도움이 됩니다.
- 수평형 포드 자동 확장 (HPA): HPA를 사용하면 CPU 사용량이나 맞춤 애플리케이션별 측정항목과 같은 사전 정의된 측정항목을 기반으로 컨테이너 복제본 (포드) 수가 자동으로 조정됩니다. 예를 들어 애플리케이션의 트래픽이 급증하면 GKE는 수요를 충족하기 위해 포드를 추가합니다. 트래픽이 줄어들면 GKE는 포드 수를 줄입니다. 이 동적 확장 기능을 사용하면 리소스가 오버프로비저닝되지 않으므로 불필요한 컴퓨팅 용량에 대한 비용을 지불하거나 전원을 켤 필요가 없습니다.
- 수직형 포드 자동 확장 (VPA): 개별 컨테이너의 CPU 및 메모리 할당과 한도를 자동으로 조정하도록 GKE를 구성할 수 있습니다. 이 구성을 사용하면 컨테이너에 필요한 것보다 많은 리소스가 할당되지 않으므로 리소스 초과 프로비저닝을 방지할 수 있습니다.
- GKE 다차원 포드 자동 확장: 복잡한 워크로드의 경우 HPA와 VPA를 동시에 구성하여 포드 수와 각 포드의 크기를 모두 최적화할 수 있습니다. 이 기술은 필요한 성능에 대해 가능한 가장 작은 에너지 사용량을 보장하는 데 도움이 됩니다.
- 토폴로지 인식 스케줄링 (TAS): TAS는 데이터 센터 인프라의 물리적 구조를 기반으로 포드를 배치하여 GKE에서 AI 및 ML 워크로드의 네트워크 효율성을 향상합니다. TAS는 네트워크 홉을 최소화하기 위해 전략적으로 워크로드를 공동 배치합니다. 이러한 공동 배치로 통신 지연 시간과 에너지 소비를 줄일 수 있습니다. 노드와 특수 하드웨어의 물리적 정렬을 최적화함으로써 TAS는 작업 완료를 가속화하고 대규모 AI 및 ML 워크로드의 에너지 효율성을 극대화합니다.
탄소 인식 예약 구성
Google은 가장 깨끗한 전기를 제공하는 위치와 시간으로 워크로드를 지속적으로 이동하고 있습니다. 또한 대체 사용 사례를 위해 오래된 장비를 용도 변경하거나 수확합니다. 이 탄소 인식 스케줄링 전략을 사용하여 컨테이너화된 워크로드가 청정 에너지를 사용하도록 할 수 있습니다.
탄소 인식 스케줄링을 구현하려면 지역의 데이터 센터에 전력을 공급하는 에너지 믹스에 관한 정보가 실시간으로 필요합니다. 이 정보는 GitHub의 Google Cloud 지역의 무탄소 에너지 저장소 또는 BigQuery 공개 데이터 세트에서 머신 리더블 형식으로 확인할 수 있습니다. Google 연간 탄소 데이터 세트를 계산하는 데 사용되는 시간별 그리드 믹스 및 탄소 강도 데이터는 Electricity Maps에서 제공됩니다.
탄소 인식 스케줄링을 구현하려면 다음 기법을 사용하는 것이 좋습니다.
- 지리적 이동: 재생 에너지원 비율이 높은 리전에서 워크로드가 실행되도록 예약합니다. 이 접근 방식을 사용하면 더 깨끗한 전기 그리드를 사용할 수 있습니다.
- 시간 이동: 배치 처리와 같은 중요하지 않고 유연한 워크로드의 경우 사용량이 적은 시간이나 재생 에너지의 양이 가장 많은 시간에 워크로드가 실행되도록 구성합니다. 이 접근 방식을 시간 이동이라고 하며, 클린 에너지원을 사용할 수 있을 때 이를 활용하여 전체 탄소 발자국을 줄이는 데 도움이 됩니다.
에너지 효율적인 재해 복구 설계
재해 복구 (DR)를 준비할 때는 보조 리전에 중복 리소스를 사전 프로비저닝하는 경우가 많습니다. 하지만 유휴 상태이거나 활용도가 낮은 리소스는 에너지 낭비를 초래할 수 있습니다. 복구 시간 목표 (RTO)를 저해하지 않으면서 리소스 활용도를 극대화하고 탄소 배출량을 최소화하는 DR 전략을 선택합니다.
콜드 스타트 효율성 최적화
다음 방법을 사용하여 보조 (DR) 리전에서 활성 리소스를 최소화하거나 제거하세요.
- 콜드 DR 우선순위 지정: DR 리전의 리소스를 사용 중지하거나 0으로 확장된 상태로 유지합니다. 이 접근 방식은 유휴 컴퓨팅 리소스의 탄소 발자국을 제거하는 데 도움이 됩니다.
- 서버리스 장애 조치 활용: DR 엔드포인트에 Cloud Run과 같은 관리형 서버리스 서비스를 사용합니다. Cloud Run은 사용하지 않을 때 0으로 확장되므로 트래픽이 DR 리전으로 전환될 때까지 에너지를 소비하지 않는 DR 토폴로지를 유지할 수 있습니다.
- 코드형 인프라 (IaC)로 복구 자동화: DR 사이트에서 리소스를 실행 상태 (웜)로 유지하는 대신 Terraform과 같은 IaC 도구를 사용하여 필요할 때만 환경을 신속하게 프로비저닝합니다.
중복성과 사용률의 균형 유지
리소스 중복은 에너지 낭비의 주요 원인입니다. 중복을 줄이려면 다음 방법을 사용하세요.
- 활성-수동보다 활성-활성 선호: 활성-수동 설정에서는 수동 사이트의 리소스가 유휴 상태이므로 에너지가 낭비됩니다. 최적의 크기로 조정된 활성-활성 아키텍처를 사용하면 두 리전의 프로비저닝된 모든 리소스가 트래픽을 적극적으로 처리합니다. 이 접근 방식을 사용하면 인프라의 에너지 효율성을 극대화할 수 있습니다.
- 적절한 크기의 중복: 고가용성 또는 DR 요구사항을 충족하기 위해 복제가 필요한 경우에만 리전 간에 데이터와 서비스를 복제합니다. 복제본이 추가될 때마다 영구 스토리지와 네트워크 이그레스의 에너지 비용이 증가합니다.