클라우드 비용관리의 중요성
기업이 클라우드 도입으로 얻는 이점 중 비용절감에 대한 부분은 빼놓을 수 없는 요소이다. 클라우드 운영비용이 자체 데이터센터 운영이나 코로케이션 모델보다 비용적인 우위를 가지느냐는 여전히 뜨거운 논쟁거리이지만 클라우드에 적합한 서비스에 훌륭한 아키텍쳐의 설계가 합쳐지면 충분히 경제적인 인프라 운영이 가능한 것도 사실이다. 여기에 담당자의 적절한 비용 최적화 운영을 더한다면 기업 입장에서는 더 큰 이득을 얻을 수 있다.
사실 기업이 클라우드 관리를 MSP에 맡기는 이유 중에 큰 비중을 차지하는 부분이 위와 같은 빌링 관련된 내용일 것이다. 수 십개의 계정에서 발생하는 비용을 관리하고 한 번에 정산할 수 있게 해주는 시스템을 MSP들은 잘 구축하고 있기 때문이다. 따라서 아키텍쳐가 복잡하고 서비스가 방대하다면 MSP의 컨설팅을 받는 것도 좋은 방법이다.
필자는 이 글에서 사용자 레벨에서 수행할 수 있는 비용 최적화 방법 몇 가지를 소개하려고 한다. 단순히 어떻게 하면 싸게 쓸 수 있을지에 대해 고민하는 것이 아닌 비즈니스 시나리오의 요구사항과 실제 프로비저닝된 자원의 불일치를 하나씩 제거하는 방법에 초점을 맞추도록 한다.
Cost Explorer 활용
Tencent Cloud에서는 계정 별로 클라우드 리소스 사용비용을 효율적으로 관리할 수 있는 Cost explorer 기능을 제공하는데, 이 기능은 단순히 월 별 청구된 비용을 보여주는 것 뿐만 아니라 다양한 필터링 기능과 태그기반으로 비용 상황을 조회하여 고객의 예측가능한 비용 설계를 지원한다.
(본 기능은 Tencent Cloud 공식문서에서도 소개하고 있는 내용이나 MSP에 바인딩된 계정에는 보이지 않을 수 있으므로 이런 경우 비용 관련 컨설팅은 해당 MSP에게 문의하도록 한다.)
Tencent Cloud Console → Billing Center → Cost explorer 에 접속한다.
각종 필터링 옵션을 통해 기간별, 태그별 비용 현황을 확인할 수 있다. 해당 대시보드를 분석하여 기업의 현재 서비스 아키텍쳐에 어울리지 않거나 사용하지 않는 리소스를 정지하거나 제거함으로써 비용을 줄일 수 있다. Cost explorer의 Budget Management 를 활용하면 월별, 분기별, 연도별 특정 리소스의 목표 사용요금을 설정하고 해당 요금의 도달 비율에 따라 알람을 발송하는 기능을 지원한다. 이를 활용하여 경제적인 리소스 관리가 가능해진다.
개별 인스턴스에 대한 사용량을 정해두면 아래와 같이 목표 사용량이 그래프로 제시된다.
사용량이 적은 리소스의 조정 방안
1) 적절한 COS Storage class 설정
빌링시스템이나 실제 트래픽을 참고하여 사용하지 않는 리소스를 제거하는 방법뿐 아니라 스케일링을 통해 사용 목적에 맞는 자원의 스펙조정이 필요한 경우가 있다. COS의 스토리지 클래스를 변경하거나 TencentDB의 스케일링 기능을 활용할 수 있다. 이 글에서는 COS의 예를 들어 비용 최적화 방안을 간단하게 소개한다.
COS에서는 버킷 내부의 데이터에 대해 다양한 스토리지 클래스를 제공한다. 각각 데이터의 접근 빈도와 보관 기간에 따라 다른 목적과 특성을 가지고 있다.
다중 AZ의 옵션을 제외하면 STANDARD , STANDARD_IA , ARCHIVE , DEEP ARCHIVE 등의 클래스를 지원하는데 이러한 클래스들은 데이터의 성격과 R/W 빈도에 따라 분류된다. 핫 데이터에 적합한 STANDARD 클래스와 콜드 데이터
아카이브인 ARCHIVE 를 기준으로 요금을 비교하면 Storage usage fee가 약 3배 가량 차이나는 것을 확인할 수 있다.
물론 COS의 ARCHIVE 클래스는 직접적인 다운로드가 불가능하고 STANDARD 클래스로의 복원 후 R/W가 가능하기 때문에 다운로드가 빈번한 데이터를 ARCHIVE 클래스로 설정하는 경우 R/W 횟수가 증가할수록 비용은 STANDARD클래스를 급격하게 추월하게 된다. 마치 자주 꺼내 먹을 반찬을 냉장고에 넣지 않고 항아리에 보관한다면 매번 밥 차리는 사람의 수고가 많이 드는 것 처럼 말이다.
따라서 R/W 빈도를 고려하여 클래스를 선택하는 것이 무엇보다 중요하다고 할 수 있다. 현재 COS 공식문서는 다양한 방식으로 Batch 데이터 스토리지 클래스 변경 솔루션에 대한 가이드를 제공하므로 이를 참조할 수 있다.
2) Bucket 수명주기 설정
특정 시나리오에서 COS Bucket에 업로드 된 데이터는 시간이 지날 수록 R/W 빈도가 줄어드는 경향이 있다. 이럴때Bucket의 수명주기를 설정하여 특정 시간이 경과한 데이터의 경우 자동으로 삭제하거나 좀 더 콜드한 스토리지 클래스로 이동시키는 방법을 통해 불필요한 스토리지 비용을 절감할 수 있다.
수명주기 옵션 이외에도 여러가지 버전관리 및 히스토리 파일 관리 규칙 설정이 가능하다. 버전관리가 활성화된 경우, 유저가 object를 삭제하면 실제로 object가 삭제되는 것이 아닌 'Delete Marker'라는 특수 객체가 생성된다. 이 'Delete Marker'는 object가 삭제된 것처럼 행동하지만 실제 object는 여전히 버전 형태로 저장된다. 옵션 조정을 통해 데이터의 모든 버전이 삭제되어 최종적으로 남은 버전이 Delete Marker일 경우 이를 자동으로 제거하는 기능을 제공한다.
또한 네트워크 이슈나 기타 예외로 인해 업로드 실패 후 생성된 대형 파일의 일부인 incomplete multipart에 대한 수명주기 관리를 통해 데이터 관리정책과 비용 사이의 균형을 맞출 수 있다.
적절한 과금모델 선택 (RI , Spot instance)
클라우드 비용 최적화의 가장 원초적인 해결방법으로 비즈니스 모델에 맞는 적절한 요금제를 사용하는 방법이 있다. Reserved Instance 나 Spot Instance의 도입이 가능한 상품의 경우 서비스 워크로드가 해당 과금모델에 적합한지 충분히 검토한 후 도입을 고려할 수 있다. RI의 경우 다른 비슷한 글에서 설명했으므로 Spot instance만 소개한다.
Spot instance
Spot instance는 Tencent Cloud에서 제공하는 가상머신 과금모델로, Pay-as-you-go 보다 훨씬 저렴한 가격으로 유저들에게 경쟁적으로 자원을 제공하는 방식이다. 매우 저렴한 가변 가격으로 제공하나 자원 상황 변동이 발생하면 언제든지 회수될 수 있다. 시세보다 훨씬 저렴한 광어회를 싯가로 집에 데려왔는데 밥상에 올리자마자 수산시장 사장님이 가져가는 경우가 생길 수 있다는 뜻이다. 그러니 데이터베이스나 핵심 서비스의 일부를 담당하는 자원에는 할당하지 않고 로드밸런서가 바라보는 서비스나 빅데이터 컴퓨팅 자원의 일부 등 맞춤 비즈니스 시나리오에만 적용해야 한다.
반대로 말하면 시나리오에만 맞는다면 엄청난 할인혜택을 받을 수 있으니 비용 최적화에 딱 맞는 과금모델이라고 할 수도 있다. Tencent Cloud에서는 Spot Instances withdrawal notifications 옵션을 통해 스팟 인스턴스 회수 시 알람을 받을 수 있는 서비스를 제공하며 CVM 메타데이터를 통한 인스턴스 상태조회를 통해 스팟 인스턴스의 회수상태를 체크할 수 있는 API도 제공하고 있으니 도입 시 활용해 볼 수 있겠다.
마치며
효과적인 비용 관리는 클라우드의 경제적 이점을 극대화하고, 전체적인 IT 비용을 통제할 수 있는 핵심 요소이다. 특히 Tencent Cloud 콘솔의 여러 비용관리 솔루션을 활용하면 리소스 사용을 철저히 모니터링하고, 비용을 예측할 수 있다. 또한 사용량이 적은 리소스에 대해 수명주기를 설정하고 관리를 자동화 하는 것 역시 비용 절감에 큰 도움이 된다. 또한 RI나 Spot instance등의 유연한 과금 모델의 도입을 고려할 수도 있다. 기업은 위와 같은 방법을 통해 마치 오래 입지 않은 바지 주머니에서 오만원 짜리를 발견한 것처럼 뜻 밖의 수확을 얻을 수 있을 것이다.