aws innovate: best practices for migrating to amazon dynamodb - sangpil kim

37
Amazon DynamoDB로의 이전을 위한 모범사례 소개 김상필, 솔루션즈 아키텍트, 한국 아마존웹서비스

Upload: amazon-web-services-korea

Post on 13-Apr-2017

456 views

Category:

Technology


8 download

TRANSCRIPT

Page 1: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

Amazon DynamoDB로의이전을위한모범사례소개

김상필, 솔루션즈아키텍트, 한국아마존웹서비스

Page 2: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

Amazon DynamoDB 개요

• NoSQL 데이터베이스

• 완전관리형서비스

• 대용량, 뛰어난확장성

• 10ms 미만의빠르고일관된성능

• 유연한데이터모델 - 문서및키-값스토어

• 세분화된접근제어

Amazon

DynamoDB

Page 3: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

목차

• AWS 관리형데이터베이스서비스

• 데이터저장소선택시고려사항

• 1단계 : 검토

• 2단계 : 테이블설계

• 3단계 : 데이터마이그레이션

• 4단계 : 마이그레이션이후

• 주요고려사항

Page 4: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

AWS 관리형 데이터베이스 서비스

Amazon DynamoDB

• NoSQL

데이터베이스

• 완전관리형

• 10ms 미만응답속도

• 대용량, 뛰어난확장성

• 낮은비용

Amazon RDS

• 관계형데이터베이스

• 완전관리형

• 예측가능한성능

• 빠르고손쉬운확장

• 낮은비용, 사용량에따른과금

Amazon Elasticache

• 인-메모리키-값저장소

• 고성능

• Memcached 및 Redis

• 완전관리형

Amazon Redshift

• 관계형데이터웨어하우스

• 대용량병렬처리

• 페타-바이트단위

• 완전관리형

• HDD 및 SSD 플랫폼

Page 5: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

Database + Search Tier

안티 패턴 – 하나의 도구를 모든 작업에사용

Page 6: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

Data TierSearch

Amazon

Elasticsearch

Service

Amazon

CloudSearch

Cache

Redis

Memcached

SQL

Amazon Aurora

MySQL

MariaDB

PostgreSQL

Oracle

SQL Server

NoSQL

Cassandra

Amazon DynamoDB

HBase

MongoDB

모범 사례 – 작업 성격에 맞는 적합한도구 사용

Database + Search Tier

Page 7: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

데이터저장소선택시고려사항

• 데이터구조 : 고정된스키마 / JSON / 키-값

• 억세스방식 : 데이터를억세스하고자하는방식으로저장

• 데이터억세스특징 : Hot / Warm / Cold

• 비용: 적합한비용

Page 8: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

데이터구조및억세스방식

억세스방식 저장소

Put/Get (키, 값) 캐시, NoSQL

단순한관계 → 1:N, M:N NoSQL

테이블조인, 트랜잭션, SQL SQL

Faceting, 검색 검색

데이터구조 저장소

고정된스키마 SQL, NoSQL

스키마없음(JSON) NoSQL, 검색

키-값저장소 캐시, NoSQL

Page 9: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

Hot Warm Cold

규모 MB–GB GB–TB PB

아이템크기 B–KB KB–MB KB–TB

응답속도 ms ms, sec min, hrs

내구성 Low–High High Very High

요청비율 Very High High Low

비용/GB $$-$ $-¢¢ ¢

Hot Data Warm Data Cold Data

데이터억세스특성 : Hot / Warm / Cold

Page 10: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

CacheSQL

요청비율높음 낮음

비용/GB높음 낮음

응답속도낮음 높음

데이터규모낮음 높음

Glacier

구조화 NoSQL

Hot Data Warm Data Cold Data

낮음

높음

Search

적합한데이터저장소선택

Page 11: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

AmazonElastiCache

AmazonDynamoDB

AmazonAurora

AmazonElasticsearch

Amazon EMR (HDFS)

Amazon S3

AmazonGlacier

평균응답속도 ms ms ms, sec ms,sec sec,min,hrs ms,sec,min(~ size)

hrs

데이터규모 GB GB–TBs(no limit)

GB–TB(64 TB Max)

GB–TB GB–PB(~nodes)

