쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

DynamoDB에서 반복 결제 스키마 설계

포커스 모드
DynamoDB에서 반복 결제 스키마 설계 - Amazon DynamoDB

반복 결제 비즈니스 사용 사례

이 사용 사례에서는 DynamoDB를 사용하여 반복 결제 시스템을 구현하는 방법을 설명합니다. 데이터 모델에는 계정구독영수증과 같은 엔터티가 있습니다. 사용 사례의 구체적인 내용은 다음과 같습니다.

  • 각 계정에는 여러 구독이 있을 수 있습니다.

  • 구독에는 다음 결제를 처리해야 하는 NextPaymentDate가 있고 고객에게 이메일 미리 알림이 전송되는 NextReminderDate가 있습니다

  • 결제가 처리될 때 저장되고 업데이트되는 구독 항목이 있습니다(평균 항목 크기는 약 1KB이며 처리량은 계정 및 구독 수에 따라 다름).

  • 또한 결제 처리자는 테이블에 저장되고 TTL 속성을 사용하여 일정 기간 후에 만료되도록 설정된 프로세스의 일부로 영수증을 생성합니다

반복 결제 엔터티 관계 다이어그램

다음은 반복 결제 시스템 스키마 설계에 사용할 엔터티 관계 다이어그램(ERD)입니다.

계정, 구독 및 영수증 엔터티를 보여주는 반복 결제 시스템 ERD.

반복 결제 시스템 액세스 패턴

다음은 반복 결제 시스템 스키마를 설계할 때 고려할 액세스 패턴입니다.

  1. createSubscription

  2. createReceipt

  3. updateSubscription

  4. getDueRemindersByDate

  5. getDuePaymentsByDate

  6. getSubscriptionsByAccount

  7. getReceiptsByAccount

반복 결제 스키마 설계

일반 이름 PK 및 SK는 계정, 구독 및 영수증 엔터티와 같은 다양한 유형의 엔터티를 동일한 테이블에 저장할 수 있도록 키 속성에 사용됩니다. 사용자는 먼저 구독을 생성하여 제품에 대한 대금을 매달 같은 날에 지불하는 데 동의합니다. 매월 어느 날에 결제를 처리할지 사용자가 선택할 수 있습니다. 결제가 처리되기 전에 전송되는 미리 알림도 있습니다. 애플리케이션은 매일 실행되는 두 개의 배치 작업, 즉 해당 날짜 기한의 미리 알림을 전송하는 배치 작업과 해당 날짜 기한의 모든 결제를 처리하는 배치 작업을 통해 작동합니다.

1단계: 액세스 패턴 1(createSubscription) 처리

액세스 패턴 1(createSubscription)은 구독을 처음 만드는 데 사용되며 SKUNextPaymentDateNextReminderDatePaymentDetails 등의 세부 정보가 설정됩니다. 이 단계에서는 구독이 하나인 계정 한 개에 대한 테이블 상태를 보여 줍니다. 항목 컬렉션에 여러 개의 구독이 있을 수 있으므로 이는 일대다 관계입니다.

계정의 구독 세부 정보를 보여주는 테이블 설계.

2단계: 액세스 패턴 2(createReceipt) 및 3(updateSubscription) 처리

액세스 패턴 2(createReceipt)는 영수증 항목을 만드는 데 사용됩니다. 매월 결제가 처리되면 결제 처리자는 기본 테이블에 영수증을 다시 기록합니다. 항목 컬렉션에 여러 개의 영수증이 있을 수 있으므로 이는 일대다 관계입니다. 또한 결제 처리자는 구독 항목을 업데이트하여(액세스 패턴 3(updateSubscription)) 다음 달의 NextReminderDate 또는 NextPaymentDate를 업데이트합니다.

다음 구독 알림 날짜를 보여주는 영수증 세부 정보 및 구독 항목 업데이트.

3단계: 액세스 패턴 4(getDueRemindersByDate) 처리

애플리케이션은 당일 결제 미리 알림을 배치로 처리합니다. 따라서 애플리케이션은 계정이 아닌 날짜라는 다른 차원에서 구독에 액세스해야 합니다. 이는 글로벌 보조 인덱스(GSI)의 좋은 사용 사례입니다. 이 단계에서는 NextReminderDate를 GSI 파티션 키로 사용하는 인덱스 GSI-1을 추가합니다. 모든 항목을 복제할 필요는 없습니다. 이 GSI는 희소 인덱스이며 영수증 항목은 복제되지 않습니다. 또한 모든 속성을 프로젝션할 필요는 없으며, 속성의 일부만 포함하면 됩니다. 아래 이미지는 GSI-1의 스키마를 보여주며 애플리케이션이 미리 알림 이메일을 보내는 데 필요한 정보를 제공합니다.

이메일 주소와 같은 세부 정보가 포함된 GSI-1 스키마. 애플리케이션에서 알림 이메일을 보내야 합니다.

