DynamoDB 테이블 생성하기

우리는 노트 앱을 위한 REST API를 구축할 예정입니다. 이 API는 간단한 CRUD(생성, 읽기, 업데이트, 삭제) API입니다. 즉, 데이터베이스에서 이러한 작업을 수행할 것입니다. 또한 사용자가 노트에 첨부 파일을 업로드할 수 있도록 하고 싶습니다.

이번 섹션에서는 다음과 같은 AWS 리소스를 생성할 것입니다:

  1. 데이터베이스
  2. 파일 저장 서비스

먼저 데이터가 어떻게 저장될지 생각해 보겠습니다. 이를 위해 DynamoDB를 사용할 것입니다.

DynamoDB 소개

Amazon DynamoDB는 완전 관리형 NoSQL 데이터베이스로, 빠르고 예측 가능한 성능과 원활한 확장성을 제공합니다. DynamoDB는 서버리스 데이터베이스이기도 해서, 자동으로 확장되며 사용한 만큼만 비용을 지불합니다.

다른 데이터베이스와 마찬가지로 DynamoDB도 테이블에 데이터를 저장합니다. 각 테이블은 여러 아이템을 포함하며, 각 아이템은 하나 이상의 속성으로 구성됩니다. 다음 장에서 몇 가지 기본 개념을 다룰 예정입니다. 하지만 더 잘 이해하려면 DynamoDB 가이드를 참고하세요.

테이블 생성하기

먼저 AWS 콘솔에 로그인한 후 서비스 목록에서 DynamoDB를 선택합니다.

DynamoDB 서비스 선택 스크린샷

Create table을 선택합니다.

DynamoDB 테이블 생성 스크린샷

아래와 같이 Table namePrimary key 정보를 입력합니다. userIdnoteId가 카멜 케이스로 작성되었는지 확인합니다.

테이블 기본 키 설정 스크린샷

각 DynamoDB 테이블은 기본 키를 가지며, 이 키는 한 번 설정되면 변경할 수 없습니다. 기본 키는 테이블의 각 항목을 고유하게 식별하므로, 두 항목이 동일한 키를 가질 수 없습니다. DynamoDB는 두 가지 유형의 기본 키를 지원합니다:

  • 파티션 키
  • 파티션 키와 정렬 키 (복합 키)

우리는 데이터를 쿼리할 때 추가적인 유연성을 제공하는 복합 기본 키를 사용할 것입니다. 예를 들어, userId 값만 제공하면 DynamoDB는 해당 사용자의 모든 노트를 검색합니다. 또는 userIdnoteId 값을 모두 제공하여 특정 노트를 검색할 수도 있습니다.

DynamoDB에서 인덱스가 어떻게 작동하는지 더 깊이 이해하려면 여기를 참고하세요: DynamoDB 핵심 구성 요소

다음으로 아래로 스크롤하여 Use default settings 선택을 해제합니다.

기본 설정 사용 해제 스크린샷

더 아래로 스크롤하여 Provisioned 대신 On-demand를 선택합니다.

On-Demand 용량 선택 스크린샷

On-Demand 용량은 DynamoDB의 요청당 지불 모드입니다. 예측할 수 없는 워크로드나 시작 단계에서는 Provisioned 용량 모드보다 훨씬 저렴합니다.

On-Demand 용량 옵션이 보이지 않고 “You do not have the required role to enable Auto Scaling by default”라는 메시지가 포함된 정보 상자가 표시되면, 테이블을 생성한 후 테이블 설정 페이지의 “Capacity” 탭에서 설정을 수정할 수 있습니다. 정보 상자에서 언급된 역할은 테이블 생성 과정에서 자동으로 생성됩니다.

마지막으로 아래로 스크롤하여 Create를 클릭합니다.

DynamoDB 테이블 생성 스크린샷

이제 notes 테이블이 생성되었습니다. Table is being created 메시지에서 멈춰 있다면 페이지를 수동으로 새로고침합니다.

DynamoDB 서비스 선택 스크린샷

특히 프로덕션 환경에서 사용할 계획이라면 DynamoDB 테이블의 백업을 설정하는 것이 좋습니다. 이에 대한 내용은 추가 학습 챕터인 DynamoDB에서의 백업에서 다룹니다.

다음으로 사용자가 업로드한 파일을 어떻게 저장할지 살펴보겠습니다.