AWS/AWS Marketplace

AWS Marketplace SaaS Subscription 과금 모델이 적합한지 미리 검토하는 방법

행운개발자 2024. 1. 16. 22:44
728x90

AWS Marketplace SaaS Subscription 이해하기

사용자의 사용량에 따라서 과금하는 모델에 대해서 잠시 알아보겠습니다. 사용자의 수, 호스트 수 등을 기준으로 과금을 설정할 수 있습니다. 각 제품에 맞는 커스텀 단위가 필요한 경우 Unit을 사용하면 됩니다. 예를 들어, ‘수집되는 로그 수’ 또는 ‘서비스에 연결되는 세션의 수’ 등의 과금 단위가 필요할 때에 Unit을 사용할 수 있습니다.

 

https://docs.aws.amazon.com/marketplace/latest/userguide/pricing.html#usage-pricing

 

하나의 서비스 안에서 구독 및 과금의 기준이 되는 세부 상품들이 나뉘어져있을 수 있습니다. 이러한 과금의 단위를 dimension이라고 부릅니다. 예를 들어 Whatap 이라는 하나의 AWS MP 제품 안에서 Application, Server, Database 등의 dimension이 존재할 수 있습니다.

하나의 서비스에서 제공하는 여러 dimension들을 반드시 하나의 AWS 제품에 모두 등록해야하는 것은 아닙니다. (하나의 AWS MP 제품에는 최대 24개의 dimension(과금 단위)만 등록이 가능하다는 제약 조건이 있기도 합니다.) 여러 dimension 들을 어떤 구조로 AWS MP 제품에 등록할지는 상황에 따라 달라집니다.

사용자가 동시에 몇 개까지 AWS Marketplace 구독을 할 수 있는지, 여러 개의 구독을 할 수 있다면 중복되는 dimension을 허용할지 말지, dimension에 대한 중복 구독을 허용한다면 어떤 구독을 기준으로 과금되게 할지, 제품 등록과정에서 dimension으로 지정되지 않은 과금 단위가 신규로 추가된다면 (신규 제품 개발 등) 무료로 제공할지 사용을 막아야할지 등을 AWS MP 제품 등록 과정에서부터 고민해야합니다.

AWS MP 제품을 등록하는 과정에서 입력하는 대부분의 정보는 수정하기 어렵기 때문에 처음부터 어떤 dimension들을 AWS Marketplace에서 지원할지 미리 논의해야합니다. 개발자 입장에서는 하나의 AWS MP 제품 안에 몇 개의 dimension이 있는지는 크게 중요하지 않습니다. 우선 사용자 계정 하나 당 하나의 AWS MP 구독만 가능하다고 가정하고 시작한 뒤, 나중에 확장을 해도 좋습니다.

dimension 깊게 이해하기

Whatap에서는 Application, Server, Database라는 제품을 제공하고 있습니다.(실제로는 이것보다 훨씬 많습니다) 그리고 각각의 제품은 Cores, Hosts, Logs 등의 dimension(과금기준)이 존재합니다. 여기서 중요한 점은 같은 Core라도 제품에 따라서 단위 당 과금액이 다를 수 있습니다. 아래 예시에서 Server Host는 0.002$ 과금되고 Database Host는 0.005$ 과금됩니다.

  • Application :
    • 1 Core 당 0.002$ 과금 (application-core)
    • 1M Log 당 0.001$ 과금 (log)
  • Server
    • 1 Host 당 0.002$ 과금 (server-host)
    • 1M Log 당 0.001$ 과금 (log)
  • Database
    • 1 Host 당 0.005$ 과금 (database-host)
    • 1M Log 당 0.001$ 과금 (log)

위와 같은 상황에서는 총 4개의 dimension이 필요합니다. 즉 같은 host라도 적용되는 가격이 다르면 서로 다른 dimension으로 지정해야합니다. 만약 24개 이상의 dimension이 필요한 경우, 여러 개의 AWS MP 제품으로 나누어서 등록하고 하나의 AWS Account에서 여러 개의 AWS MP 제품을 구독하도록 유도해야합니다. AWS MP 연동 과정은 복잡해집니다. 만약 Logs라는 dimension은 제품에 상관없이 같은 과금액을 적용할 것이라면 application-log, server-log, database-log를 구분하지 않아도 됩니다.

AWS Marketplace는 1시간 단위 과금

AWS Marketplace에 제품을 등록할 때 dimension 당 과금액을 정의합니다. 그리고 AWS MP는 연동하는 서비스에서 BatchMeterUsage API를 사용해서 보내주는 Unit을 기준으로 과금합니다. (실수로 더 보내거나 덜 보내면 잘못된 값이 반영됩니다.)

Unit 정보는 1시간마다 사용량 정보는 보내주는 것을 권장하고 있습니다. 만약 연동할 서비스에서 월 과금을 진행하고 있다면 계산을 좀 해봐야합니다. 만약 1 Core를 30일동안 사용했을 때 1$를 과금하고 있었다면, AWS MP 제품에 1 Core Unit 당 **0.00138$ (**1$ / 30일 / 24시간)로 등록해야합니다. 그런데 AWS MP 제품에는 소수점 셋째자리까지 등록이 가능합니다. 1 Core Unit 당 가격을 0.001$로 등록하면 30일동안 0.72$ 과금 (0.001$ * 30일 / 24시간), 0.002$로 등록하면 30일동안 1.44$ 과금됩니다. (0.002$ * 30일 / 24시간)

만약 오차를 줄이고 싶다면, 매 시간 사용량의 단위를 보내되 3시간에 1번씩만 의미있는 Unit을 보내고 1Unit 당 가격을 높게 등록하는 등의 방법이 필요합니다. (검증 과정은 복잡해지겠죠? 그냥 0.002$로 하는게 마음 편합니다.)

  • 00시 ~ 01시 사용량 : 0 Unit
  • 01시 ~ 02시 사용량 : 0 Unit
  • 02시 ~ 03시 사용량 : 1 Unit
728x90