MB–PB(no limit)

GB–PB(no limit)

아이템크기 B-KB KB(400 KB max)

KB(64 KB)

KB(1 MB max)

MB-GB KB-GB(5 TB max)

GB(40 TB max)

요청비율 높음 -매우높음

매우높음(no limit)

높음 높음 낮음– 매우높음 낮음 –매우높음(no limit)

매우낮음

스토리지비용GB/월

$$ ¢¢ ¢¢ ¢¢ ¢ ¢ ¢/10

내구성 낮음 - 보통 매우높음 매우높음 높음 높음 매우높음 매우높음

Hot Data Warm Data Cold Data

적합한데이터저장소선택

Page 12: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

DynamoDB - 테이블, 항목, 속성

테이블(Table)

항목(Item)

속성 (Attribute, 이름/값쌍또는 JSON 문서)

Page 13: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

DynamoDB - 기본키 (파티션키)

파티션키 (Partition Key)데이터의분산 / 데이터모델단순 /

비정렬 / 동일값조회

Page 14: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

기본키 (파티션키및정렬키)

파티션키

정렬키 (Sort Key)데이터모델복합/정렬 / 범위값조회

Page 15: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

1단계: 검토 –성능 / 확장성 / 가용성 / 보안

• 모든규모에서낮은응답속도(Single digit milli-second) 제공

• 데이터규모및요청수에따른성능영향없음

쓰기디스크영구저장 (커스텀 SSD)

읽기강한또는최종일관성응답속도저하없음

Page 16: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

1단계: 검토 –성능 / 확장성 / 가용성 / 보안

• 각테이블의읽기쓰기대역폭용량을지정

- RCU (Read Capacity Units) : 4 KB per second

- WCU (Write Capacity Units) : 1 KB per second

• 필요에따라대역폭용량을제한없이확장및축소

• 스토리지용량제한없이데이터저장에따라확장

• DynamoDB가모든내부작업을관리

Page 17: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

1단계: 검토 – DynamoDB 파티션

00 55 A954 AA FF00 FF

Id = 1Name = Jim

Hash (1) = 7B

Id = 2Name = AndyDept = Engg

Hash (2) = 48

Id = 3Name = KimDept = Ops

Hash (3) = CD

Key Space

• DynamoDB 테이블은확장성을위하여내부적으로다수의파티션관리

• 스토리지용량및쓰루풋증가에따라파티션증가

• 파티션키는해시값에따라파티션간아이템분산에사용

Page 18: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

1단계: 검토 – DynamoDB 파티션계산

• 초기파티션수계산공식 :

• 예 : 10,000 읽기용량단위와 5,000 쓰기용량단위

• 이후, 스토리지용량및쓰루풋증가에따라파티션자동증가

( readCapacityUnits / 3,000 ) + ( writeCapacityUnits / 1,000 ) = initialPartitions (rounded up)

( 10,000 / 3,000 ) + ( 5,000 / 1,000 ) = 9 (8.33.. rounded up)

Page 19: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

1단계: 검토 –성능 / 확장성 / 가용성 / 보안

• 높은가용성과안정성을실현하기위해 Amazon DynamoDB는 AWS

리전의세개시설에걸쳐데이터를동기적으로복제

Page 20: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

1단계: 검토 –성능 / 확장성 / 가용성 / 보안

• DynamoDB 자원에대한개별사용자접근제어

• 항목및속성수준까지

• AWS IAM(Identity and Access Management)과통합

• 중앙화된관리

• 3rd 파티인증과통합을위한 Web Identity Federation

Page 21: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

1단계: 검토 –비용 (고객사례)

기존 – Apache Cassandra

• 스토리지• Total = Used 23 TB / Physical 51.2TB

(800GB * 8 instance store volumes * 8 i2.8xl instances)

• I/O• 4,350 reads/second (<1KB item size)• 1,440 writes/second (<1KB item size)

• 비용• 인스턴스 $44K/월 (/wo RI)

향후 – Amazon DynamoDB

• 스토리지• Indexed data storage capacity =

8TB ( = 23TB / 3 replication factor)

• I/O• 4.3K RCU, 1.4K WCU

(Item size < 1KB, strong consistency)

