리소스 사용량 최적화

Google Cloud 잘 설계된 프레임워크의 비용 최적화 요소 원칙은 클라우드 워크로드의 요구사항 및 소비 패턴에 맞게 리소스를 계획하고 프로비저닝하는 데 도움이 되는 권장사항을 제공합니다.

원칙 개요

클라우드 리소스 비용을 최적화하려면 워크로드 리소스 요구사항과 부하 패턴을 철저히 이해해야 합니다. 이러한 이해는 총소유비용 (TCO)을 예측하고 클라우드 도입 여정 전반에서 비용 원인을 파악할 수 있는 잘 정의된 비용 모델의 기반이 됩니다. 클라우드 지출을 사전 분석하고 예측하면 리소스 프로비저닝, 사용률, 비용 최적화에 대해 정보에 입각한 선택을 할 수 있습니다. 이 접근 방식을 사용하면 클라우드 지출을 관리하고, 과도한 프로비저닝을 방지하고, 클라우드 리소스가 워크로드 및 환경의 동적 요구사항과 일치하도록 할 수 있습니다.

권장사항

클라우드 리소스 사용량을 효과적으로 최적화하려면 다음 권장사항을 고려하세요.

환경별 리소스 선택

각 배포 환경에는 가용성, 안정성, 확장성에 대한 요구사항이 다릅니다. 예를 들어 개발자는 짧은 기간 동안 애플리케이션을 빠르게 배포하고 실행할 수 있는 환경을 선호할 수 있지만 고가용성은 필요하지 않을 수 있습니다. 반면 프로덕션 환경에서는 일반적으로 고가용성이 필요합니다. 리소스 활용도를 극대화하려면 비즈니스 요구사항에 따라 환경별 요구사항을 정의하세요. 다음 표에는 환경별 요구사항의 예가 나와 있습니다.

환경 요구사항
프로덕션
  • 고가용성
  • 예측 가능한 성능
  • 운영 안정성
  • 강력한 리소스를 사용한 보안
개발 및 테스트
  • 비용 효율성
  • 버스트 가능한 용량을 갖춘 유연한 인프라
  • 데이터 지속성이 필요하지 않은 경우 임시 인프라
기타 환경 (스테이징, QA 등)
  • 환경별 요구사항에 따른 맞춤 리소스 할당

워크로드별 리소스 선택

각 클라우드 워크로드에는 가용성, 확장성, 보안, 성능에 대한 요구사항이 다를 수 있습니다. 비용을 최적화하려면 리소스 선택을 각 워크로드의 특정 요구사항에 맞춰야 합니다. 예를 들어 스테이트리스(Stateless) 애플리케이션은 스테이트풀(Stateful) 백엔드와 동일한 수준의 가용성이나 안정성이 필요하지 않을 수 있습니다. 다음 표에는 워크로드별 요구사항의 예가 더 나와 있습니다.

워크로드 유형 워크로드 요구사항 리소스 옵션
미션 크리티컬 지속적인 가용성, 강력한 보안, 높은 성능 고가용성 및 데이터의 전역 일관성을 위한 Spanner와 같은 프리미엄 리소스 및 관리 서비스
중요하지 않음 비용 효율적이고 자동 확장 가능한 인프라 기본 기능이 있는 리소스 및 스팟 VM과 같은 임시 리소스
이벤트 기반 현재 용량 및 성능 수요에 따른 동적 확장 Cloud Run, Cloud Run Functions와 같은 서버리스 서비스
실험적 워크로드 빠른 개발, 반복, 테스트, 혁신을 위한 저렴하고 유연한 환경 기본 기능이 있는 리소스, 스팟 VM과 같은 임시 리소스, 정의된 지출 한도가 있는 샌드박스 환경

클라우드의 이점은 특정 워크로드에 가장 적합한 컴퓨팅 성능을 활용할 수 있다는 것입니다. 일부 워크로드는 프로세서 명령어 세트를 활용하도록 개발되고 다른 워크로드는 이러한 방식으로 설계되지 않을 수 있습니다. 이에 따라 워크로드를 벤치마킹하고 프로파일링합니다. 워크로드를 분류하고 워크로드별 리소스를 선택합니다 (예: Compute Engine VM에 적합한 머신 제품군 선택). 이 방법을 사용하면 비용을 최적화하고, 혁신을 지원하며, 워크로드에 필요한 가용성 및 성능 수준을 유지할 수 있습니다.

