FinOps 실전 가이드: 클라우드 비용 최적화로 청구서 폭탄 막기
솔직히 말하면, 저도 처음 AWS 청구서를 받았을 때 눈을 의심했습니다. 분명히 "테스트 환경"이라고 생각했던 EC2 인스턴스들이 주말 내내 돌아가고 있었고, 달 말이 되어서야 그 사실을 알게 됐죠. 이런 경험이 한 번이라도 있다면, 혼자만의 일이 아닙니다. FinOps Foundation 조사 기준으로 조직의 32% 이상이 클라우드 예산을 낭비하고 있고, 이 중 상당수가 동일한 패턴에서 비롯됩니다.
FinOps는 단순히 "비용 아끼는 방법"이 아닙니다. 클라우드 지출을 비즈니스 가치로 전환하는 운영 문화이자 프레임워크입니다. 개발자가 인프라 비용에 무감각한 채로 일하던 시대는 지나가고 있고, 이제는 엔지니어링 팀이 직접 비용 의사결정에 참여하는 구조로 빠르게 바뀌고 있습니다.
이 글에서는 FinOps의 핵심 원리부터 실무에서 바로 쓸 수 있는 최적화 기법, 그리고 도입 시 흔히 저지르는 실수까지 실제로 효과 있었던 것 위주로 정리해봤습니다. 이 글의 방법을 적용해 개발 환경 비용 40% 줄인 사례도 함께 소개합니다.
왜 40%가 낭비인가: 비용 가시성의 현실
FinOps란 무엇인가
FinOps(Financial Operations): 기술, 비즈니스, 재무팀의 협업을 통해 데이터 기반 의사결정을 가능하게 하고, 재무적 책임을 조직 전반에 내재화하는 방법론 — FinOps Foundation
전통적인 IT 비용 관리가 "어떻게 덜 쓸까"에 집중했다면, FinOps는 "어떻게 더 잘 쓸까"를 묻습니다. 핵심 원칙은 세 가지입니다.
| 원칙 | 내용 |
|---|---|
| 협업(Collaboration) | Engineering, Finance, Product, 경영진이 함께 비용 의사결정에 참여 |
| 가시성(Visibility) | 실시간 비용 데이터로 이상 징후를 즉각 감지 |
| 책임(Accountability) | 리소스를 쓰는 팀이 그 비용을 직접 책임 |
Inform → Optimize → Operate 수명주기
FinOps는 세 단계가 순환하는 구조입니다.
Inform → 비용 현황 파악, 태깅 체계 구축, 팀별 비용 가시화
↑ ↓
Operate ← Optimize → Rightsizing, RI 구매, Spot 전환 등 실행실무에서 가장 먼저 막히는 곳이 Inform 단계의 태깅입니다. 태깅 없이는 어느 팀이 얼마를 쓰는지 알 수 없고, 책임을 물을 수도 없습니다. 모든 리소스 최적화는 태깅 전략 수립에서 시작된다고 보면 됩니다.
Showback vs Chargeback: Showback은 팀별 비용을 "보여만" 주는 모델이고, Chargeback은 실제로 해당 팀 예산에서 차감하는 방식입니다. 문화가 아직 성숙하지 않은 조직은 Showback부터 시작하는 것이 현실적입니다.
주요 비용 최적화 기법 한눈에 보기
| 기법 | 절감 효과 | 적합한 워크로드 |
|---|---|---|
| Rightsizing | 20~40% | CPU 사용률 낮은 과다 프로비저닝 인스턴스 |
| Reserved Instances | 최대 72%¹ | 예측 가능하고 안정적인 상시 워크로드 |
| Spot/Preemptible Instances | 최대 90% | 배치 처리, CI/CD, 애플리케이션이 갑자기 꺼져도 재시작하면 되는 구조 |
| 유휴 리소스 삭제 | 15~30% | 미사용 스냅샷, 미연결 볼륨, 방치된 로드밸런서 |
¹ 3년 약정 + 전액 선결제 기준. 1년 약정·부분 선결제에서는 절감 폭이 달라집니다.
Savings Plans: AWS에서 제공하는 유연한 할인 약정 상품입니다. Reserved Instances처럼 특정 인스턴스 타입에 묶이지 않고, 시간당 지출 약정 방식으로 더 유연하게 할인을 받을 수 있습니다.
실전 적용
예시 1: 테스트 환경 자동 셧다운 (스케줄링)
실무에서 자주 맞닥뜨리는 상황인데, 개발/테스트 환경이 퇴근 후에도, 주말에도 계속 켜져 있는 경우입니다. 업무 시간 외 가동은 순수한 낭비입니다.
AWS EventBridge + Lambda를 활용한 자동 셧다운 예시입니다.
import boto3
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def lambda_handler(event, context):
ec2 = boto3.client('ec2', region_name='ap-northeast-2')
try:
# 태그로 대상 인스턴스 필터링
response = ec2.describe_instances(
Filters=[
{'Name': 'tag:Environment', 'Values': ['dev', 'staging']},
{'Name': 'instance-state-name', 'Values': ['running']}
]
)
instance_ids = [
instance['InstanceId']
for reservation in response['Reservations']
for instance in reservation['Instances']
]
if instance_ids:
ec2.stop_instances(InstanceIds=instance_ids)
logger.info(f"Stopped {len(instance_ids)} instances: {instance_ids}")
else:
logger.info("No running dev/staging instances found.")
return {'stopped': instance_ids}
except Exception as e:
logger.error(f"Failed to stop instances: {e}")
raise| 코드 포인트 | 설명 |
|---|---|
tag:Environment 필터 |
태깅이 전제되어야 이 코드가 작동합니다. 태깅 없이는 전체 인스턴스를 멈출 위험이 있습니다 |
try/except + 로깅 |
API 호출 실패 시 Lambda가 조용히 넘어가는 사고를 방지합니다 |
| EventBridge Cron | cron(0 19 ? * MON-FRI *) 으로 평일 저녁 7시 자동 실행 설정이 가능합니다 |
| 아침 재시작 | 출근 시간에 맞춰 start_instances를 별도 Lambda로 스케줄링하면 됩니다 |
제가 컨설팅했던 한 SaaS 스타트업에서는 이것만으로 개발 환경 비용 40%를 절감했습니다.
예시 2: Infracost로 PR 단계에서 비용 영향 확인하기 (Shift-Left)
Terraform, Pulumi 등 IaC 코드로 인프라를 관리한다면, Infracost를 CI 파이프라인에 넣어두는 것을 권장합니다. 코드 변경이 비용에 얼마나 영향을 미치는지 PR 단계에서 바로 확인할 수 있습니다.
# .github/workflows/infracost.yml
name: Infracost
on:
pull_request:
paths:
- '**.tf'
jobs:
infracost:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Infracost
uses: infracost/actions/setup@v2
with:
api-key: ${{ secrets.INFRACOST_API_KEY }}
- name: Generate Infracost diff
run: |
infracost diff \
--path=./terraform \
--format=json \
--out-file=/tmp/infracost.json
- name: Post Infracost comment
uses: infracost/actions/comment@v1
with:
path: /tmp/infracost.json
behavior: update # 기존 코멘트를 업데이트이렇게 설정해두면 PR에 자동으로 아래와 같은 비용 요약이 달립니다.
💰 월 예상 비용 변화: $120.50 → $187.30 (+$66.80, +55%)
주요 변경:
aws_instance.api_server: $45.00 → $90.00 (+$45.00)
이유: t3.medium → t3.large 변경사이드 프로젝트에서 직접 써봤는데, 인프라 변경의 비용 영향이 PR 코멘트로 바로 보이니 리뷰어가 훨씬 빠르게 판단할 수 있게 됩니다.
Infracost: Terraform, Pulumi 등 IaC 코드에서 클라우드 비용을 자동 추정해주는 오픈소스 도구입니다. PR 코멘트로 비용 영향을 시각화하는 Shift-Left FinOps의 대표 도구입니다.
예시 3: Rightsizing — 다운사이징 후보 찾기
저도 처음엔 헷갈렸는데, Rightsizing은 단순히 "작은 인스턴스로 바꾸는 것"이 아닙니다. 실제 사용 패턴에 맞는 크기를 찾는 과정입니다. 한 가지 주의할 점은, CPU 사용률만 보고 판단하면 낭패를 볼 수 있다는 겁니다. 메모리 사용률, 네트워크 I/O도 함께 확인해야 합니다.
아래는 AWS CLI로 CloudWatch에서 14일 평균 CPU 사용률을 추출하는 스크립트입니다.
#!/bin/bash
# AWS CLI 설정(~/.aws/credentials, IAM 권한)이 완료된 환경 기준
# 14일 평균 CPU 사용률이 10% 미만인 인스턴스 목록 출력
# 주의: GNU date 기준 (macOS에서는 -d 대신 -v-14d 사용)
INSTANCE_IDS=$(aws ec2 describe-instances \
--filters "Name=instance-state-name,Values=running" \
--query 'Reservations[].Instances[].InstanceId' \
--output text)
for ID in $INSTANCE_IDS; do
AVG_CPU=$(aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 \
--metric-name CPUUtilization \
--dimensions Name=InstanceId,Value=$ID \
--start-time $(date -u -d '14 days ago' +%Y-%m-%dT%H:%M:%SZ) \
--end-time $(date -u +%Y-%m-%dT%H:%M:%SZ) \
--period 1209600 \
--statistics Average \
--query 'Datapoints[0].Average' \
--output text)
if (( $(echo "$AVG_CPU < 10" | bc -l) )); then
echo "다운사이징 후보: $ID (평균 CPU: ${AVG_CPU}%)"
fi
done제가 참여했던 프로젝트에서 전체 인스턴스의 40%가 CPU 10% 미만으로 운영되고 있었다는 점은 꽤 충격적이었습니다. 이 분석을 자동화하고 싶다면 AWS Compute Optimizer가 ML 기반으로 해줍니다.
2025~2026 주목할 FinOps 트렌드
Shift-Left FinOps가 점점 주목받고 있습니다. 배포 이후 비용을 줄이는 게 아니라, 코드 작성 단계부터 비용을 인식하는 방향입니다. 예시 2에서 소개한 PR 비용 코멘트 워크플로우가 대표적인 예입니다.
AI 기반 자동화도 빠르게 확산 중입니다. 60% 이상의 기업이 이미 FinOps 워크플로우에 AI를 도입했고, AWS Compute Optimizer의 ML 기반 Rightsizing 추천이나 CloudHealth의 생성형 AI 챗봇이 좋은 예입니다.
ESG 흐름과 맞물려 탄소 비용(Carbon Cost per Workload) 도 클라우드 KPI로 들어오기 시작했습니다. 비용 최적화 추천에 탄소 배출량 가중치를 함께 반영하는 도구들이 빠르게 늘고 있습니다.
멀티클라우드를 운영한다면 FOCUS™ 스펙이 점점 중요해집니다. AWS, Azure, GCP가 각기 다른 청구 포맷을 쓰기 때문에 통합 분석이 어려운데, FOCUS™는 이 데이터를 하나의 표준 포맷으로 맞춰주는 오픈 스펙입니다.
FOCUS™ (FinOps Open Cost and Usage Specification): FinOps Foundation이 주도하는 멀티클라우드 청구 데이터 표준화 스펙입니다. AWS, Azure, GCP, OCI가 모두 지원하며, 여러 클라우드의 비용 데이터를 동일한 포맷으로 분석할 수 있게 해줍니다.
도입 전에 알아야 할 트레이드오프
장점
| 항목 | 내용 |
|---|---|
| 즉각적 ROI | Reserved Instances·Rightsizing만으로도 수주 내 효과가 나타납니다 |
| 조직 문화 혁신 | 엔지니어가 비용 의식을 갖게 되면 아키텍처 의사결정의 질 자체가 높아집니다 |
| 예측 가능성 향상 | 실시간 가시성과 예측 모델로 월말 청구서 서프라이즈를 크게 줄일 수 있습니다 |
| 멀티클라우드 대응 | FOCUS™ 스펙으로 AWS·Azure·GCP 비용을 통합 관리할 수 있습니다 |
단점 및 주의사항
이 중에서 실제로 가장 자주 발목 잡는 건 태깅 유지 비용이었습니다. 정책을 세워도 새 서비스가 붙을 때마다 누락이 생기더라고요.
| 항목 | 내용 | 대응 방안 |
|---|---|---|
| 조직 변화 저항 | 엔지니어링 팀이 비용 책임을 부담으로 느낄 수 있습니다 | 강제보다 셀프서비스 대시보드와 인센티브 구조로 접근하는 것이 효과적입니다 |
| 태깅 유지 비용 | 신규 서비스·팀 추가 시 태깅 누락이 반복됩니다 | IaC 정책으로 태그 없는 리소스 프로비저닝 자체를 차단하는 방법이 있습니다 |
| Reserved Instance 리스크 | 1~3년 약정이라 비즈니스 변화 시 유휴 물량이 생길 수 있습니다 | RI + Savings Plans + On-demand 혼합 비율을 워크로드 패턴에 맞게 조정하는 것이 좋습니다 |
| Spot Instance 안정성 | 인터럽션 발생 시 AWS가 2분 전 SIGTERM을 보내는데, 이 신호를 처리하는 핸들러가 없으면 데이터 유실이 생깁니다 | Spot Interruption Notice를 처리하는 graceful shutdown 로직이 필요합니다. CI/CD·배치 처리부터 적용해보시면 좋습니다 |
| 도구 비용 역설 | FinOps 플랫폼 라이선스 자체가 상당한 비용입니다 | 도입 전 ROI를 반드시 계산하고, 클라우드 네이티브 무료 도구부터 시작하는 것이 좋습니다 |
실무에서 가장 흔한 실수
- 태깅 없이 최적화부터 시작하는 것 — 어느 팀·서비스의 비용인지 모르는 상태에서 Rightsizing을 해봤자 책임 소재가 불분명해서 조직 내 공감을 얻기 어렵습니다.
- Reserved Instance를 한 번에 대량 구매하는 것 — 워크로드 패턴을 충분히 파악하기 전에 1년 약정을 걸었다가 비즈니스 방향이 바뀌면 고스란히 손실이 됩니다. 3개월 On-demand 데이터를 먼저 보고 구매하는 것을 권장합니다.
- 엔지니어링 팀을 배제하고 재무팀 주도로만 추진하는 것 — FinOps는 재무 프로젝트가 아니라 엔지니어링 문화 변화입니다. 실제 리소스를 만드는 개발자가 참여하지 않으면 절감 효과는 일회성에 그칩니다.
마치며
글 첫머리에서 말했던 그 주말 EC2 인스턴스 사건 이후로, 저는 인프라 코드를 짤 때 비용 태그를 먼저 붙이는 버릇이 생겼습니다. 작은 습관 하나가 팀 전체의 비용 가시성을 바꾸더라고요.
FinOps는 한 번에 완성하는 게 아니라, Inform → Optimize → Operate를 반복하면서 조직 문화로 자리잡는 과정입니다. 체계적으로 접근하면 월 지출의 25~50% 절감도 충분히 가능합니다.
지금 바로 시작해볼 수 있는 3단계:
- 비용 현황 파악부터 — AWS Cost Explorer, Azure Cost Management, GCP Cost Management 같은 클라우드 네이티브 무료 도구로 지난 3개월 지출을 서비스·팀별로 분류해보시면 좋습니다. 태그가 아직 없다면 서비스명이나 계정 단위로 먼저 분류해도 됩니다. 아마 예상치 못한 항목이 한두 개는 나올 겁니다.
- 태깅 정책 초안 수립 —
Environment,Team,Service,Owner네 가지 태그만으로도 비용 할당이 훨씬 명확해집니다. IaC 코드에 태그를 필수값으로 넣어두는 것을 권장합니다. - 작은 범위로 파일럿 — 한 팀, 한 서비스에서 Rightsizing이나 테스트 환경 자동 셧다운을 먼저 적용해보시면 좋습니다. 수치로 효과가 보이면 조직 내 설득이 훨씬 쉬워집니다.
다음 글: Kubernetes 환경의 비용 최적화 — Kubecost와 OpenCost로 네임스페이스별 비용을 추적하고 HPA/VPA 설정을 개선하는 실전 가이드
참고 자료
- What is FinOps? | FinOps Foundation
- FinOps Framework Overview | FinOps Foundation
- FinOps Principles | FinOps Foundation
- State of FinOps 2026 Report | FinOps Foundation
- 3 FinOps trends to look out for in 2026 | TechTarget
- FinOps Tools: The Definitive Guide 2026 | CloudZero
- What is Cloud FinOps? | Google Cloud
- FinOps Framework | Microsoft Learn
- Reserved Instances vs Savings Plans vs Spot | CloudOptimo