4단계: 액세스 패턴 5(getDuePaymentsByDate) 처리

애플리케이션은 미리 알림과 마찬가지로 당일 결제를 배치로 처리합니다. 이 단계에서는 GSI-2를 추가하며, NextPaymentDate를 GSI 파티션 키로 사용합니다. 모든 항목을 복제할 필요는 없습니다. 영수증 항목은 복제되지 않으므로 이 GSI는 희소 인덱스입니다. 아래 이미지는 GSI-2의 스키마를 보여줍니다.

결제를 처리하기 위한 세부 정보가 포함된 GSI-2 스키마. NextPaymentDate는 GSI-2의 파티션 키입니다.

5단계: 액세스 패턴 6(getSubscriptionsByAccount) 및 7(getReceiptsByAccount) 처리

애플리케이션은 계정 식별자(PK)를 대상으로 하며 범위 연산자를 사용하여 SK가 'SUB#'로 시작하는 모든 항목을 가져오는 쿼리를 기본 테이블에서 사용하여 계정의 모든 구독을 검색할 수 있습니다. 또한 애플리케이션은 동일한 쿼리 구조로 범위 연산자를 사용하여 SK가 'REC#'로 시작하는 모든 항목을 가져옴으로써 모든 영수증을 검색할 수 있습니다. 이를 통해 액세스 패턴 6(getSubscriptionsByAccount) 및 7(getReceiptsByAccount)을 충족할 수 있습니다. 애플리케이션은 이러한 액세스 패턴을 사용하므로 사용자는 현재 구독과 지난 6개월 동안의 과거 영수증을 볼 수 있습니다. 이 단계에서 테이블 스키마는 변경되지 않으며, 액세스 패턴 6(getSubscriptionsByAccount)의 구독 항목만 대상으로 지정하는 방법을 아래에서 확인할 수 있습니다.

기본 테이블에 대한 쿼리 작업 결과. 특정 계정의 구독을 보여줍니다.

모든 액세스 패턴과 스키마 설계에서 이를 처리하는 방법이 아래 표에 요약되어 있습니다.

액세스 패턴 기본 테이블/GSI/LSI Operation 파티션 키 값 정렬 키 값
createSubscription 기본 테이블 PutItem ACC#account_id SUB#<SUBID>#SKU<SKUID>
createReceipt 기본 테이블 PutItem ACC#account_id REC#<RecieptDate>#SKU<SKUID>
updateSubscription 기본 테이블 UpdateItem ACC#account_id SUB#<SUBID>#SKU<SKUID>
getDueRemindersByDate GSI-1 Query <NextReminderDate>
getDuePaymentsByDate GSI-2 Query <NextPaymentDate>
getSubscriptionsByAccount 기본 테이블 쿼리 ACC#account_id SK begins_with “SUB#”
getReceiptsByAccount 기본 테이블 쿼리 ACC#account_id SK begins_with “REC#”

반복 결제 최종 스키마

다음은 최종 스키마 설계입니다. 이 스키마 설계를 JSON 파일로 다운로드하려면 GitHub의 DynamoDB 예제를 참조하세요.

기본 테이블

계정 정보와 구독 및 영수증 세부 정보를 보여주는 기본 테이블 설계.

GSI-1

이메일 주소, NextPaymentDate와 같은 구독 세부 정보가 포함된 GSI-1 스키마.

GSI-2

PaymentAmount 및 PaymentDay와 같은 결제 세부 정보가 포함된 GSI-2 스키마.

이 스키마 설계와 함께 NoSQL Workbench 사용

이 최종 스키마를 DynamoDB 데이터 모델링, 데이터 시각화, 쿼리 개발 기능을 제공하는 시각적 도구인 NoSQL Workbench로 가져와서 새 프로젝트를 추가로 탐색하고 편집할 수 있습니다. 시작하려면 다음 단계를 따릅니다.

  1. NoSQL Workbench 다운로드 자세한 내용은 DynamoDB용 NoSQL Workbench 다운로드 단원을 참조하십시오.

  2. 위에 나열된 JSON 스키마 파일을 다운로드합니다. 이 파일은 이미 NoSQL Workbench 모델 형식으로 되어 있습니다.

  3. JSON 스키마 파일을 NoSQL Workbench로 가져옵니다. 자세한 내용은 기존 데이터 모델 가져오기 단원을 참조하십시오.

  4. NOSQL Workbench로 가져온 후 데이터 모델을 편집할 수 있습니다. 자세한 내용은 기존 데이터 모델 편집 단원을 참조하십시오.

  5. 데이터 모델을 시각화하거나, 샘플 데이터를 추가하거나, CSV 파일에서 샘플 데이터를 가져오려면 NoSQL Workbench의 Data Visualizer 기능을 사용하세요.

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.