AWS에서는 여러 계정을 사용하면서 발생한 비용을 하나의 계정에서 통합 결제할 수 있는 기능을 제공하고 있습니다. 이 때, 통합 결제를 이용하여 비용을 지불하는 계정이 바로 지급인 계정 (Payer Account) 입니다. 지금은 AWS Organization이 도입되면서 마스터 계정 (Master Account) 또는 관리 계정 (Management Account) 이라고 부르기도 합니다.
이처럼 지급인 계정을 이용하게 되면 연결된 계정 (Linked Account) 들에서 발생하는 각각의 비용에 대한 상세 데이터를 제공받을 수 있습니다. 흔히 CUR (Cost and Usage Report) 이라고 부르는데, 여기에는 굉장히 다양한 데이터들이 포함됩니다. 사용하는 서비스의 종류에 따라서 제공되는 컬럼도 가변적이라서 보통 200~300개의 컬럼 데이터를 받을 수 있습니다.
이번 글에서는 CUR의 각 레코드가 어떤 형태의 비용 데이터에 의해서 발생한 것인지를 설명하고 있는 lineItem/LineItemType
컬럼의 데이터에 대해서 알아볼까 합니다. 물론 이에 대해서 자세히 설명하고 있는 AWS 문서가 있습니다. [링크] 그래도 저희가 비용 데이터를 분석하면서 알게 된 다양한 정보를 포함해보도록 하겠습니다.
General
다음 항목들은 AWS에서 발생하는 통상적인 형태의 데이터 타입들입니다.
Usage
Usage는 말 그대로 사용한 것에 대한 비용을 의미합니다. 기본적으로 AWS에서 사용량을 측정하고 그에 대한 비용은 Usage의 형태로 청구됩니다. 오직 온디맨드 (On-Demand) 비용만 나타납니다.
Credit
AWS로부터 제공된 크레딧에 의해서 비용이 차감된 내역들 입니다. 크레딧을 계정에 등록해놓으면 자동으로 적용 가능한 데이터를 찾아서 해당하는 액수만큼 차감하게 됩니다. 어떤 크레딧에 의해서 차감되었는지는 lineItem/LineItemDescription
컬럼을 살펴보면 됩니다.
- AWS Activate – ***
- APN 11_02_2020
- 2020-APNTraining_*****_AssocQ2
- ****** FC-******* AWS forecast PoC
위 샘플처럼 다양한 형태의 크레딧이 존재합니다. AWS Activate 프로그램이나 APN (AWS Partner Network) 관련 프로그램 또는 또는 특정 제품에 대한 PoC (Proof of Concept) 활동에 대한 크레딧 등이 있습니다.
Refund
환불받은 모든 내역은 반드시 Refund 항목으로 들어옵니다. 환불의 종류는 다양한데, 크레딧과 마찬가지로 lineItem/LineItemDescription
컬럼을 통해서 어떤 사유에 의해 환불 조치가 되었는지 알 수 있습니다.
- MB – RI Cancellation (Full Refund):*****
- MB – Rebill Adjustment:*****
- Enterprise Program Discount
통상적인 계약과 별개로 진행되는 할인도 Refund 형태로 데이터가 유입될 수 있습니다. 예를 들어, AWS의 인프라를 대량으로 사용하기로 약정하고 할인을 제공받을 수 있는 EDP (Enterprise Discount Program) 계약이 여기에 해당합니다. 이런 경우에는 Usage 데이터가 확정된 이후에 Refund 항목이 계산되므로, 다음 달에 한꺼번에 데이터가 유입됩니다.
비슷한 형태의 RI (Reserved Instance) 대량 구매 할인은 여기에 포함되지 않습니다. 이 때는 RI의 계약 단가 자체가 이미 할인된 값으로 유입됩니다.
Tax
VAT (부가가치세) 또는 그 외의 지역에서 요구하는 세금에 해당하는 항목입니다. 일반적으로 Usage에 대해서 비율로 정해집니다. 2020년 8월까지는 기업 등록이 된 계정을 제외한 일반 계정에만 VAT 10%가 부과되었습니다. 9월에는 일부 한국 계정, 10월부터는 전체 한국 계정에 VAT 10%가 부과되기 시작했는데, 이것은 12월 1일부터 AWS 빌링의 주체가 한국 법인으로 변경되기 때문이라고 합니다. [링크]
OpsNow를 이용하는 고객들에게는 VAT를 블라인드 처리하여 별도로 부과하지 않게끔 하고 있습니다. VAT를 지불하고 환급하는 절차를 저희가 대신 가져감으로써 좀 더 혜택을 드리고자 함입니다.
Reserved Instance
RI (Reserved Instance) 계약과 관련된 비용 항목들 입니다. reservation/*
컬럼이 추가됩니다.
Fee
일회성 비용으로 All Upfront, Partial Upfront 계약시에 발생하는 Upfront 비용을 의미합니다. 1년 혹은 3년 계약을 하더라도 RI를 구매한 해당 월에 단 한 번만 부과됩니다.
RIFee
매달 한 번씩 발생하는 비용으로, RI 계약에 대해서 [할인된 단가 * 해당 월의 시간] 으로 계산됩니다. All Upfront라고 하더라도 단가는 0으로 계산되고 다른 계약들과 마찬가지로 레코드가 발생합니다. 이유는, RI 계약 관련 데이터와 미사용된 비용 등의 정보를 담은 컬럼이 존재하기 때문입니다.
RI는 구매한 시점과 실제 적용하는 시점에 차이가 있습니다. 구매는 00시 30분에 해도 적용은 00시 처럼 시간 단위로 적용이 됩니다. 이 때문에, RIFee의 lineItem/UnBlendedCost
와 RI가 적용된 항목들의 할인된 비용인 reservation/EffectiveCost
의 합이 각각 다르게 되는 현상이 있습니다.
DiscountedUsage
RI 계약이 적용된 Usage 항목들로 항상 비용이 0으로 제공됩니다. 그 이유는 이미 Fee와 RIFee를 통해서 비용을 지불하였기 때문입니다.
Savings Plans
SP (Savings Plans) 계약과 관련된 비용 항목들 입니다. savingsPlans/*
컬럼이 추가됩니다.
SavingsPlanUpfrontFee
RI와 마찬가지인 일회성 비용으로 All Upfront, Partial Upfront 계약시에 발생하는 Upfront 비용을 의미합니다. SP를 구매한 해당 월에 단 한 번만 부과됩니다.
SavingsPlanRecurringFee
한 시간마다 발생하는 비용으로, SP 계약에 대해서 약정한 시간당 비용이 부과됩니다. RI와 마찬가지로, All Upfront라고 하더라도 비용은 0으로 계산되고 다른 계약들과 마찬가지로 레코드가 발생합니다.
해당 데이터는 새로운 월이 되면 그 즉시 해당 월의 전체 시간에 대한 720여개의 레코드가 일괄적으로 유입됩니다. 이후 발생한 Usage에 대해서 SP가 적용되기 시작하면 savingsPlan/UsedCommitment
등의 컬럼 데이터가 변경되면서 SP 사용량을 파악할 수 있습니다.
SavingsPlanCoveredUsage
기본적으로 SavingsPlanCoveredUsage는 Usage에서 SP 계약이 적용된 항목에 대한 태깅 정도로 보시면 됩니다. 기존 Usage 항목과 거의 동일하나, 레코드 타입이 SavingsPlanCoveredUsage로 변경되고 SP 계약관련 컬럼이 추가로 들어옵니다. 그래서 SavingsPlanCoveredUsage는 RI의 DiscountedUsage와는 다르게 비용이 그대로 부과됩니다!
SavingsPlanNegation
앞서 SavingsPlanCoveredUsage 항목에 정확히 대칭되는 항목으로 비용을 차감하는 레코드 입니다. 항상 SavingsPlanCoveredUsage의 전체 비용에 SavingsPlanNegation의 전체 비용을 더하면 0이 됩니다. 대칭되는 항목이기는 하지만, 레코드별로 1대1로 대응하지는 않습니다. SavingsPlanNegation 항목은 lineItem/UsageType
컬럼에 대해서 집계가 된 것으로 보입니다.
이렇게 각각의 CUR 데이터 타입에 대해서 알아보았습니다. 추가로 설명이 필요하거나 이해가 되지 않는 부분은 언제든지 댓글 남겨주시면 업데이트 하도록 하겠습니다! 😄