2 min read
Cloud Cost Observability와 FinOps
서비스 단위 비용 가시화를 통해 기술 의사결정과 예산 의사결정을 연결하는 방법

도입
클라우드 비용은 보통 월말에 확인하고, 그다음 달에 대응한다. 이 방식은 이미 늦다. 비용 이상 징후를 기술 지표와 같은 시간축에서 봐야 예방이 가능하다. FinOps의 핵심은 절감 기술이 아니라 의사결정 속도다.
이 글은 비용 데이터를 서비스 운영 지표와 연결해 "비용 이벤트를 운영 이벤트처럼" 다루는 실무 방법을 설명한다.

문제 정의
대부분 조직에서 비용 운영이 실패하는 이유:
- 비용 데이터가 계정/리소스 단위로만 있어 서비스 책임자와 연결되지 않는다.
- 트래픽 변화와 비용 변화를 같은 대시보드에서 보지 않는다.
- Reserved/Savings Plan 적용 전후 효과를 실험 단위로 측정하지 않는다.
- 월간 보고는 있는데 실시간 경고 체계가 없다.
핵심은 태깅 표준 + 비용 할당 모델 + 실시간 경고 체계를 세트로 운영하는 것이다.
핵심 개념
| 레이어 | 질문 | 실무 기준 |
|---|---|---|
| Tagging | 누구 비용인가 | service, env, owner, cost_center 필수 |
| Allocation | 어떻게 배분할 것인가 | 공용 비용 배분 규칙 명시 |
| Budget | 어느 선에서 경고할 것인가 | 일/주/월 임계치 분리 |
| Optimization | 무엇을 먼저 줄일 것인가 | 단가가 아닌 총비용 영향 기준 |
비용 최적화의 시작점은 할인 구매가 아니라 "가시성 정합성"이다.
코드 예시 1: 서비스 비용 집계 SQL
WITH base AS (
SELECT
usage_date,
tags->>'service' AS service,
tags->>'env' AS env,
sum(unblended_cost) AS cost_usd
FROM billing_line_items
WHERE usage_date >= current_date - interval '14 days'
GROUP BY 1, 2, 3
)
SELECT
usage_date,
coalesce(service, 'unknown') AS service,
coalesce(env, 'unknown') AS env,
round(cost_usd::numeric, 2) AS cost_usd
FROM base
ORDER BY usage_date DESC, cost_usd DESC;
코드 예시 2: 비용 경고 정책 예시
budget_policies:
- name: service-daily-burst
scope: service
threshold_usd: 300
window: 1d
action:
- slack:#finops-alert
- create_issue:platform-cost
- name: prod-weekly-growth
scope: env=prod
growth_rate_threshold: 0.25
window: 7d
action:
- notify:owner
- require_review:true
아키텍처 흐름
Mermaid diagram rendering...
트레이드오프
- 세밀한 태깅 규칙은 정확도를 높이지만 개발팀 입력 부담이 생긴다.
- 실시간 경고를 강하게 걸면 잡음이 늘 수 있어 임계치 튜닝이 필요하다.
- 공용 비용 배분은 완벽하게 공정할 수 없으므로, "합의된 단순 규칙"을 우선하는 편이 실용적이다.
정리
FinOps는 비용 절감 프로젝트가 아니라 운영 체계다. 서비스 지표와 비용 지표를 같은 루프에서 보면, 비용 이슈를 월말 보고가 아니라 일상 운영의 일부로 다룰 수 있다. 결과적으로 기술 의사결정과 예산 의사결정이 같은 언어를 쓰게 된다.
이미지 출처
- Cover: source link
- License: CC BY-SA 3.0 / Author: Sam Johnston
- Note: Wikimedia Commons 무료 라이선스 이미지를 다운로드 후 1600px 기준 JPG로 최적화했습니다.