• 비용• DynamoDB $3.8K/월 (/wo RC)

Page 22: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

1단계: 검토 –비용 (Lessons Learned)

• 인스턴스기반의 NoSQL• 3 복제및운영(Compaction, Backup, Temp 등)에따른스토리지용량소요

• 데이터증가에따라인스턴스추가

• 인스턴스최적화여지

• DynamoDB• Provisioned Throughput의 %사용률고려 (100% 사용율어려움)

• Item 크기에따른 WCU / RCU 소모고려

• Eventual Consistency Read 시 Throughput 50% 소모

• Reserved Capacity 통한비용절감고려

Page 23: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

2단계: 테이블설계

• 모범사례 :

http://docs.aws.amazon.com/amazondynamodb/latest/developergui

de/GuidelinesForTables.html

• 테이블의프로비저닝된처리량을최적으로사용하려면다음

요소가중요 :

• 기본키선택

• 개별아이템의워크로드패턴

• 테이블에대해프로비저닝한전체요청처리량을달성하려면

워크로드가파티션키값에고르게분산되도록유지

Page 24: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

2단계: 테이블설계 –기본키선택

• 파티션키의고유한값의갯수가많은속성을파티션키로선택• 좋은예 : 사용자 ID, 애플리케이션의사용자가많은경우

• 나쁜예 : 상태코드, 가능한상태코드가몇개없는경우

00:0 FF:∞

Hash (2) = 48

ID = 2Order# = 10Item = Pen

ID = 2Order# = 11Item = Shoes

ID = 1Order# = 10Item = Toy

ID = 1Order# = 11Item = Boots

Hash (1) = 7B

ID = 3Order# = 10Item = Book

ID = 3Order# = 11Item = Paper

Hash (3) = CD

55 A9:∞54:∞ AA

Partition 1 Partition 2 Partition 3

Id = 1Order# = 10Item = Toy

Hash (1) = 7B

Id = 2Order# = 10Item = Pen

Hash (2) = 48

Id = 3Order# = 10Item = Book

Hash (3) = CD

Key Space

Page 25: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

2단계: 테이블설계 –기본키선택

• 파티션키의고유한값의갯수가많지않은경우

• 팁1 : 복합키(Composite Key) 만들기

Composite key : 사용자아이디 + 어플리케이션아이디 + 레코드아이디

Partition key Sort key Attributes…

Num (user accounts) = ~20MRandom number guid /w 10 digits

Email / contacts / messageUnique values per service

Unique values/w >10 digits

Page 26: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

2단계: 테이블설계 –기본키선택

• 팁2 : 임의(Random) 또는계산된값(Calculated Value) 더하여쓰기분산

• Write Sharding 또는 Scatter & Gather 아키텍처

Partition key : 2014-07-09.N(여기서 N은 1 -200)

Partition key Sort key Attributes…

날짜는값의갯수는많으나

특정파티션에워크로드집중

임의또는계산된값을추가복수파티션에워크로드분산

Page 27: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

3단계: 데이터마이그레이션

• DynamoDB 내보내기(Export) 및가져오기(Import) 기능활용

• 가져오기성능향상 : EMR 클러스터인스턴스타입및크기,DynamoDB Provisioned WCU 및 write throughput ratio

DynamoDB

TableAmazon S3

bucket

Amazon EMR

Cluster

AWS Data

Pipeline

RDS

instance

Generic

Database

NoSQL

Database

JSON

3. Load Files 4. Write Items

2. Launch Cluster

1. Export to JSON

DynamoDB 가져오기(Import)

Page 28: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

3단계: 데이터마이그레이션

• 온라인마이그레이션을위한아키텍처예:

user storage path

User A <path_to_cassandra>

User B <path_to_dynamodb>

Cassandra

Cluster DynamoDB

App servers

Mobile

ClientsStorage

path db

User

AUser

B

Normal data flow

for migrated

users

Normal data flow

for not migrated

users

Migration servers

Migration data

flow

Page 29: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

3단계: 데이터마이그레이션

• 파티션키의설계또는파티션간쓰기부하분산이잘못된경우

• Provisioned Throuput 대비 Consumed Throughput이낮으며,Throttling이발생