다음은 이 추천을 구현하는 방법의 예입니다.

  • 전 세계에 분산된 사용자를 지원하는 중요한 워크로드의 경우 Spanner를 사용하는 것이 좋습니다. Spanner는 모든 리전에서 데이터의 안정성과 일관성을 보장하여 복잡한 데이터베이스 배포의 필요성을 없애줍니다.
  • 부하 수준이 변동되는 워크로드의 경우 자동 확장을 사용하여 부하가 낮을 때는 비용이 발생하지 않도록 하고 현재 부하를 충족할 수 있는 충분한 용량을 유지하세요. Compute Engine VM, Google Kubernetes Engine (GKE) 클러스터, Cloud Run을 비롯한 다양한Google Cloud 서비스의 자동 확장 기능을 구성할 수 있습니다. 자동 확장 기능을 설정할 때 최대 확장 한도를 구성하여 비용이 지정된 예산 내에 유지되도록 할 수 있습니다.

비용 요구사항에 따른 리전 선택

클라우드 워크로드의 경우 사용 가능한 Google Cloud리전을 신중하게 평가하고 비용 목표에 맞는 리전을 선택하세요. 비용이 가장 낮은 리전이 최적의 지연 시간을 제공하지 않거나 지속 가능성 요구사항을 충족하지 않을 수 있습니다. 원하는 균형을 달성하기 위해 워크로드를 배포할 위치에 대해 정보에 입각한 결정을 내립니다. Google Cloud 리전 선택기를 사용하여 비용, 지속 가능성, 지연 시간, 기타 요소 간의 상충 관계를 파악할 수 있습니다.

기본 제공 비용 최적화 옵션 사용

Google Cloud 제품은 리소스 사용량을 최적화하고 비용을 관리하는 데 도움이 되는 기본 제공 기능을 제공합니다. 다음 표에는 일부 Google Cloud 제품에서 사용할 수 있는 비용 최적화 기능의 예가 나와 있습니다.

제품 비용 최적화 기능
Compute Engine
  • 자동 확장을 사용하여 현재 부하에 따라 VM을 자동으로 추가하거나 삭제합니다.
  • 커스텀 머신 유형을 만들어 사용하여 과도한 프로비저닝 방지
  • 워크로드의 요구사항과 일치하는 머신 유형을 선택합니다.
  • 중요하지 않거나 내결함성이 있는 워크로드의 경우 스팟 VM을 사용하여 비용을 절감하세요.
  • 개발 환경에서는 VM의 실행 시간을 제한하거나 VM이 필요하지 않을 때 VM을 일시중지 또는 중지하여 비용을 절감하세요.
GKE
  • 클러스터 자동 확장 처리를 사용하여 현재 부하에 따라 GKE 클러스터의 크기를 자동으로 조정합니다.
  • 노드 자동 프로비저닝을 사용하여 워크로드 요구사항에 따라 노드 풀을 자동으로 만들고 관리하여 최적의 리소스 사용률을 보장합니다.
Cloud Storage
  • 객체 수명 주기 관리를 사용하여 데이터의 기간 또는 액세스 패턴에 따라 데이터를 더 저렴한 스토리지 클래스로 자동 전환합니다.
  • 자동 클래스를 사용하여 사용 패턴에 따라 데이터를 가장 비용 효율적인 스토리지 클래스로 동적으로 이동합니다.
BigQuery
  • 용량 기반 가격 책정을 사용하여 정상 상태 워크로드의 쿼리 처리 비용을 줄입니다.
  • 파티셔닝 및 클러스터링 기법을 사용하여 쿼리 성능과 비용을 최적화합니다.
Google Cloud VMware Engine
  • CUD와 같은 비용 최적화 전략을 사용하고, 스토리지 소비를 최적화하고, ESXi 클러스터 크기를 조정하여 VMware 비용을 절감합니다.

리소스 공유 최적화

클라우드 리소스의 활용도를 극대화하기 위해 애플리케이션의 보안 및 기타 요구사항을 충족하면서 동일한 인프라에 여러 애플리케이션 또는 서비스를 배포할 수 있습니다. 예를 들어 개발 및 테스트 환경에서는 동일한 클라우드 인프라를 사용하여 애플리케이션의 모든 구성요소를 테스트할 수 있습니다. 프로덕션 환경의 경우 인시던트 발생 시 영향을 받는 범위를 제한하기 위해 별도의 리소스 집합에 각 구성요소를 배포할 수 있습니다.

다음은 이 추천을 구현하는 방법의 예입니다.

  • 여러 비프로덕션 환경에 단일 Cloud SQL 인스턴스를 사용합니다.
  • 적절한 액세스 제어를 사용하여 GKE의 Fleet 팀 관리 기능을 사용하면 여러 개발팀이 GKE 클러스터를 공유할 수 있습니다.
  • GKE Autopilot을 사용하여 GKE가 기본적으로 구현하는 빈 패킹 및 자동 확장과 같은 비용 최적화 기법을 활용합니다.
  • AI 및 ML 워크로드의 경우 멀티 인스턴스 GPU, 시간 공유 GPU, NVIDIA MPS와 같은 GPU 공유 전략을 사용하여 GPU 비용을 절감하세요.

