[P1] DynamoDB 연동하기(1)

ehwnghks·2023년 2월 28일
0

업비트 API를 이용하여 가져오는 실시간 데이터를 AWS의 dynamoDB에 저장해보자.

AWS에는 데이터를 저장할 수 있는 여러가지 저장소들과 서비스들이 있다.
그중에서도 S3와 dynamoDB에 대해 알아보았다.

S3 (Simple Storage Service)

인터넷 스토리지 서비스. 용량에 관계 없이 파일을 저장할 수 있고 웹(HTTP 프로토콜)에서 파일에 접근할 수 있다.

  • S3는 저장 용량이 무한대이고 파일 저장에 최적화되어 있다. 용량을 추가하거나 성능을 높이는 작업이 필요없다.
  • 비용은 EC2와 EBS로 구축하는 것보다 훨씬 저렴
  • S3 자체가 수천 대 이상의 매우 성능이 좋은 웹 서버로 구성되어 있어서 EC2와 EBS로 구축했을 때 처럼 Auto Scaling이나 Load Balancing에 신경쓰지 않아도 된다.
  • 동적 웹페이지와 정적 웹페이지가 섞여있을 때 동적 웹페이지만 EC2에서 서비스하고 정적 웹페이지는 S3를 이용하면 성능도 높이고 비용도 절감.
  • 웹하드 서비스와 비슷하지만, 별도의 클라이언트 설치나 ActiveX를 통하지 않고 HTTP 프로토콜로 파일 업로드/다운로드 처리
  • S3 자체로 정적 웹서비스 가능

DynamoDB

  • 문서 데이터베이스. NoSQL
  • 낮은 waiting time과 지속적인 사용 패턴을 위해 설계
  • 항목의 수가 적은 경우 (항목이 4KB 미만) DynamoDB가 S3 보다 훨씬 빠르다
  • 트래픽이 급증하면 요청이 잠시 제한될 수 있다
  • DynamoDB는 항목의 내용을 이해하고 항목의 속성을 효율적으로 쿼리하기 위해 인덱스를 설정할 수 있다.
  • DynamoDB 내의 데이터에 액세스하려면 IAM 인증을 받은 AWS SDK 가 필요하다.

S3와 dynamoDB 사용사례

s3
이미지, 동영상, 로그 파일 및 백업과 같은 대량의 비정형 데이터를 저장.
데이터 분석과 같은 일괄 처리를 위한 데이터 저장소로 사용
무제한 저장 용량과 내구성을 제공하며 확장성이 뛰어나고 비용 효율적

DynamoDB
빠르고 일관된 데이터 액세스가 필요한 높은 트래픽 애플리케이션을 지원해야 하는 경우.
대기 시간이 짧은 NoSQL 데이터베이스가 필요한 경우.
실시간 쿼리와 짧은 지연 시간이 필요한 경우.

일반적으로 S3는 즉각적인 액세스가 필요하지 않을 수 있는 많은 양의 비정형 데이터를 저장하는 데 더 적합한 반면 DynamoDB는 높은 확장성과 짧은 대기 시간 액세스가 필요한 트랜잭션 데이터에 더 적합합니다.

DynamoDB 연동하기

1. dynamoDB 테이블 생성


파티션 키 - 물리적 공간인 파티션을 특정하는 키, 파티션키로는 일치하는 값만 가져올 수 있고 조건문으로 작성할 수 없는 이유이기도 하다.
정렬 키 - 파티션 내에서 정렬하는 기준 값이다. (검색을 위한 최소의 조건이다) eq, lt, gt 등의 비교 조건과 between, begin_with 만 지원한다.

2. IAM 사용자 및 사용자그룹 생성


사용자 이름을 설정한다.

권한을 위한 사용자그룹을 생성한다.

dynamoDB에 접근하기위한 정책을 선택하고 그룹 생성.

3. python 연동 테스트

python 연동을 위해선 boto3 모듈을 설치 해야한다.

pip install boto3

dynamoDB 연결시 액세스 키가 필요한데 사용자 관리 - 보안 자격 증명 에서 액세스키를 만든다.

dynamo_test.py

import boto3

dynamodb = boto3.resource('dynamodb',region_name='ap-northeast-2', aws_access_key_id='accesskey',aws_secret_access_key='secretkey')

table = dynamodb.Table('upbit')
data = {'market':'KRW-BTC', 'timestamp':123213211}
table.put_item(Item=data)

위 테스트 코드를 실행 하면

데이터가 정상적으로 들어간것을 확인할 수 있다.


💡참고:
https://hi-space.github.io/web/2019/09/16/s2-vs-dynamodb.html#dynamodb
https://ryan-han.com/post/aws/s3/

profile
반갑습니다.

0개의 댓글