Provisioned Write Capacity

Average Consumed Write Capacity

Throttled Write Requests

Page 30: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

3단계: 데이터마이그레이션

UerID MessageID

U1 1

U1 2

U1 …

U1 … 최대 100

U2 1

U2 2

U2 …

U2 … 최대 100

• 데이터업로드중파티션간쓰기부하분산

파티션키 정렬키쓰기시퀀스

- 워크로드가분산되지않은시퀀스 -

UerID MessageID

U1 1

U2 1

U3 1

… …

U1 2

U2 2

U3 2

… …

파티션키 정렬키

쓰기

시퀀스

- 워크로드가분산된시퀀스 -

Page 31: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

4단계: 마이그레이션이후

Partition #1

Partition #2

Partition #3

Partition #1,000

Partition #1

Partition #2

Partition #3

Partition #1,000

Partition #1

Create table

Migration After

Increase WCUto 1,000K

Decrease WCUto 100K

1,000 WCUper partition

X1,000 partitions

100 WCUper partition

X1,000 partitions

1/10 per partitionWCU

• 대용량쓰루풋 Provisioned 후, 마이그레이션이후 Normal 쓰루풋감소

• 파티션은증가하나감소하지않음에따라파티션당쓰루풋감소- Diluted Partition 피할것

Page 32: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

주요고려사항

데이터저장소선택시고려사항1. 데이터구조, 억세스방식, 데이터억세스특징을고려하여 DynamoDB가

적합한데이터저장소인지검토

1단계 : 검토1. 성능 : DynamoDB는모든규모에서한자리수 ms의성능제공

2. 확장성 : 파티션확장을통하여무제한의스토리지공간및대역폭성능제공

3. 가용성 : 리전내 3개설비에데이터동기화저장

4. 보안 : Fine Grained Access Control

Page 33: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

주요고려사항

1단계 : 검토 (계속)5. 비용

• 기존 NoSQL은복제및인스턴스운영, 데이터증가에따라인스턴스최적화여지있음

• Provisioned Throughput의%사용률고려

• Item 크기에따른 WCU / RCU 소모고려

• Eventual Consistency Read 시 Throughput 50% 소모

• Reserved Capacity 통한비용절감고려 - 1년계약의경우최대 53%, 3년계약의경우최대 76%까지절감

6. 벤치마크• 벤치마크툴이부하를잘분산하여요청하는지확인필요

(예: YCSB의 request distribution을 zipfian -> uniform)

Page 34: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

주요고려사항

2단계 : 테이블설계1. 파티션키의고유한값의갯수가많은속성을파티션키로선택

2. 복합키(Composite Key) 만들기

3. 임의(Random) 또는계산된값(Calculated Value) 더하여쓰기분산하는 Write Sharding 또는 Scatter & Gather 아키텍처고려

4. 테이블에대해프로비저닝한전체요청처리량을달성하려면워크로드가파티션키값에고르게분산되도록유지

3단계 : 데이터마이그레이션1. DynamoDB 가져오기(Import) 기능활용

Page 35: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

주요고려사항

3단계 : 데이터마이그레이션 (계속)2. 가져오기성능향상을위하여 EMR 클러스터인스턴스타입및크기,

DynamoDB write throughput ratio 및 Provisioned WCU 조정

3. 온라인마이그레이션을위하여는 Storage path DB를관리하는전체어플리케이션아키텍처고려

4. 데이터업로드중파티션간쓰기부하분산하는쓰기시퀀스고려

4단계 : 마이그레이션이후1. Diluted Partition 피할것

Page 36: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

Online Labs & Training

Gain confidence and hands-on experience with AWS.

Watch free Instructional Videos and explore Self-Paced Labs

Instructor Led Classes

Learn how to design, deploy and operate highly available, cost-

effective and secure applications on AWS in courses led by qualified

AWS instructors

Validate your technical expertise with AWS and use practice exams to help you

prepare for AWS Certification

AWS Certification

More info at http://aws.amazon.com/training

Page 37: AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim

Thank You for Attending AWS Innovate

We hope you found it interesting! Do provide us with your feedback for the session and complete the feedback form.

Let us know your thoughts of today’s event and how we can improve the event experience for you in the future.