현장에서 배우는 FinOps: 클라우드 비용 예측하기
Alvaro Torroba
Technical Account Manager
*본 아티클의 원문은 2024년 1월 3일 Google Cloud 블로그(영문)에 게재되었습니다.
저는 클라우드 컴퓨팅이 많은 비즈니스의 필수적인 부분으로 자리잡은 시대에 현장에서 테크니컬 어카운트 관리자로 일하면서 클라우드 컴퓨팅이 비즈니스의 비용 절감과 민첩성 개선에 어떤 도움이 되는지 직접 경험했습니다. 하지만 클라우드 비용 예측의 어려움은 클라우드로 이전할 때 비즈니스가 자주 겪는 문제 중 하나입니다. 조심하지 않으면 클라우드 비용이 걷잡을 수 없이 높아질 수 있기 때문에 클라우드 비용 예측에 대한 관심이 커지고 있습니다.
클라우드 비용 예측은 기본적으로 미래의 클라우드 사용량을 전망하는 프로세스입니다. 자금을 조달하거나, 예산을 정하거나, 새로운 클라우드 프로젝트에 대한 지지를 확보하려 할 때 예측은 중요한 역할을 합니다. 또한 클라우드 비용을 예측하면 FinOps 전략을 잘 따르고 있는지 판단하는 데에도 도움이 됩니다.
하지만 많은 기업에서 클라우드를 정확하게 예측하는 데 난항을 겪습니다. Finops의 현 상황(The State of Finops) 설문조사에서 전문성이 높은 실무자 집단은 자신의 예측에 +/- 5% 가량의 오차가 있다고 응답한 반면 전문성이 낮은 집단은 오차가 +/- 20%에 이른다고 응답했습니다.
현장에서 보는 시각
흔히 '예측'이란 단어를 들으면 가장 먼저 기상 예보를 떠올리게 되는데, 기상 예보에서는 특히 시즌에 따른 변동이 중요한 요소입니다. 예를 들어 봄 날씨가 겨울 날씨보다 훨씬 포근하고 눈보라나 무더위가 올 확률이 극히 낮다는 것은 누구나 알고 있습니다. 그리고 1년 중 가장 황사가 많이 발생하는 시즌이라는 것을 감안하면 특정 봄 시기에 어떤 날씨가 나타날지 예측할 수 있게 됩니다.
이 개념을 클라우드 워크로드에 적용하면 클라우드 사용량에 큰 영향을 미치는 시기와 이벤트를 발견할 수 있습니다. 예를 들어 세일 기간이나 연말 연시에 수요가 급증하는 것을 확인할 수 있으며, 이러한 수요 급증은 소비량에 직접적인 영향을 주어 비용 증가로 이어집니다. 결과적으로 사용량을 예측하려면 과거의 데이터 소비량을 알아야 할 뿐 아니라 향후 소비량에 영향을 미칠 수 있는 핵심 요소도 알고 있어야 합니다.
자가 진단 문항:
- 귀사의 비즈니스에 성수기가 있나요?
- 장래에 제품 사용자 또는 소비량 증가로 이어질 수 있는 새로운 프로젝트, 마케팅 이벤트, 클라우드 이전을 계획 중인가요?
- 향후 예측 주기에 적용하기 위한 목적의 데이터를 얼마나 자주 취합하나요?
과거 사용량
정확한 예측의 또 다른 핵심 요소는 과거 데이터입니다. 과거 사용량을 분석하면 향후의 워크로드 변화 추이를 가늠해 볼 수 있습니다. 과거의 데이터는 미래에 발생할 비용을 판단할 수 있는 핵심 자료이며, 이를 바탕으로 계획을 수립하면 예기치 않은 비용 발생을 방지하는 데 도움이 됩니다. 예를 들어 애플리케이션을 마이그레이션하는 지난 몇 개월 동안 꾸준히 사용량이 증가했다면 앞으로도 계속 증가하리라 예상할 수 있습니다. 아울러 사용량의 변동폭이 크다면 보다 강력한 비용 관리 전략을 구현해야 할 수 있습니다.
자가 진단 문항:
- 과거 사용량에 확인된 성수기가 반영되었나요(성수기가 있는 경우)?
- 과거 사용량에 예정된 비즈니스 이벤트가 반영되었나요?
- 예측과 실제 결과 간에 발생한 오차를 적절히 조사했나요? 오차를 분석한 결과는 어땠나요? 분석에서 얻은 교훈을 예측 모델에 적용할 수 있나요?
- 장기적인 추세선은 어떨 것으로 예상하나요?
과거 데이터를 이해하면 정보에 근거해 향후 발생할 비용을 판단할 수 있습니다. 팁: Google Cloud에서는 Cloud Billing 데이터를 BigQuery로 내보내 소비량을 추적할 수 있습니다.
클라우드 비용 예측을 위한 도구
과거 데이터와 앞으로 발생 가능한 이벤트를 알고 있다면 향후 클라우드 비용도 예측해 볼 수 있습니다. 실무자들이 두 가지 요소를 합치는 데 사용할 수 있는 여러 도구가 있으며 그중에는 다음과 같은 것이 있습니다.
- 기본적인 클라우드 비용 관리 도구(GCP의 경우 Cloud Billing 콘솔)
- Cost Estimation API
- 스프레드시트
- BQML 또는 Vertex-AI를 사용하는 머신러닝 모델
- 서드 파티 예측 도구
구체적인 필요와 예산에 따라 적절한 예측 방법이 달라집니다. 예산이 적고 사용이 익숙하다면 스프레드시트를 사용할 수도 있습니다. 하지만 예산이 많은 편이고 예측의 정확도를 높여야 한다면 클라우드 비용 관리 도구, 혹은 서드 파티 예측 도구를 사용하는 편이 나을 수 있습니다.
이왕이면 Google Cloud Billing 콘솔에서 바로 사용할 수 있는 예측 기능부터 사용해 보세요. 이 콘솔은 사용량을 기반으로 이번달에 예상되는 비용을 알려줍니다. 이 예측값은 지금까지 발생한 실제 비용과 예상되는 비용 추세를 결합한 것이며, 해당 결제 계정에 속한 모든 프로젝트의 과거 사용량을 바탕으로 추산된 예상 비용을 알 수 있습니다. 또한 조직의 프로젝트, 서비스, SKU, 폴더별로 보고서를 필터링하여 이 예측 결과를 조정할 수도 있습니다.
전체 조직보다는 단일 프로젝트에 한정된 클라우드 예측이 더 수월하기 때문에 각 프로젝트를 개별적으로 예측한 다음 예측을 종합해 정확성을 높이는 것이 바람직합니다. 이러한 분할 전략은 소규모로 시작해 매우 포괄적인 예측 결과를 얻을 수 있는 훌륭한 접근방식입니다.
현장에서 얻은 경험
최근에 내년도 예정 지출을 계산하려는 소매업 고객사의 예측 작업에 참여한 적이 있었습니다. 고객사에 Google Cloud 연간 약정을 예측할 만한 근거 자료가 없었기 때문에, Google Cloud 계정팀에서 향후 클라우드 비용에 대한 대략적인 예상치를 계산해서 준비했습니다.
이 고객과의 작업에서 다행이었던 점은 기존에 GCP를 사용하던 고객이었기 때문에 다음과 같은 면에서 비용 예측이 다소 수월했다는 것이었습니다.
- 과거 데이터에서 정보를 얻을 수 있음
- Google Cloud에서 고객사의 클라우드 여정과 현재 성숙도 수준을 이미 알고 있음
- 고객사의 주요 워크로드를 익히 알고 있음
- 전반적인 내년도 계획을 고객으로부터 공유받음
이러한 몇 가지 이점이 있었지만 각 프로젝트의 세부정보는 몰랐기 때문에 프로젝트별로 예측해서 나중에 모든 예측값을 합치는 방식으로 진행하지는 못했습니다. 대신 Compute Engine, GKE, 애널리틱스, 네트워킹 등과 같은 서비스 유형별로 지출 영역을 나누었다가 나중에 합치는 방식을 사용했는데, 예측 수행 과정에서 따랐던 단계별 방법은 다음과 같습니다.
- 모든 지출을 서비스 카테고리(애널리틱스, 컴퓨팅, 네트워킹 등)별로 나누어 그룹화합니다.
- 각 서비스 카테고리의 현재 지출과 지난 2개월 지출의 평균값을 구합니다.
- 1년 전 같은 기간의 평균값을 구합니다.
- 두 평균값을 비교하여 추세를 파악하고 각 카테고리에 성장률을 할당합니다.
- 모든 향후 계획을 반영합니다. 이를 위해 정기적, 신규, 비정기적 워크로드에 각기 수정치를 적용합니다.
- 추산된 결과를 고객과 공유하고 고객의 의견을 바탕으로 조정합니다.
예측이 정확했는지는 시간이 흐른 후에야 판단할 수 있으며 언제든 예측하지 못한 요인이 이벤트의 결과에 영향을 미칠 수 있습니다. 오직 시간만이 예측의 정확도를 판가름할 것입니다.
마무리 조언
클라우드 비용을 예측할 때는 현실적인 자세를 취하는 것이 중요합니다. 비용이 같은 수준으로 유지되리라고 넘겨짚지 마세요. 클라우드 사용량의 변화, 비용 발생 요인의 변화, 클라우드 시장의 변화 그리고 가격 변동사항을 반영하세요. 고객사가 클라우드 비용을 파악하는 과정을 도우면서 깨달은 것이 있다면 일관되게 사용되는 제품도 있지만 어쩌다가 사용되는 제품도 있다는 사실입니다. 예를 들어 한 달 동안 집중적으로 사용되던 제품이 그 이후 3개월간 전혀 사용되지 않기도 합니다.
마지막으로, 클라우드 비용 예측은 정기적으로 검토하고 재계산하면서 꾸준히 유지해야 하는 프로세스입니다. 1년간 꾸준히 업데이트하는 편이 연말에 한꺼번에 업데이트하는 것보다 더 나은 결과로 이어질 수 있습니다.
지금까지 말씀드린 미래의 클라우드 비용을 예측하는 방법을 활용해 예측 값과 실제 결과를 비교해 추적하고 모니터링하며 오차 분석을 수행해 보시기 바랍니다.