인프라를 코드로 정의하면서 비용 추적을 붙이려 했다. 콘솔에서 비용 할당 태그를 켜면 된다고 안내했다가 정정을 받았다.
Table of contents
Open Table of contents
상황 — 비용 추적을 붙이려 했다
안내한 방법은 비용 할당 태그 를 켜는 일반적인 것이었다.
콘솔에서 비용 할당 태그 를 켜고 계정 단위로 나눠 보는 방식이다. 대부분의 문서가 비용 분석 을 그렇게 적고 있고 그대로 하면 되는 경우가 많다.
통합 빌링 인지를 확인하지 않고 일반적인 방법을 그대로 안내했다. 보통은 그게 맞으니 확인할 생각을 안 했다.
제약 — 통합 빌링이 막은 경로
이 계정은 통합 빌링 을 쓰고 있었다.
상위 조직이 묶어서 결제하는 구조라 개별 계정에서는 비용 분석 화면에 접근할 수 없다. 내가 안내한 방법을 그 환경에서는 쓸 수 없었다.
[내 안내] 콘솔에서 비용 할당 태그를 켜세요
[실제] 통합 빌링이라 그 기능이 막혀 있음
정정을 받지 않았으면 비용 할당 태그 를 켜라는 안내를 문서에 남겨 뒀을 것이다.
보통은 이렇게 한다는 말이 그 환경에서 통한다는 뜻은 아니다. 계정 구성과 조직 구조와 계약 형태에 따라 못 쓰는 기능이 있고 그것을 먼저 확인한 뒤에 방법을 정해야 했다.
대신 태그를 읽는 도구가 있었다
그 환경에는 리소스 태그 를 읽는 관리 도구가 따로 있었다.
리소스에 태그가 있다 → 태그별로 비용이 나뉜다
태그가 없다 → 미분류 비용
그 도구가 리소스 태그 를 읽어 비용을 분해한다.
계정으로 못 나누면 태그로 나누는 수밖에 없고 그러면 태그가 사실상 유일한 비용 추적 수단이 된다. 리소스 태그 가 없는 것은 어느 쪽 비용인지 영영 알 수 없다.
유일한 수단이라는 것은 그것이 빠지면 대안이 없다는 뜻이기도 했다.
설정 — 태그 키 체계
Project 와 Component 처럼 키 이름이 제각각이면 분해가 안 되므로 먼저 고정했다.
Project 어느 프로젝트
Component 어느 구성요소
Service 어느 서비스
Environment 운영/개발
ManagedBy 누가 관리하나
Project 부터 ManagedBy 까지 다섯으로 고정하고 값에 무엇을 넣을지도 적었다.
여럿이 나눠 쓰는 것은 Component 에 별도 값을 넣어 표시했다.
Component = shared
shared 로 두면 나중에 안분해야 하는 것이 그 값으로 걸린다.
Component 같은 키를 정하는 것보다 정한 키를 지키게 만드는 것이 더 어려웠다. 그래서 정의 템플릿에 태그를 필수 항목으로 넣어 빼먹기 어렵게 했다.
주의 — 자동 생성 리소스
정의에 다섯 키를 다 넣었는데 하나가 걸렸다.
정의한 리소스 → 태그 붙음
그게 만드는 하위 리소스 → 태그가 전파 안 될 수 있음
어떤 리소스는 하위 리소스를 자동으로 만들고 그쪽에는 리소스 태그 가 안 붙는 경우가 있다.
상위: 무료
하위: 월 얼마
그리고 실제로 과금되는 것이 태그가 안 붙은 하위 쪽이다.
태그가 붙은 상위는 비용이 거의 없고 실제 비용은 미분류 로 빠지므로 정의만 보고 판단하면 이 함정을 못 본다.
검증 — 배포 뒤 확인과 보완
이 전파 문제는 정의 코드로 못 막는다.
1. 배포한다
2. 자동 생성된 하위 리소스의 태그를 확인한다
3. 없으면 명령으로 수동 보완한다
정의에 리소스 태그 를 넣어도 전파가 안 되면 끝이라 배포 뒤 절차로 만들었다.
한 번 확인하면 그 뒤로는 안 바뀌므로 1회로 끝나고 이것을 배포 절차 문서에 넣어 다음 사람도 밟게 했다.
전부 자동으로 붙게 만들 수는 없었지만 빠진 것을 찾아내는 것은 가능했다. 자동화가 완전하지 않을 때 확인 절차가 그 빈틈을 메운다.
이 확인이 없으면 몇 달 뒤 청구서에서 미분류 덩어리를 보게 된다. 태그 규율이 느슨해지는 만큼 비용이 어디로 가는지 모르게 되고 그러면 줄일 자리도 못 찾는다.
정리
- 통합 빌링을 쓰면 개별 계정의 비용 분석이 막힐 수 있다
- 보통은 이렇게 한다는 말이 그 환경에서 통한다는 뜻은 아니다
- 환경 제약을 먼저 확인하고 방법을 안내한다
- 계정으로 못 나누면 태그가 유일한 비용 추적 수단이 된다
- 유일한 수단은 빠지면 대안이 없다
- 태그 키 체계를 고정하지 않으면 분해가 안 된다
- 여럿이 나눠 쓰는 리소스는 별도 값으로 표시한다
- 정의 템플릿에 필수로 넣어 빼먹기 어렵게 한다
- 자동 생성되는 하위 리소스에 태그가 전파 안 될 수 있다
- 실제로 과금되는 것이 그쪽이면 미분류로 빠진다
- 배포 뒤에 한 번 확인하고 수동 보완하는 절차를 둔다