참조 아키텍처 개발 및 유지관리

다양한 배포 환경과 워크로드 유형의 요구사항을 충족하도록 맞춤설정된 참조 아키텍처 저장소를 만들고 유지합니다. 개별 프로젝트의 설계 및 구현 프로세스를 간소화하기 위해 청사진은 클라우드 우수센터 (CCoE)와 같은 팀에서 중앙에서 관리할 수 있습니다. 프로젝트팀은 명확하게 정의된 기준에 따라 적합한 청사진을 선택하여 아키텍처 일관성과 권장사항 채택을 보장할 수 있습니다. 프로젝트에 고유한 요구사항의 경우 프로젝트팀과 중앙 아키텍처팀이 협력하여 새로운 참조 아키텍처를 설계해야 합니다. 조직 전체에서 참조 아키텍처를 공유하여 지식 공유를 촉진하고 사용 가능한 솔루션 저장소를 확장할 수 있습니다. 이 접근 방식을 사용하면 일관성을 유지하고, 개발을 가속화하고, 의사 결정을 간소화하고, 효율적인 리소스 활용을 촉진할 수 있습니다.

다양한 사용 사례와 기술에 대해 Google에서 제공하는 참조 아키텍처를 검토합니다. 이러한 참조 아키텍처에는 리소스 선택, 크기 조정, 구성, 배포에 관한 권장사항이 포함되어 있습니다. 이러한 참조 아키텍처를 사용하면 개발 프로세스를 가속화하고 처음부터 비용을 절감할 수 있습니다.

조직 정책을 사용하여 비용 규율 시행

조직 정책을 사용하여 팀 구성원이 사용할 수 있는 사용 가능한 Google Cloud 위치와 제품을 제한하는 것이 좋습니다. 이러한 정책은 팀이 비용 효율적인 솔루션을 준수하고 비용 최적화 목표에 부합하는 위치에 리소스를 프로비저닝하도록 지원합니다.

현실적인 예산을 추정하고 재정적 한도 설정

각 프로젝트, 워크로드, 배포 환경에 대한 세부 예산을 개발합니다. 예산이 인프라 비용, 소프트웨어 라이선스, 인건비, 예상 성장 등 클라우드 운영의 모든 측면을 포함하는지 확인합니다. 과도한 지출을 방지하고 재무 목표에 부합하도록 프로젝트, 서비스 또는 특정 리소스에 대한 명확한 지출 한도 또는 기준을 설정하세요. 이러한 한도에 대해 클라우드 지출을 정기적으로 모니터링합니다. 사전 할당량 알림을 사용하여 잠재적인 비용 초과를 조기에 파악하고 적시에 시정 조치를 취할 수 있습니다.

예산을 설정하는 것 외에도 할당량 및 한도를 사용하여 비용 규율을 적용하고 예기치 않은 지출 급증을 방지할 수 있습니다. 프로젝트, 서비스, 특정 리소스 유형 등 다양한 수준에서 할당량을 설정하여 리소스 사용량을 세부적으로 제어할 수 있습니다.

다음은 이 추천을 구현하는 방법의 예입니다.

  • 프로젝트 수준 할당량: 프로젝트 수준에서 지출 한도 또는 리소스 할당량을 설정하여 전반적인 재정적 경계를 설정하고 프로젝트 내의 모든 서비스에서 리소스 소비를 제어합니다.
  • 서비스별 할당량: Compute Engine 또는 BigQuery와 같은 특정 Google Cloud서비스의 할당량을 구성하여 프로비저닝할 수 있는 인스턴스, CPU 또는 스토리지 용량을 제한합니다.
  • 리소스 유형별 할당량: Compute Engine VM, Cloud Storage 버킷, Cloud Run 인스턴스 또는 GKE 노드와 같은 개별 리소스 유형에 할당량을 적용하여 사용량을 제한하고 예상치 못한 비용 초과를 방지합니다.
  • 할당량 알림: 프로젝트 수준의 할당량 사용량이 최댓값의 일정 비율에 도달하면 알림을 받습니다.

예산 및 모니터링과 함께 할당량 및 한도를 사용하면 비용 관리에 대한 사전 예방적이고 다층적인 접근 방식을 만들 수 있습니다. 이 접근 방식을 사용하면 클라우드 지출이 정의된 범위 내에 유지되고 비즈니스 목표와 일치하도록 할 수 있습니다. 이러한 비용 관리 기능은 영구적이거나 엄격하지 않습니다. 비용 관리 기능이 현재 업계 표준에 부합하고 변화하는 비즈니스 요구사항을 반영하도록 하려면 정기적으로 관리 기능을 검토하고 새로운 기술과 권장사항을 포함하도록 조정해야 합니다.