amazed by aws 1st session

129
Amazed By AWS Series #1 Play with Databases ์ •์œค์ง„ ์†”๋ฃจ์…˜ ์•„ํ‚คํ…ํŠธ [email protected]

Upload: amazon-web-services-korea

Post on 26-Jun-2015

1.188 views

Category:

Technology


9 download

DESCRIPTION

AWS Korea MMN & SA team is delivering 5 deep dive sessions in 5 months, as one of AWS Korea's customer obsession program. This is the 1st preso.

TRANSCRIPT

Page 1: Amazed by aws 1st session

Amazed By AWS Series #1

Play with Databases

์ •์œค์ง„์†”๋ฃจ์…˜์•„ํ‚คํ…ํŠธ[email protected]

Page 2: Amazed by aws 1st session

์†Œ๊ฐœ

AWS ์†”๋ฃจ์…˜์•„ํ‚คํ…ํŠธGaming/HPC

DevOps

System Admin

(์‹ญ๋…„์ „) Kernel driver dev.

Page 3: Amazed by aws 1st session

์˜ค๋Š˜๋‚ด์šฉ

a. INTRO โ€“ Ice breaking

b. Game Play Patterns

c. Relational DBMS

d. NoSQL

e. Search

Page 4: Amazed by aws 1st session

์‹œ์ž‘ํ•˜๊ธฐ์ „์—.

Page 5: Amazed by aws 1st session

AWS ๋ช…๋ น์ค„๋„๊ตฌ

http://aws.amazon.com/ko/cli/

$ sudo pip install awscli

Downloading/unpacking awscli

Downloading awscli-1.5.4.tar.gz (253kB): 253kB downloaded

Running setup.py (path:/private/tmp/pip_build_root/awscli/setup.py) egg_info for package awscli

โ€ฆ

..

.

Successfully installed awscli botocore bcdoc colorama docutils rsa jmespath pyasn1

Cleaning up...

$

$ aws configure

AWS Access Key ID [None]: XXXXXXXXXXXXXXXXX

AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Default region name [None]: ap-northeast-1

Default output format [None]: json

$

Page 6: Amazed by aws 1st session

$ aws s3 ls s3://yz-ngs-outputs

PRE Redis-snapshots/

PRE hohoho/

PRE pig-apache/

PRE transfer-test/

PRE wordcount/

2013-06-07 17:56:52 6097048 Elastic Beanstalk for Startups.pptx

2013-05-31 13:33:49 0 HG00099.mapped.SOLID.bfast.GBR.exome.20111114.bam

2013-05-06 15:56:56 132644272 TrendMicro-TTi_6.0_HE_Full.exe

2013-11-10 03:16:23 5188 fabricrc.txt

$

AWS ๋ช…๋ น์ค„๋„๊ตฌ

Page 7: Amazed by aws 1st session

Ice breaking

Page 8: Amazed by aws 1st session

Amazon Web Services

Page 9: Amazed by aws 1st session
Page 10: Amazed by aws 1st session
Page 11: Amazed by aws 1st session

Amazon Corporate Services Korea LLC

Our office

29th Sep 2014, 3AM

AWS ๊ด€๋ จ๋ฌธ์˜์‚ฌํ•ญ์€์—ฌ๊ธฐ๋กœ[email protected]

[email protected]

[email protected]

Page 12: Amazed by aws 1st session

๊ฐœ๋ฐœ์ž์—๊ฒŒ AWS๋ž€?

http://www.toptiertactics.com/wp-content/uploads/2011/10/Workaholic-Cartoon.jpg

Page 13: Amazed by aws 1st session
Page 14: Amazed by aws 1st session

Java Python PHP .NET Ruby nodeJS

iOS Android

AWS SDK

Page 15: Amazed by aws 1st session

https://github.com/awslabs

Page 16: Amazed by aws 1st session

ํ•˜๋‚˜์ด์ƒ์˜๋ฐฐํฌ๋„๊ตฌ์˜์‚ฌ์šฉ์ด์ค‘์š”

OpsWorks CloudFormation

Page 17: Amazed by aws 1st session

Game type:

๋ชจ๋ฐ”์ผ์ „๋žต

Page 18: Amazed by aws 1st session
Page 19: Amazed by aws 1st session

๋ฐ์ดํ„ฐ๋ชจ๋ธ์—๋Œ€ํ•ด

๊ฐ์ข…์ƒํƒœ์ •๋ณด : ๋ ˆ๋ฒจ, ์—‘์Šฌ๋Ÿฌ, ํŠธ๋กœํ”ผ, ๊ณจ๋“œ๊ฑด๋ฌผ๋ฐฐ์น˜์ •๋ณด : ๋‹ด๋ฒผ๋ฝ, ์„ฑ์˜์œ„์น˜, ๋Œ€ํฌ์œ„์น˜๊ฒŒ์ž„ํ”Œ๋ ˆ์ด์ƒํƒœ์ •๋ณด : ์˜จ๋ผ์ธ, ์˜คํ”„๋ผ์ธ, ๊ณต๊ฒฉ๋ฐ›๋Š”์ค‘, ๊ณต๊ฒฉํ•˜๋Š”์ค‘์ „ํˆฌ๊ธฐ๋ก์ •๋ณด : ์–ธ์ œ์–ด๋Š์œ ๋‹›์„์–ด๋Š์ขŒํ‘œ์—, ๊ณต๊ฒฉ/๋ฐฉ์–ด๊ธฐ๋ก

๊ธฐํƒ€ :

ํŠธ๋กœํ”ผ๋ฅผํ†ตํ•œ์ˆœ์œ„๋น„๊ต์‹ค์‹œ๊ฐ„์ฑ„ํŒ…์‚ฌ์šฉ์ž์ด์šฉํ–‰ํƒœ๋กœ๊น…

์‹ค์‹œ๊ฐ„๋Œ€์ „์กฐ๊ฑด์ด๋ถ™์ง€์•Š์œผ๋ฉด,

๋˜๋Š”๋ถ™์œผ๋ฉด?

Page 20: Amazed by aws 1st session

์ƒํƒœ์ •๋ณด

์œ„์น˜์ •๋ณด

Page 21: Amazed by aws 1st session

Game type:

๋ชจ๋ฐ”์ผ์บ์ฃผ์–ผ

Page 22: Amazed by aws 1st session

๋ฐ์ดํ„ฐ๋ชจ๋ธ์—๋Œ€ํ•ด

๊ฐ์ข…์ƒํƒœ์ •๋ณด : ๋ ˆ๋ฒจ, ์Šค์ฝ”์–ด, ๊ณจ๋“œ, ์•„์ดํ…œํ˜„ํ™ฉ๊ธฐ๋ก์ •๋ณด : ์–ธ์ œ๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ, ๋งˆ์ง€๋ง‰ํ”Œ๋ ˆ์ด๋ ˆ๋ฒจ

๊ธฐํƒ€ :

์Šค์ฝ”์–ด๋ฅผํ†ตํ•œ์ˆœ์œ„๋น„๊ต์‚ฌ์šฉ์ž์ด์šฉํ–‰ํƒœ๋กœ๊น…

ํด๋ผ์ด์–ธํŠธ์—์„œ๊ฒŒ์ž„๋ฐ์ดํ„ฐ๊ฐ€์™„์„ฑBackend ๋Š”๋ฐ์ดํ„ฐ๊ธฐ๋ก, ์ˆœ์œ„, ๋กœ๊น…, ๋ถ„์„์„์œ„ํ•ด์กด์žฌ

Page 23: Amazed by aws 1st session

Game type:

FPS, TPS

Page 24: Amazed by aws 1st session

๋ฐ์ดํ„ฐ๋ชจ๋ธ์—๋Œ€ํ•ด

๊ฐ์ข…์ƒํƒœ์ •๋ณด : ๋ ˆ๋ฒจ, ์Šค์ฝ”์–ด, ๊ณจ๋“œ, ์•„์ดํ…œํ˜„ํ™ฉ๊ธฐ๋ก์ •๋ณด : ์–ธ์ œ๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ, ๋งˆ์ง€๋ง‰ํ”Œ๋ ˆ์ด๋ ˆ๋ฒจ๋กœ๋น„์ •๋ณด : ์ „ํˆฌ๋ฐฉ์ƒ์„ฑ์„์œ„ํ•œ์ฑ„ํŒ…, ์ค‘๊ณ„๋ฅผ์œ„ํ•œ์„ธ์…˜์ •๋ณด์˜์ €์žฅ์ƒํƒœ์ •๋ณด : ํ˜„์žฌ์†ํ•œ์„ธ์…˜ id ๋ฐํ”Œ๋ ˆ์ด์ค‘์ธ room id ๋“ฑ

๊ธฐํƒ€ :

์Šค์ฝ”์–ด๋ฅผํ†ตํ•œ์ˆœ์œ„๋น„๊ต์‚ฌ์šฉ์ž์ด์šฉํ–‰ํƒœ๋กœ๊น…

๋กœ๊ทธ์ธ๋ฐ์บ๋ฆญํ„ฐ๊ด€๋ จ์ •๋ณด๋ฅผ์ œ์™ธํ•˜๋ฉด๊ฑฐ์˜๋Œ€๋ถ€๋ถ„์„ธ์…˜์˜์ค‘๊ณ„๋ฐ๊ฒฐ๊ณผ์—…๋ฐ์ดํŠธ์—์ง‘์ค‘

Page 25: Amazed by aws 1st session

Game type:

MMORPG

Page 26: Amazed by aws 1st session

๋ฐ์ดํ„ฐ๋ชจ๋ธ์—๋Œ€ํ•ด

๊ฐ์ข…์ƒํƒœ์ •๋ณด : ๋ ˆ๋ฒจ, ์Šค์ฝ”์–ด, ๊ณจ๋“œ, ์•„์ดํ…œํ˜„ํ™ฉ์ด์‹ค์‹œ๊ฐ„์œผ๋กœ๋ณ€๊ฒฝ๊ธฐ๋ก์ •๋ณด : ์–ธ์ œ๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ, ๋งˆ์ง€๋ง‰ํ”Œ๋ ˆ์ด๋ ˆ๋ฒจ, ๋ฐ๋ฏธ์ง€, ๋ชฌ์Šคํ„ฐ๋ฐ PvP

์ •๋ณด๋กœ๋น„์ •๋ณด : ๊ฒŒ์ž„๋‚ด์‹ค์‹œ๊ฐ„์‚ฌ์šฉ์ž๊ฐ„์ฑ„ํŒ…, ๊ณ ๊ฐ์ง€์›์ดํฌํ•จ์ƒํƒœ์ •๋ณด : ์„œ๋ฒ„๊ฐ„์บ๋ฆญํ„ฐ์˜์œ„์น˜์ •๋ณด, HP ๋ฐ๋ฐ๋ฏธ์ง€, ๋ฐฉ์–ด๋ ฅ๋“ฑ๋‹ค์–‘ํ•œ์Šคํ…Ÿ์ •๋ณดํ•„์š”

๊ธฐํƒ€ :

NPC ์™€์บ๋ฆญํ„ฐ๊ฐ„์ธํ„ฐ๋ ‰์…˜์‚ฌ์šฉ์žํ”Œ๋ ˆ์ดํ˜•ํƒœ๋กœ๊น…

์‚ฌ์šฉ์ž์˜๋ชจ๋“ ํ–‰์œ„์—๋Œ€ํ•ด์‹ค์‹œ๊ฐ„์—๊ฐ€๊นŒ์šด์„œ๋ฒ„๊ฐ„๋™๊ธฐํ™”๋“ฑ์ดํ•„์š”

Page 27: Amazed by aws 1st session
Page 28: Amazed by aws 1st session

์˜ฌ๋ฐ”๋ฅธ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šคํƒ€์ž…์˜์„ ํƒ๋ฐ์ดํ„ฐ์—”ํ‹ฐํ‹ฐ๊ฐ„์˜๊ด€๊ณ„๊ฐ€ํ•„์š”ํ•œ๊ฐ€?

1๋ช… โ€“ ์ˆ˜์–ต๋ช…์˜์‚ฌ์šฉ์ž์ ‘๊ทผ์—๋Œ€๋น„, ํ™•์žฅ์ด๊ฐ€๋Šฅํ•œ๊ฐ€?

๋ฐ์ดํ„ฐ๊ฐ€์˜์†์ ์œผ๋กœ์ €์žฅ๋˜์–ด์•ผํ•˜๋Š”๊ฐ€?

๋ฐ์ดํ„ฐ๊ฐ€ํŠน์ •์‹œ์ ์—๋งŒ์œ ํšจํ•œ๊ฐ€?

ํ•œ๋ฒˆ์ƒ์„ฑ๋œ๋ฐ์ดํ„ฐ๊ฐ€์ž์ฃผ๋ณ€๊ฒฝ๋ ๊ฐ€๋Šฅ์„ฑ์ด์žˆ๋Š”๊ฐ€?

ํ•œ๋ฒˆ์ƒ์„ฑ๋œ๋ฐ์ดํ„ฐ๋Š”์˜์›ํžˆ๋ณ€ํ•˜์ง€์•Š๋Š”๊ฐ€?

Insert / Update / Delete / Select ์ค‘์–ด๋– ํ•œ type ์˜๋ฐ์ดํ„ฐ๋ณ€๊ฒฝ์ด๋งŽ์€๊ฐ€?

๋‹จ๋ง (ํด๋ผ์ด์–ธํŠธํ”Œ๋žซํผ)์—์„œ์ง€์›ํ•˜๋Š”๋กœ์ปฌ DB์™€๋™์ผํ•œ๋ฐ์ดํ„ฐํƒ€์ž…์„์‚ฌ์šฉํ• ์ˆ˜์žˆ๋Š”๊ฐ€?

http://www.raywenderlich.com/913/sqlite-tutorial-for-ios-making-our-app

http://www.slideshare.net/MindfireSolutions/web-sql-database-in-html-5

Page 29: Amazed by aws 1st session

๊ฒŒ์ž„๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ AWS

Page 30: Amazed by aws 1st session

1. RDBMS ๋งŒ์œผ๋กœ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ๋Š”ํ•œ๊ณ„๊ฐ€์žˆ๋‹ค.

2. NoSQL ๋งŒ์œผ๋กœ๋Š” Rich Query ๋ฅผ์ˆ˜ํ–‰ํ• ์ˆ˜์—†๋‹ค.

3. ๋ถ„์‚ฐํ™˜๊ฒฝ์—์ ํ•ฉํ•œ๊ฒŒ์ž„์„œ๋ฒ„๊ตฌ์กฐ๋ฅผ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค.

1. RDBMS ์˜์‚ฌ์šฉ๋น„์œจ์ถ•์†Œ, ์ƒค๋”ฉ๊ตฌ์กฐํ™•๋ฆฝ2. NoSQL + Search engine ์˜ํ˜ผํ•ฉ์‚ฌ์šฉ3. RPC, Coroutine (yield)๊ณผ๊ฐ™์€๊ธฐ๋ฒ•์˜์ ๊ทน์‚ฌ์šฉ4. Tight coupled ์˜๋ฐฉ๋ฒ•๋ณด๋‹ค๋Š” Loosely coupled ์˜๊ตฌํ˜„5. Pub/Sub ์„ํ†ตํ•œ์„œ๋ฒ„๊ฐ„๋ฉ”์„ธ์ง€์ „๋‹ฌ

Game dev on AWS

Page 31: Amazed by aws 1st session

๊ตฌ์กฐํ™”๋œ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค โ€“๋ณต์žกํ•œ์ฟผ๋ฆฌ๋ฅผ์ง€์›-SQL : Amazon RDS

-Data Warehouse : Amazon Redshift

-Search : Amazon CloudSearch

๊ตฌ์กฐํ™”๋˜์ง€์•Š์€๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค โ€“์ปค์Šคํ…€์ฟผ๋ฆฌ๋ฅผ์ง€์›-Hadoop : Elastic MapReduce

Database Overview

Page 32: Amazed by aws 1st session

๊ตฌ์กฐํ™”๋œ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค โ€“๋‹จ์ˆœํ•œ์ฟผ๋ฆฌ๋ฅผ์ง€์›-NoSQL : DynamoDB

-Cache : ElastiCache

๊ตฌ์กฐํ™”๋˜์ง€์•Š์€๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค โ€“์ฟผ๋ฆฌ๋ฅผ์ง€์›ํ•˜์ง€์•Š์Œ- ํด๋ผ์šฐ๋“œ์Šคํ† ๋ฆฌ์ง€ : S3, Glacier

Database Overview

Page 33: Amazed by aws 1st session

๊ด€๊ณ„ํ˜•๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

SELECT customer_info.firstname, customer_info.lastname, purchases.item

FROM customer_info INNER JOIN purchases

ON customer_info.customer_number = purchases.customer_number;

Page 34: Amazed by aws 1st session

Relational Database ServiceDatabase-as-a-Service

No need to install or manage database instances

Scalable and fault tolerant configurations

Feature Details

Platform support Create MySQL, SQL Server and Oracle RDBMS

Preconfigured Get started instantly with sensible default

settings

Automated patching Keep your database platform up to date

automatically

Backups Automatic backups and point in time recovery

and full DB backups

Provisioned IOPS Specify IO throughput depending on

requirements

Failover Automated failover to slave hosts in event of a

failure

Replication Easily create read-replicas of your data and

seamlessly replicate data across availability

zones

Compute Storage

AWS Global Infrastructure

Database

App Services

Deployment & Administration

Networking

Page 35: Amazed by aws 1st session

์‚ฌ์šฉ์ด๊ถŒ์žฅ๋˜๋Š”๊ฒฝ์šฐ

-ํŠธ๋žœ์žญ์…˜-๋ณต์žกํ•œ์ฟผ๋ฆฌ๊ฐ€์š”๊ตฌ๋˜๋Š”๊ฒฝ์šฐ-์ตœ๋Œ€ 30,000 IOPS (15K reads, 15K writes)

-100๊ธฐ๊ฐ€๋ฐ”์ดํŠธ์—์„œ์ˆ˜ TB ์ˆ˜์ค€-์›Œํฌ๋กœ๋“œ๊ฐ€ 1๋Œ€์ˆ˜์ค€์—์„œ์ฒ˜๋ฆฌ๊ฐ€๋Šฅํ•œ๊ฒฝ์šฐ-๋†’์€๋‚ด๊ตฌ์„ฑ์ด์š”๊ตฌ๋˜๋Š”๊ฒฝ์šฐ

RDS

Page 36: Amazed by aws 1st session

์‚ฌ์šฉ์ด๊ถŒ์žฅ๋˜์ง€์•Š๋Š”๊ฒฝ์šฐ

-๋Œ€๋Ÿ‰์˜ read/write ๊ฐ€์š”๊ตฌ๋ ๋•Œ (150,000 write request/sec)

-๋ฐ์ดํ„ฐ์˜ํฌ๊ธฐ๋˜๋Š”์ฒ˜๋ฆฌ๋Ÿ‰์œผ๋กœ์ƒค๋”ฉ์„๊ฒฐ์ •ํ•ด์•ผํ•˜๋Š”๊ฒฝ์šฐ-NoSQL ๋กœ์ฒ˜๋ฆฌ๊ฐ€๊ฐ€๋Šฅํ•œ์ˆ˜์ค€์˜์ฟผ๋ฆฌ๋˜๋Š” Get/Put ์˜์š”์ฒญ์ด๋Œ€๋ถ€๋ถ„์ธ๊ฒฝ์šฐ-๋ณต์žกํ•œ๋ถ„์„์ดํ•„์š”ํ•œ๊ฒฝ์šฐ

RDS

Page 37: Amazed by aws 1st session

Windows ๊ธฐ๋ฐ˜์˜๊ฒŒ์ž„ํšŒ์‚ฌ์—์„œ๋งŽ์ด์‚ฌ์šฉEC2 / RDS ์—์„œ์‚ฌ์šฉ๊ฐ€๋ŠฅEC2 ์—์„œ์‚ฌ์šฉ์‹œ PIOPS ์ ์šฉ๋œ๋‹ค์ˆ˜์˜ EBS ๋ฅผํ†ตํ•ด ํ™•์žฅ

๊ฐ€๋Šฅi2 / r3 / c3 ๊ณ„์—ด์˜์ธ์Šคํ„ด์Šค์‚ฌ์šฉ๊ฐ€๋Šฅ์ข…์ „์˜๋ฐ์ดํ„ฐ์„ผ์„œ์—์„œ์‚ฌ์šฉํ•˜๋˜๋ชจ๋“ ๊ตฌ์„ฑ๊ทธ๋Œ€๋กœ์‚ฌ์šฉ๊ฐ€๋Šฅ (SAN ๊ธฐ๋ฐ˜ํด๋Ÿฌ์Šคํ„ฐ๋ง์ œ์™ธ)

RDS ์—์„œ๋Š” 3๊ฐœ์˜ region์—์„œ Multi-AZ ์ง€์›10,000 PIOPS ์ ์šฉ๊ฐ€๋ŠฅSYSADMIN ๊ณ„์ •ํ™•๋ณด๋ถˆ๊ฐ€DB ๊ฐ€๋™์ž‘์ค‘์ธ OS ์—์ ‘๊ทผ๋ถˆ๊ฐ€์ตœ์†Œ๋ณผ๋ฅจํฌ๊ธฐ 200G, ์ตœ๋Œ€๋ณผ๋ฅจํฌ๊ธฐ 1T

MSSQL

Page 38: Amazed by aws 1st session

RDS ์—์„œ๋Š” Multi-AZ, Read replication ๋“ฑ DB engine

์ค‘๊ฐ€์žฅ๋‹ค์–‘ํ•˜๊ณ ๋งŽ์€๊ธฐ๋Šฅ์„์ง€์›DB engine ์—์„œ๋Š” timezone ๋ณ€๊ฒฝ์ด์•„์ง๋ถˆ๊ฐ€๋Šฅ. UTC

๊ธฐ๋ฐ˜ํด๋ผ์ด์–ธํŠธ์ ‘์†์‹œ์„ค์ •๋ณ€๊ฒฝ๋˜๋Š”์ฝ”๋“œ์—์„œ์ ์šฉํ•ด์•ผํ•จ์‚ฌ์šฉ์ด๋งค์šฐํŽธ๋ฆฌ, dump/restore ์—ญ์‹œ๊ธฐ์กด์—์‚ฌ์šฉํ•˜๋Š”mysqldump / mysql ํด๋ผ์ด์–ธํŠธ๋ฅผ์‚ฌ์šฉํ•˜์—ฌ๊ฐ€๋ŠฅOS root ๋Š”ํ™•๋ณด๋ถˆ๊ฐ€๋Šฅ

์ˆœํ›„ํ•˜๊ฒŒ MySQL ๋งŒ์‚ฌ์šฉํ•˜๋ฉด์„œ EC2 ์—์ง์ ‘์„ค์น˜ํ•˜์—ฌ์‚ฌ์šฉํ•˜๋Š”๊ฒฝ์šฐ์š”๊ตฌ์‚ฌํ•ญ์€๋งŽ์ง€์•Š์Œ.

Maria ์™€๊ฐ™์€ DB ์˜์‚ฌ์šฉMMM / Galera ์™€๊ฐ™์€๋ณ„๋„์˜ 3rd party ๋„๊ตฌ๋ฅผ์‚ฌ์šฉํ•˜๊ณ ์žํ•˜๋Š”๊ฒฝ์šฐ์—์œ ์šฉScale-up ์˜๋ฐฉ๋ฒ•์€ EC2 ์˜๋ฐฉ๋ฒ•๊ณผ๋™์ผ

MySQL

Page 39: Amazed by aws 1st session

Region

Availability

Zone A Availability

Zone B

S3

EC2

โ€ข ๊ฒŒ์ž„์€์–ธ์ œ๋‚˜ โ€œWrite heavyโ€

โ€ข ์บ์‹ฑ์ด์–ธ์ œ๋‚˜ํ†ตํ•˜๋Š”๊ฒƒ์€์•„๋‹˜

โ€ข ํ‚ค๋ฐธ๋ฅ˜ / ํ‚ค๋ฐธ๋ฅ˜

โ€ข ์žฆ์€๋ฐ”์ด๋„ˆ๋ฆฌ์˜์‚ฌ์šฉ

โ€ข ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š”์–ธ์ œ๋‚˜๋ณ‘๋ชฉ

ELB

EC2

CloudFront

CDN

CUID ๋Š”๊ดด๋กญ๋‹คใ… ใ… (creat/update/delete/insert)

Page 40: Amazed by aws 1st session

Availability

Zone A

C2

Shard (No Fun)

Page 41: Amazed by aws 1st session

๊ด€๊ณ„ํ˜•๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์„ฑ๋Šฅ์˜๊ทน๋Œ€ํ™”๋ฐฉ๋ฒ•

1. EBS PIOPS ๋ณผ๋ฅจ์˜์ ๊ทน์ ์ธ์‚ฌ์šฉ2. Instance Store ์˜์ ๊ทน์ ์ธ์‚ฌ์šฉ3. ํ…Œ์ด๋ธ”์„๋งŽ์€๋ณผ๋ฅจ์—๋ถ„์‚ฐ์ €์žฅ, ํ…Œ์ด๋ธ”์„์„œ๋กœ๋‹ค๋ฅธ

๋ณผ๋ฅจ์—์ €์žฅ

Page 42: Amazed by aws 1st session

Availability Zone a Availability Zone b

MSSQL

Master

MSSQL

Standb

y

4 SSD

Stripped Instance Store

(Main DB data store)

4 SSD

Stripped Instance Store

(Mirrored DB data store)

30G

EBS

nG

EBS

root TX

LOG

30G

EBS

nG

EBS

Mirroring

root TX

LOG

Cre

ate

vo

lum

e

sn

ap

sh

ot

Volume create

From snapshot

Att

ac

h v

olu

me

Fo

r re

sto

rati

on

Page 43: Amazed by aws 1st session

Availability Zone a Availability Zone b

MSSQL

Master

MSSQL

Standb

y

4 SSD

Stripped Instance Store

(Main DB data store)

4 SSD

Stripped Instance Store

(Mirrored DB data store)

30G

EBS

nG

EBS

root TX

LOG

30G

EBS

nG

EBS

Mirroring

root TX

LOG

Cre

ate

vo

lum

e

sn

ap

sh

ot

Volume create

From snapshot

Att

ac

h v

olu

me

Fo

r re

sto

rati

onInstance Store ๋Š”์žฌ๋ถ€ํŒ…์‹œ๋ฐ์ดํ„ฐ๊ฐ€์‚ฌ๋ผ์ง

๋”ฐ๋ผ์„œ๋ณต์ œ/๋ณต๊ตฌ/๋ฐฑ์—…์—๋Œ€ํ•ดํ™•์‹คํ•œ๋Œ€๋น„๊ฐ€ํ•„์š”

ํ™•์‹คํ•œ๋Œ€๋น„์—†์ด๋Š”์‚ฌ์šฉ์—์ฃผ์˜!!!!!

Page 44: Amazed by aws 1st session

Availability Zone a Availability Zone b

MSSQL

Master

MSSQL

Standb

y

n X PIOPS EBS

Not raided, for Windows Server

(table partition, table space)

(Main DB data store)

n X PIOPS EBS

Not raided, for Windows Server

(table partition, table space)

(Mirrored DB data store)

30G

EBS

nG

EBS

root TX

LOG

30G

EBS

nG

EBS

Mirroring

root TX

LOG

Cre

ate

vo

lum

e

sn

ap

sh

ot

Volume create

From snapshot

Att

ac

h v

olu

me

Fo

r re

sto

rati

on

Page 45: Amazed by aws 1st session

NoSQL

redis> MSET one 1 two 2 three 3 four 4

OK

redis> KEYS *o*

1) "four"

2) "two"

3) "one"

redis> KEYS t??

1) "two"

redis> KEYS *

1) "four"

2) "two"

3) "one"

4) "three"

redis>

Page 46: Amazed by aws 1st session

์‚ฌ์šฉ์ด๊ถŒ์žฅ๋˜๋Š”๊ฒฝ์šฐ

-์˜ˆ์ธก๊ฐ€๋Šฅํ•œ, ๋น ๋ฅธ์†๋„๊ฐ€์š”๊ตฌ๋˜๋Š”๊ฒฝ์šฐ-์ˆœ์‹๊ฐ„์—๋Œ€๊ทœ๋ชจํ™•์žฅ์š”๊ตฌ์‚ฌํ•ญ์ด์žˆ๋Š”๊ฒฝ์šฐ-์ƒค๋”ฉ์„์ž๋™์œผ๋กœํ•ด์•ผํ•˜๋Š”๊ฒฝ์šฐ-๋ฐ์ดํ„ฐ์˜์ •ํ•ฉ์„ฑ๊ณผ๋‚ฎ์€์ง€์—ฐ์‹œ๊ฐ„์ด๋™์‹œ์—ํ•„์š”ํ•œ๊ฒฝ์šฐ-๋ฐ์ดํ„ฐ์ €์žฅ์˜ํฌ๊ธฐ๋ฐ์ฒ˜๋ฆฌ๋Ÿ‰์˜ํ•œ๊ณ„๋ฅผ์„ค์ •ํ• ์ˆ˜์—†๋Š”๊ฒฝ์šฐ-์•„์ฃผ๋†’์€๋‚ด๊ตฌ์„ฑ์ด์š”๊ตฌ๋˜๋Š”๊ฒฝ์šฐ-๊ฐ„๋‹จํ•œ์ฟผ๋ฆฌ๋˜๋Š” KV ์ €์žฅ์†Œ๊ฐ€์š”๊ตฌ๋˜๋Š”๊ฒฝ์šฐ

DynamoDB

Page 47: Amazed by aws 1st session

์‚ฌ์šฉ์ด๊ถŒ์žฅ๋˜์ง€์•Š๋Š”๊ฒฝ์šฐ

-๋‹ค์ˆ˜์˜์•„์ดํ…œ๋˜๋Š” row ๋ฐ์„œ๋กœ๋‹ค๋ฅธํ…Œ์ด๋ธ”์ฐธ์กฐํŠธ๋žœ์žญ์…˜์ดํ•„์š”ํ•œ๊ฒฝ์šฐ-๋ณต์žกํ•œ์ฟผ๋ฆฌ๋ฐ์กฐ์ธ์ดํ•„์š”ํ•œ๊ฒฝ์šฐ-๋กœ๊ทธ์„ฑ๋ฐ์ดํ„ฐ์—๋Œ€ํ•œ์‹ค์‹œ๊ฐ„๋ถ„์„์ดํ•„์š”ํ•œ๊ฒฝ์šฐ-์ž์ฃผ์ฐธ์กฐ๋˜์ง€์•Š๋Š”๋ฐ์ดํ„ฐ๋ฅผ์ €์žฅํ•˜๊ณ ์žํ•˜๋Š”๊ฒฝ์šฐ

DynamoDB

Page 48: Amazed by aws 1st session

ํด๋Ÿฌ์Šคํ„ฐ์ž๋™์ƒ์„ฑ โ€“ Master : Multi replication nodes

Auto Backup

Auto Failover

Restore from rdb file

ElastiCache - Redis

์ตœ๊ทผ์˜๊ฒŒ์ž„์—์„œ๋Š” pub/sub ์„ํ†ตํ•œ๋ฐ์ดํ„ฐ๊ณต์œ ์—์‚ฌ์šฉ์ข…์ „์˜ UDP/TCP broadcast ๋ฅผ๋Œ€์ฒ˜๊ฐ€๋ŠฅIn-memory ์ฒ˜๋ฆฌ๋กœ๋งค์šฐ๊ณ ์†

Page 49: Amazed by aws 1st session

Redis โ€“ pubsub

๊ฒŒ์ž„์„œ๋ฒ„๊ฐ„์ด๋ฒคํŠธ๊ณต์œ 

Page 50: Amazed by aws 1st session

์‚ฌ์šฉ์ด๊ถŒ์žฅ๋˜๋Š”๊ฒฝ์šฐ

-ํ™•์žฅ๋œ๋ฐ์ดํ„ฐ๋ชจ๋ธ๊ณผํ•จ๊ป˜ KV ์ €์žฅ์†Œ๊ฐ€ํ•„์š”ํ•œ๊ฒฝ์šฐ : string, lists, sets,

sorted sets, hashes

-์บ์‹ฑ-Leader board (๋ฆฌ๋”๋ณด๋“œ)

-๊ณ ์†์˜์ •๋ ฌ-์›์ž๋‹จ์œ„์˜์นด์šดํŒ…-ํ์‹œ์Šคํ…œ์ดํ•„์š”ํ•œ๊ฒฝ์šฐ

ElastiCache โ€“ Redis

Page 51: Amazed by aws 1st session

์‚ฌ์šฉ์ด๊ถŒ์žฅ๋˜์ง€์•Š๋Š”๊ฒฝ์šฐ

-Native ํ•œ์ƒค๋”ฉ๋˜๋Š” Scale-out ์ดํ•„์š”ํ•œ๊ฒฝ์šฐ-์•„์ฃผ๋†’์€์ˆ˜์ค€์˜๋ฐ์ดํ„ฐ๋ณด์กด์„ฑ์ด์š”๊ตฌ๋˜๋Š”๊ฒฝ์šฐ-๋ฉ”๋ชจ๋ฆฌ์—์ ํ•ฉํ•˜์ง€์•Š์€๋ฐ์ดํ„ฐ๋ฅผ๋ณด์œ ํ•˜๊ณ ์žˆ๋Š”๊ฒฝ์šฐ-์˜ˆ์™ธ์ƒํ™ฉ์—์„œ๋„ํŠน์ •ํŠธ๋žœ์ ์…˜์—๋Œ€ํ•œ๋กค๋ฐฑ์ดํ•„์š”ํ•œ๊ฒฝ์šฐ

ElastiCache โ€“ Redis

Page 52: Amazed by aws 1st session

http://techblog.netflix.com/2013/02/announcing-evcache-distributed-in.html

In-memory caching solution based on memcached & spymemcached

- Ephemeral

- Volatile

- Cache (KV Store)

https://github.com/Netflix

Page 53: Amazed by aws 1st session

http://media.amazonwebservices.com/AWS_NoSQL_Couchbase.pdf

Page 54: Amazed by aws 1st session

Minimum production45GiB (20 x m1.large)

5Gbps access EBS

Up to 80,000 IOPS

Medium production410GiB

10Gbps access EBS

Up to 640,000 IOPS

Page 55: Amazed by aws 1st session

Large production360GiB (30 instances)

10Gbps access EBS

Up to 500,000 IOPS

Extra large production1.5TiB (30 instances)

20Gbps access EBS

Up to 640,000 IOPS

Page 56: Amazed by aws 1st session

https://media.amazonwebservices.com/AWS_NoSQL_MongoDB.pdf

Page 57: Amazed by aws 1st session
Page 58: Amazed by aws 1st session
Page 59: Amazed by aws 1st session
Page 60: Amazed by aws 1st session
Page 61: Amazed by aws 1st session
Page 62: Amazed by aws 1st session
Page 63: Amazed by aws 1st session
Page 64: Amazed by aws 1st session
Page 65: Amazed by aws 1st session

http://www.youtube.com/watch?v=hYtRw3Zb6AY

Cassandra + OpsWorks

Page 66: Amazed by aws 1st session
Page 67: Amazed by aws 1st session

DynamoDBProvisioned throughput NoSQL database

Fast, predictable performance

Fully distributed, fault tolerant architecture

Feature Details

Provisioned

throughput

Dial up or down provisioned read/write capacity

Predictable

performance

Average single digit millisecond latencies from

SSD backed infrastructure

Strong consistency Be sure you are reading the most up to date

values

Fault tolerant Data replicated across availability zones

Monitoring Integrated to Cloud Watch

Secure Integrates with AWS Identity and Access

Management (IAM)

Elastic MapReduce Integrates with Elastic MapReduce for complex

analytics on large datasets

Compute Storage

AWS Global Infrastructure

Database

App Services

Deployment & Administration

Networking

Page 68: Amazed by aws 1st session

DynamoDB, ์กฐ๊ธˆ๋”๊นŠ๊ฒŒ

Page 69: Amazed by aws 1st session

NoSQL ์˜์ข…๋ฅ˜

MongoDB

Riak

Hbase

Cassandra

Neo4j

CouchDB

DynamoDB

์ด์™ธ์—๋„๋”๋งŽ์€ NoSQL ์ด์กด์žฌ

Page 70: Amazed by aws 1st session

NoSQL vs. RDB

BASE ์˜ํŠน์„ฑ

๋Œ€์šฉ๋Ÿ‰๋ฐ์ดํ„ฐ

ํ™•์žฅ๊ฐ€๋Šฅ

๋น ๋ฅธ์“ฐ๊ธฐ์†๋„

์œ ์—ฐํ•œ์Šคํ‚ค๋งˆ์„ค์ •

ACID ํŠน์„ฑ- Atomicity

- Consistency

- Isolation

- Durability

ํŠธ๋žœ์ ์…˜๊ธฐ๋ฐ˜

Richํ•œ์ฟผ๋ฆฌ

์กฐ์ธ

NoSQL RDB

Page 71: Amazed by aws 1st session

BASE ํŠน์„ฑ์ด๋ž€

Basically Available, Soft state, Eventually consistent

์ฆ‰,

๋ฐ์ดํ„ฐ์˜์ฆ‰์‹œ๋ฐ˜์˜์„ํ†ตํ•œ๋†’์€์ผ๊ด€์„ฑ์„์ผ๋ถ€ํฌ๊ธฐํ•˜๋Š”๋Œ€์‹ ,

ํ™•์žฅ์„ฑ์„ํŠน์ง•์œผ๋กœ.

๋ชจ๋“  NoSQL ์ด์™„์ „ํžˆ BASE์˜ํŠน์„ฑ์„๊ฐ€์ง€์ง€๋Š”์•Š์ง€๋งŒ๊ธฐ์กด RDB

์˜ ACID ํŠน์„ฑ์„ ํฌ๊ธฐํ•ด์•ผํ•˜๋Š”๊ฒƒ์ด์š”๊ตฌ์‚ฌํ•ญ์ด๋œ๋‹ค.

Page 72: Amazed by aws 1st session

API

SDK

Database

Clie

nt S

ide

Serv

ice S

ide

Client application

DynamoDB ์˜์‚ฌ์šฉ

Page 73: Amazed by aws 1st session

ํŠน์ง•๏ผ‘๏ผš๊ด€๋ฆฌ๊ฐ€ํ•„์š”์—†๋Š”๋†’์€์‹ ๋ขฐ์„ฑ

SPOF๊ฐ€์กด์žฌํ•˜์ง€์•Š๋Š”๊ตฌ์„ฑ๋ฐ์ดํ„ฐ๋Š” 3๊ฐœ์†Œ์˜ AZ์—๋ถ„์‚ฐ์ €์žฅ๋˜์–ด๋†’์€์‹ ๋ขฐ์„ฑ์Šคํ† ๋ฆฌ์ง€๋Š”ํ•„์š”์—๋”ฐ๋ผ์ž๋™์œผ๋กœ๋ถ„์‚ฐ์ฒ˜๋ฆฌ

Client

Page 74: Amazed by aws 1st session

ํŠน์ง•๏ผ’๏ผš์ฒ˜๋ฆฌ๋Ÿ‰์„ํ”„๋กœ๋น„์ €๋‹๊ฐ€๋Šฅ

Read ๋ฐ Write, ๊ฐ๊ฐํ•„์š”ํ•œ๋งŒํผ์˜์ฒ˜๋ฆฌ์šฉ๋Ÿ‰์„ํ• ๋‹น์˜ˆ๋ฅผ๋“ค์–ด์ผ๋ฐ˜์ ์ธ Read Heavy DB ๋ผ๋ฉด

Read : 1,000

Write : 100์•ฝ๊ฐ„ Heavy ํ•œ DB์˜๊ฒฝ์šฐ

Read : 500

Write : 500์ด์„ค์ •๊ฐ’์€ DB ์šด์˜์ค‘์—์˜จ๋ผ์ธ์œผ๋กœ๋ณ€๊ฒฝ๊ฐ€๋Šฅ

Scale-down์— ๊ด€ํ•ด์„œ๋Š”ํ•˜๋ฃจ 4ํšŒ๋งŒ๊ฐ€๋Šฅ

Page 75: Amazed by aws 1st session

ํŠน์ง•๏ผ“๏ผš์ €์žฅ์šฉ๋Ÿ‰์—์ œํ•œ์ด์—†๋Š”

์‚ฌ์šฉํ•œ๋งŒํผ์ง€๋ถˆํ•˜๋Š”์ข…๋Ÿ‰์ œ์Šคํ† ๋ฆฌ์ง€๋ฐ์ดํ„ฐ์šฉ๋Ÿ‰์ฆ๊ฐ€์—๋”ฐ๋ฅธ๋…ธ๋“œ์ถ”๊ฐ€์™€๊ฐ™์€์ž‘์—…์ด๋ถˆํ•„์š”

Page 76: Amazed by aws 1st session

DynamoDB๋ฅผ์‹œ์ž‘ํ•˜๋ ค๋ฉด

1. ํ…Œ์ด๋ธ”์˜ Key ์™€ Index ๋ฅผ๊ฒฐ์ •

2. Read/Write ์ฒ˜๋ฆฌ๋Ÿ‰์„๊ฒฐ์ •

Thatโ€™s it, write your code!

Page 77: Amazed by aws 1st session

DynamoDB Demo - Tic Tac Toe Game

https://github.com/awslabs/dynamodb-tictactoe-example-app

Page 78: Amazed by aws 1st session

DynamoDB ์‚ฌ์šฉ

Page 79: Amazed by aws 1st session

์ œ๊ณต๋˜๋Š” API

PutItem

UpdateItem

GetItem

DeleteItem

Query

Scan

BatchWriteItem

BatchGetItem

CreateTable

DescribeTable

UpdateTable

DeleteTable

Page 80: Amazed by aws 1st session

์ฃผ๋กœ์‚ฌ์šฉ๋˜๋Š”๊ธฐ๋Šฅ

โ€ข Get/Put/Update/Delete/BatchGet

โ€ข Scan

์ „์ฒดํ…Œ์ด๋ธ”์„์‹น์“ธ์ด๋กœ๊ธ์–ด์˜ด

โ€ข Query

Hash + ๋ฒ”์œ„ํ‚ค๋งŒ

Page 81: Amazed by aws 1st session

๊ณต์‹ SDK ์ด์™ธ์—๋„

Perl

Net::Amazon::DynamoDB

Erlang

wagerlabs/ddb

https://github.com/wagerlabs/ddb

Go

go-dynamodb

https://github.com/fabiokung/go-dynamodb

Page 82: Amazed by aws 1st session

ํ…Œ์ด๋ธ”๋””์ž์ธ์„์œ„ํ•œ์š”์†Œ๏ผˆ๏ผ‘๏ผ‰

Table

Primary Key ๋กœ โ€Hash keyโ€ ํ˜น์€ โ€Hash key & Range keyโ€๋ฅผ์„ ํƒ๊ธฐ๋ณธํ‚ค๏ผšHash key

Hash key ๋‹จ์ฒด๋กœ๋ฐ์ดํ„ฐ๋ฅผ๊ณ ์œ ํ•˜๊ฒŒ์‹๋ณ„ํ• ์ˆ˜์žˆ๋Š”๊ฒฝ์šฐ์‚ฌ์šฉ๊ธฐ๋ณธํ‚ค๏ผšHash key & Range key

Hash key์—ํ•ด๋‹นํ•˜๋Š”์—ฌ๋Ÿฌ๋ฐ์ดํ„ฐ์—์„œ Range key ๋กœ๊ฒ€์ƒ‰๊ฐ€๋ŠฅLocal Secondary Indexes

Range key ์ด์™ธ์—ํ•„ํ„ฐ๊ฒ€์ƒ‰์„์œ„ํ•œํ‚ค๋ฅผ๊ฐ€์งˆ์ˆ˜์žˆ์ŒGlobal Secondary Indexes

๊ธฐ์กด Hash key & Range key ์™ธ๋‹ค๋ฅธ attribute ๋ฅผ key ๋กœ์ง€์ •๊ฐ€๋Šฅ

Page 83: Amazed by aws 1st session

ํ…Œ์ด๋ธ”๋””์ž์ธ์„์œ„ํ•œ์š”์†Œ๏ผˆ๏ผ’๏ผ‰

Attributes

๋ฐ์ดํ„ฐ์˜๋‚ด์šฉ. Hash key ์—ํ•ด๋‹นํ•˜๋Š” Attributes ์ด์™ธ์—๋Š”๋ฏธ๋ฆฌ์ •์˜ํ• ํ•„์š”๋Š”์—†๋‹ค. ๋˜ํ•œ๋ ˆ์ฝ”๋“œ์—์„œ Attributes ๊ฐ€๋ถˆ๊ทœ์น™ํ•˜๋”๋ผ๋„๋ฌธ์ œ์—†๋‹ค.

Attributes ํ˜•์‹

String

Number

Binary

Array of String

Array of Number

Array of Binary

Page 84: Amazed by aws 1st session

DynamoDB์˜๋ฐ์ดํ„ฐ๋ชจ๋ธ

ํ…Œ์ด๋ธ”

์•„์ดํ…œ

๊ธฐ๋ณธ ํ‚ค ์†์„ฑ

Hash key ๋˜๋Š” Hash key & Range key

Page 85: Amazed by aws 1st session

DynamoDB์˜๊ธฐ๋ณธํ‚ค

โ€ข Hash key

๊ฐ„๋‹จํ•œํ‚ค๊ฐ’

Hash ์ด๋ฏ€๋กœ์ •๋ ฌ์ดํ•„์š”์—†์Œ

โ€ข Hash key + Range key

๋ณตํ•ฉ๊ธฐ๋ณธํ‚ค

Range key ๋Š” sort ๊ฐ€์žˆ์Œ

Page 86: Amazed by aws 1st session

์ƒ˜ํ”Œ๏ผˆ๏ผ‘๏ผ‰์ƒํ’ˆ์นดํƒˆ๋กœ๊ทธ

์Šคํ‚ค๋งˆํ…Œ์ด๋ธ”๋ช… Products

์ƒํ’ˆ ID(ProductId) ๋ฅผํ…Œ์ด๋ธ”์˜ Hash key ๋กœ์‚ฌ์šฉ

ProductId

(Hash key)

ProductName Price ใƒปใƒปใƒป ใƒปใƒปใƒป

1 Pen 100 ใƒปใƒปใƒป ใƒปใƒปใƒป

2 Pencil 50 ใƒปใƒปใƒป ใƒปใƒปใƒป

3 Eraser 100 ใƒปใƒปใƒป ใƒปใƒปใƒป

Page 87: Amazed by aws 1st session

node.js SDK ์‚ฌ์šฉ์˜ˆ

๋ฐ์ดํ„ฐ๋ฅผํ…Œ์ด๋ธ”์—์ž…๋ ฅ

์ƒ˜ํ”Œ๏ผˆ๏ผ’๏ผ‰๋กœ๊ทธํ…Œ์ด๋ธ”

var data = new Array({ AudienceId: { N:"1" }, Timestamp: { S:"2013-10-01 00:01:01" }, Action: { S:"Login" } },{ AudienceId: { N:"2" }, Timestamp: { S:"2013-10-01 00:02:02" }, Action: { S:"Login" } },{ AudienceId: { N:"1" }, Timestamp: { S:"2013-10-01 00:21:00" }, Action: { S:"Login" } },{ AudienceId: { N:"1" }, Timestamp: { S:"2013-10-01 00:42:00" }, Action: { S:"ViewHoge" } },{ AudienceId: { N:"1" }, Timestamp: { S:"2013-10-01 00:56:22" }, Action: { S:"PostHoge" } }

);

for (var i =0; i < data.length; i++){dynamoDb.putItem(

{TableName:"Audience",Item: data[i]

},function(err,data){

if(err){console.log(err);

}else{console.log(data);

}}

);}

Page 88: Amazed by aws 1st session

node.js SDK ์‚ฌ์šฉ์˜ˆ

์‚ฌ์šฉ์ž์˜ 10์›” 1์ผ 0์‹œ 10๋ถ„์ดํ›„์˜๋กœ๊ทธ๋ฅผ๊ฐ€์ ธ์˜ค๊ธฐ

์ƒ˜ํ”Œ๏ผˆ๏ผ’๏ผ‰๋กœ๊ทธํ…Œ์ด๋ธ”

dynamoDb.query({

TableName:"Audience",KeyConditions: {

"AudienceId": {ComparisonOperator:"EQ",AttributeValueList:[ {N:"1"} ]

},"Timestamp": {

ComparisonOperator:"GT",AttributeValueList:[ {S:"2013-10-01 00:10:00"} ]

}}

},function(err,data){

if(err){console.log(err);

}else{console.log(data);

}}

);

Page 89: Amazed by aws 1st session

์ƒ˜ํ”Œ๏ผˆ๏ผ“๏ผ‰ LSI๋ฅผ์ ์šฉํ•œ๋กœ๊ทธํ…Œ์ด๋ธ”

์‚ฌ์šฉ์ž๋กœ๊ทธ์— Local Secondary Indexes(LSI)๋ฅผ๋ณด๋ฉด

AudienceId

(Hash key)

Timestamp

(Range key)

Action

(Action-Index)

Url ใƒปใƒปใƒป

1 2013-10-01

00:01:01

Login ใƒปใƒปใƒป ใƒปใƒปใƒป

2 2013-10-01

00:02:02

Login ใƒปใƒปใƒป ใƒปใƒปใƒป

1 2013-10-01

00:21:00

Login ใƒปใƒปใƒป ใƒปใƒปใƒป

1 2013-10-01

00:42:00

ViewHoge

1 2013-10-01

00:56:22

PostHoge

Page 90: Amazed by aws 1st session

Local Secondary Indexes๏ผˆLSI)

โ€ข Get/Put/Update/Delete/BatchGet

โ€ข Scan

ํ…Œ์ด๋ธ”์˜์ „์ฒด๋‚ด์šฉ์„๊ฐ€์ ธ์˜ด

โ€ข Query

Hash + Range ํ‚ค๋งŒ๊ฐ€์ ธ์˜ด

Local Secondary Index ๋ฅผ์‚ฌ์šฉํ•˜์—ฌ์ด์ œํ•œ์„์—†์•จ์ˆ˜์žˆ๋‹ค!

Page 91: Amazed by aws 1st session

Local Secondary Indexes (LSI)

ํ…Œ์ด๋ธ”์—์„œ์–ด๋– ํ•œ Index ๋ฅผ Query ๋กœ์‚ฌ์šฉํ• ์ง€์—๋Œ€ํ•œ์˜ˆ

5๊ฐœ์˜ LSI ์ง€์ •์ด๊ฐ€๋Šฅ

LSI์—†๋Š”ํ…Œ์ด๋ธ”์—์„œ๋Š” Range

Key๋ฅผ์‚ฌ์šฉํ•œ Query ๋งŒ๊ฐ€๋Šฅ

LastPostIndex

RepliesIndex

LSI๋ฅผ์ •์˜ํ•˜๋ฉด Key๊ฐ€์•„๋‹Œ์†์„ฑ์—๋Œ€ํ•ด์„œ๋„ Query ๊ฐ€๋Šฅ์˜ˆ๏ผš

- Replies ๊ฐ€ 10๊ฐœ์ด์ƒ- ๋งˆ์ง€๋ง‰๊ฒŒ์‹œ๋ฌผ์ด XX ์ดํ›„

LSI

Forum ๊ฒŒ์‹œ๋ฌผ์„๋ณด๊ด€ํ•˜๋Š”ํ…Œ์ด๋ธ”์˜๊ตฌ์กฐ

Page 92: Amazed by aws 1st session

์–ด์งธ์„œ โ€Localโ€ Secondary Indexes ์ธ๊ฐ€๏ผŸ

Hash key ๊ฐ€์ผ์น˜ํ•˜๋Š”๋ฒ”์œ„๋‚ด์—์„œ์˜ Secondary Index ์ด๋ฏ€๋กœ

Hash Key ๊ฐ€๋‹ค๋ฅธํ•ญ๋ชฉ์—๋Œ€ํ•ด Query ๊ฒฐ๊ณผ๋กœ๊ฐ€์ ธ์˜ฌ์ˆ˜์—†๋‹ค

RepliesIndex ๋ฅผ์‚ฌ์šฉํ•˜์—ฌ๏ผ‘๊ฐœ์˜Query๋กœ ๊ฐ€์ ธ์˜ฌ์ˆ˜์žˆ๋Š”๋ฐ์ดํ„ฐ๋Š”?

โ€ขForumName ์ด S3 ์ด๋ฉฐ, Replies

๊ฐ€ 9๊ฐœ์ด์ƒ

โ€ข๋ชจ๋“  ForumName ์—์„œReplies๊ฐ€ ๏ผ™์ด์ƒ 3๊ฐœ์˜ Hash key๊ฐ€์žˆ์œผ๋ฏ€๋กœ3 ํšŒ์˜ Query ํ•„์š”

RepliesIndex

Page 93: Amazed by aws 1st session

LSI ๋ฅผ์„ค์ •ํ•œ๊ฒฝ์šฐ์˜์‹ค์ œ๋™์ž‘

Thread ํ…Œ์ด๋ธ”์˜ LastPostDateTime์— LSI ๋ฅผ์„ค์ •ํ•˜๋ฉด,

LastPostIndex

๋ณ„๋„์˜ Index ํ…Œ์ด๋ธ”์ด๋’ค์—์„œ์ƒ์„ฑ, ๊ด€๋ฆฌ๋จ

โ€ข ์ง€์ •๋œ์†์„ฑ์ด Range-key

โ€ข ์›๋ž˜ํ…Œ์ด๋ธ”์˜ Range-key ๊ฐ€์†์„ฑ์œผ๋กœ

Page 94: Amazed by aws 1st session

์†์„ฑ์˜ํ”„๋กœ์ ์…˜Index ์šฉํ…Œ์ด๋ธ”์—์ง€์ •๋œ์†์„ฑ์„๋ณต์ œ์ €์žฅํ•˜๋Š”๊ธฐ๋Šฅ

์˜ˆ๏ผšThread ํ…Œ์ด๋ธ”์— Replies๋ฅผ LastPostIndex์—ํ”„๋กœ์ ์…˜

LastPostIndex

Query ์ˆ˜ํ–‰์‹œ Replies๋ฅผ์ทจ๋“ํ•˜๋Š”๊ฒฝ์šฐ Load ๋น„์šฉ์„์ ˆ๊ฐ์„ฑ๋Šฅํ–ฅ์ƒ ReadThroughput ์„์ ˆ์•ฝ๊ฐ€๋Šฅ

Page 95: Amazed by aws 1st session

User

(Hash)

Timestamp

(Range)

Opponent Result

Alice 2014-02-21 12:21:20 Bob Lost

Alice 2014-02-21 12:42:01 Bob Won

Alice 2014-02-24 09:48:00 Dan Won

Alice 2014-02-25 16:21:11 Charlie Won

Battle History

์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ์ „ํˆฌ ๊ธฐ๋ก์„ ํ™•์ธํ•˜๋Š” ๊ฒฝ์šฐ

โ€“ User (Alice)๊ฐ€ timestamp range-key ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ง€๋‚œ 7์ผ๊ฐ„์˜ ์ „ํˆฌ๊ธฐ๋ก์„ ํ™•์ธ

Charlie

02-25 16:21

Won!

Your Battle History

Dan

02-24 09:48

Won!

Alice

02-21 12:42

Won!

๊ฒŒ์ด๋จธ์˜ํ”Œ๋ ˆ์ด๋ฐ์ดํ„ฐ์ด๋ ฅ

Page 96: Amazed by aws 1st session

์‚ฌ์ง„๊ณต์œ  SNS ์•ฑ

Home My Posts My Profile

Bob

Steak!10:18

Carol

BBQ! w/Alice10:12

Dan

Riajueeโ€ฆ10:11

Alice

Beer!10:21

Alice

BBQ! w/Carol10:12

Alice

Starting BBQ!10:09

Name:

Alice

Mail: foo

Profile: some texts

Page 97: Amazed by aws 1st session

Users TableFriends Table

ํ…Œ์ด๋ธ” 2๊ฐœ๋ฅผ์ •์˜โ€ข ์‚ฌ์šฉ์ž์ •๋ณดํ…Œ์ด๋ธ”

โ€ข ์นœ๊ตฌ๋ชฉ๋กํ…Œ์ด๋ธ”

ํ…Œ์ด๋ธ”์„ค๊ณ„

Page 98: Amazed by aws 1st session

User

(Hash)

Nicknames

Bob [ Rob, Bobby ]

Alice [ Allie ]

Carol [ Caroline ]

Dan [ Daniel, Danny ]

Users Table

Item

Attribute

(string, number, binary, set)

Primary Key

(Hash)

์นœ๊ตฌ๋ชฉ๋ก๊ฒ€์ƒ‰

Page 99: Amazed by aws 1st session

User

(Hash)

Nicknames

Bob [ Rob, Bobby ]

Alice [ Allie ]

Carol [ Caroline ]

Dan [ Daniel, Danny ]

Friends Table

User

(Hash)

Friend

(Range)

Bob Alice

Alice Bob

Alice Carol

Alice Dan

Users Table

Hash + Range

Primary Key

์นœ๊ตฌ๋ชฉ๋ก๊ฒ€์ƒ‰

Page 100: Amazed by aws 1st session

Friends Table Users Table

User

(Hash)

Nicknames

Bob [ Rob, Bobby ]

Alice [ Allie ]

Carol [ Caroline ]

Dan [ Daniel, Danny ]

User

(Hash)

Friend

(Range)

Bob Alice

Alice Bob

Alice Carol

Alice Dan

Alice์˜์นœ๊ตฌ๋ชฉ๋ก๊ฒ€์ƒ‰1. Query (Table = Friends,

Hash = Alice, Range = *)

2. BatchGetItem(Bob, Carol, Dan)

์นœ๊ตฌ๋ชฉ๋ก๊ฒ€์ƒ‰

Page 101: Amazed by aws 1st session

Friends Table Users Table

User

(Hash)

Nicknames

Bob [ Rob, Bobby ]

Alice [ Allie ]

Carol [ Caroline ]

Dan [ Daniel, Danny ]

User

(Hash)

Friend

(Range)

Bob Alice

Alice Bob

Alice Carol

Alice Dan

Alice์˜๊ฒŒ์‹œ๋ฌผ๋ฐ์ด๋ฏธ์ง€๊ฒ€์ƒ‰1. Query (Table = Friends,

Hash = Alice, Range = *)

2. BatchGetItem(Bob, Carol, Dan)

๊ฒŒ์‹œ๋ฌผ๊ฒ€์ƒ‰

Page 102: Amazed by aws 1st session

Images Table

User

๏ผˆHash)

Image

๏ผˆRange)

Date Link

Bob aed4c 2013-10-01 s3://โ€ฆ

Bob cf2e2 2013-09-05 s3://โ€ฆ

Bob f93bae 2013-10-08 s3://โ€ฆ

Alice ca61a 2013-09-12 s3://โ€ฆ

Bob

Bob์˜๊ฒŒ์‹œ๋ฌผ๋ชฉ๋ก์„๊ฒ€์ƒ‰Query (Table=Images,

Hash= Bob,

Range=*)

๋งŒ์•ฝํŠน์ •์‹œ๊ฐ„์ดํ›„์˜์‚ฌ์ง„๋ชฉ๋ก์„๊ฐ€์ ธ์˜ค๊ณ ์‹ถ๋‹ค๋ฉด?

์ด๋ฏธ์ง€๊ฒ€์ƒ‰

Page 103: Amazed by aws 1st session

Images Table

User Image Date Link

Bob aed4c 2013-10-01 s3://โ€ฆ

Bob cf2e2 2013-09-05 s3://โ€ฆ

Bob f93bae 2013-10-08 s3://โ€ฆ

Alice ca61a 2013-09-12 s3://โ€ฆ

User Date Image

Bob 2013-09-05 cf2e2

Bob 2013-10-01 aed4c

Bob 2013-10-08 f93bae

Alice 2013-09-12 ca61a

Table ByDate Local Secondary Index

Local Secondary Index ๋ฅผ Date ์†์„ฑ์—์ ์šฉ

๋‚ ์งœ๋ฐ์‹œ๊ฐ„์ด๋ฏธ์ง€์ˆ˜์ง‘

Page 104: Amazed by aws 1st session

ImageTags Table

Image User

aed4c Alice

aed4c Bob

f93bae Alice

f93bae Bob

Image f93bae์— Alice๋ฅผํƒœ๊ทธPutItem(Table = ImageTags,

Hash = f93bae, Range = Alice)Bob

๋งŒ์•ฝ์‚ฌ์šฉ์ž๊ฐ€ํƒœ๊ทธ๋œ์ด๋ฏธ์ง€๋ชฉ๋ก์œผ๋กœ๊ฒ€์ƒ‰ํ•˜๊ณ ์žํ•œ๋‹ค๋ฉด?

Image f93bae์—ํƒœ๊ทธ๋œ์‚ฌ์šฉ์ž๋ชฉ๋กQuery(Table = ImageTags,

Hash = f93bae, Range = *)

์ด๋ฏธ์ง€์—์‚ฌ์šฉ์ž๋ฅผํƒœ๊ทธ

Page 105: Amazed by aws 1st session

ImageTags Table

User Image์˜ Range ๋ฅผGlobal Secondary Index ๋กœ์ ์šฉ

User

(Hash)

Image

(Range)

Bob aed4c

Bob f93bae

Alice aed4c

Alice f93bae

ByUser Global Secondary Index

Image

(Hash)

User

(Range)

aed4c Alice

aed4c Bob

f93bae Alice

f93bae Bob

Table

Bob

Alice ๊ฐ€ํƒœ๊ทธ๋œ์‚ฌ์ง„๋ชฉ๋ก

์‚ฌ์šฉ์ž์˜ํƒœ๊ทธ์ด๋ฏธ์ง€๋ชฉ๋ก

Page 106: Amazed by aws 1st session

ํ…Œ์ด๋ธ”๋””์ž์ธ: ๊ธฐ๋ณธํ‚ค์˜์‚ฌ์šฉHash key์™€ Range key์˜๊ฐœ๋…

A,D B,E C,F

1

23

45

67

89

Parition1 Partition2 Parition3

Range keyPartition๋‚ด์—์„œ ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋ฅผ ๋ณด์žฅ

Hash keyPartition๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๋ถ„์‚ฐ์— ์ด์šฉ๋˜๋Š”key

DynamoDB์˜ ์ฒ˜๋ฆฌ๋Ÿ‰์€ ๊ฐPartition์— ๋ถ€ํ•˜๊ฐ€ ์ ์ ˆํžˆ ๋ถ„์‚ฐ๋˜์—ˆ์„๋•Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค๊ณ„๋˜์–ด ์žˆ๋‹ค. ํ•˜๋‚˜์˜ Partition ์œผ๋กœ ํ”„๋กœ๋น„์ €๋‹๋œ ์ฒ˜๋ฆฌ๋Ÿ‰์ด๋‚˜์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹˜์— ์ฃผ์˜

Page 107: Amazed by aws 1st session

A,D B,E C,F

1

23

45

67

89

Parition1 Partition2 PartitionN

Partition

DynamoDB ๋Š”ํ”„๋กœ๋น„์ €๋‹๋œ์ฒ˜๋ฆฌ๋Ÿ‰์„๋ณด์žฅํ•˜๊ธฐ์œ„ํ•ด๋ฐ์ดํ„ฐ๋ฅผ์—ฌ๋ŸฌํŒŒํ‹ฐ์…˜์—๋ถ„์‚ฐ์ €์žฅํ•œ๋‹ค.

Partition์€์ €์žฅ๋œ๋ฐ์ดํ„ฐ๋Ÿ‰๊ณผํ”„๋กœ๋น„์ €๋‹ํ•œ์ฒ˜๋ฆฌ๋Ÿ‰์—์˜ํ•ด์ž๋™์œผ๋กœ๋‹ค์‹œํŒŒํ‹ฐ์…”๋‹ํ•œ๋‹ค.

์ง€๊ธˆํ˜„์žฌ์˜ํŒŒํ‹ฐ์…˜์ˆ˜๋ฅผํ™•์ธํ•˜๋Š”๊ฒƒ์€๋ถˆ๊ฐ€๋Šฅ

ํ…Œ์ด๋ธ”๋””์ž์ธ: ๊ธฐ๋ณธํ‚ค์˜์‚ฌ์šฉ

Page 108: Amazed by aws 1st session

A,D B,E C,F

1

23

45

67

89

Parition1 Partition2 ParitionN

์ฒ˜๋ฆฌ๋Ÿ‰์€ํŒŒํ‹ฐ์…˜์—๊ท ๋“ฑํ•˜๊ฒŒ๋ถ„ํ• ๋œ๋‹ค.

ํ”„๋กœ๋น„์ €๋‹๋œ์ฒ˜๋ฆฌ๋Ÿ‰์€๊ฐํŒŒํ‹ฐ์…˜์—๊ท ๋“ฑํ•˜๊ฒŒ๋ถ„ํ• ๋˜๋ฉฐ, ๊ฐํ•ฉ์€์ง€์ •ํ•œ์ฒ˜๋ฆฌ๋Ÿ‰์ด๋‚˜์˜ค๋„๋ก์„ค๊ณ„๋˜์–ด์žˆ๋‹ค.

๋”ฐ๋ผ์„œ์—‘์„ธ์Šคํ‚ค์—ํŽธํ–ฅ์ด๋ฐœ์ƒํ• ๊ฐ€๋Šฅ์„ฑ์ด๋งŽ์€๊ตฌ์กฐ๋กœํ…Œ์ด๋ธ”์ด์„ค๊ณ„๋˜์–ด์žˆ๋‹ค๋ฉด์›ํ•˜๋Š”๋งŒํผ์„ฑ๋Šฅ์ด๋‚˜์˜ค์ง€์•Š์„๊ฐ€๋Šฅ์„ฑ์ด์žˆ์œผ๋ฏ€๋กœ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค.

ํ”„๋กœ๋น„์ €๋‹๋œ์ฒ˜๋ฆฌ๋Ÿ‰ : x

x/N x/N x/N

ํ…Œ์ด๋ธ”๋””์ž์ธ: ๊ธฐ๋ณธํ‚ค์˜์‚ฌ์šฉ

Page 109: Amazed by aws 1st session

ํ…Œ์ด๋ธ”๋””์ž์ธ: ๊ธฐ๋ณธํ‚ค์˜์‚ฌ์šฉ

Hot Key๋ฌธ์ œ ๏ผšํŠน์ • Hash key์—๋ฐ์ดํ„ฐ๊ฐ€์ง‘์ค‘๋˜๋ฉด์„ฑ๋Šฅ์ด์ €ํ•˜๏ผˆ์˜ˆ์ƒ๋Œ€๋กœ์˜์„ฑ๋Šฅ์ด์•„๋‹˜๏ผ‰๋จ์—์ฃผ์˜

์œ„์˜ Audience ํ…Œ์ด๋ธ”์—์„œ AudienceId์ฒ˜๋Ÿผ๋ฐ์ดํ„ฐ๊ฐ€ํŠน์ •ํ‚ค์—์ง‘์ค‘ํ•˜๊ธฐ์–ด๋ ค์šด๊ฒƒ์„์„ ํƒํ•œ๋‹ค

์˜ˆ๋ฅผ๋“ค์–ด,ใ€Œ๋…„์›”ใ€๊ณผ๊ฐ™์ด๋ฐ์ดํ„ฐ์˜์ง‘์ค‘์ด๋ฐœ์ƒํ•˜๊ธฐ์‰ฌ์šด๋ฐ์ดํ„ฐ๋ฅผ Hash key๋กœ์„ ํƒํ•˜๋Š”๊ฒƒ์€์•ˆํ‹ฐํŒจํ„ด

Page 110: Amazed by aws 1st session

ํ…Œ์ด๋ธ”๋””์ž์ธ: LSI

Local Secondary Indexes๋Š”์ €์žฅ์†Œ์™€ IO ๋น„์šฉ์ฆ๊ฐ€๋ฅผ๋ฐœ์ƒ์‹œํ‚ฌ์ˆ˜์žˆ์Œ

LSI๋Š”์†Œ์œ„ โ€œProjectionโ€์—์„œ๊ตฌํ˜„๋œ๋‹ค

๋”ฐ๋ผ์„œ Projection ๋˜๋Š”์†์„ฑ์ด๋งŽ์„์ˆ˜๋ก์Šคํ† ๋ฆฌ์ง€๋น„์šฉ์ด์ฆ๊ฐ€

Write์‹œ์“ฐ๊ธฐ๋น„์šฉ์—ญ์‹œ์ฆ๊ฐ€

๋ฐ˜๋“œ์‹œํ•„์š”ํ•œ์กฐ๊ฑด์—๋งŒ LSI ๋ฅผ์‚ฌ์šฉProjection์ดํ•„์š”ํ•œ Attributes๋งŒ์„ ํƒํ•˜๋„๋กํ•œ๋‹ค

Page 111: Amazed by aws 1st session

DynamoDB Local

๊ฐœ๋ฐœ๋ฐํ…Œ์ŠคํŠธ์šฉ๋„๊ตฌ

์ด์ „๊นŒ์ง€๋Š”๊ฐœ๋ฐœ๋ฐํ…Œ์ŠคํŠธ๋ฅผ์œ„ํ•ด์„œ๋Š”๋ฐ˜๋“œ์‹œ DynamoDBํ…Œ์ด๋ธ”์„์ƒ์„ฑํ•ด์•ผํ–ˆ๋‹ค. ์ด๋Š” โ€๋น„์šฉ๋ฐœ์ƒ์˜์šฐ๋ คโ€ใ€โ€๋‚ด๋ถ€ํ…Œ์ŠคํŠธํ™˜๊ฒฝ๊ตฌ์„ฑ๋ถˆ๊ฐ€โ€ใ€โ€์˜คํ”„๋ผ์ธ์œผ๋กœ๊ฐœ๋ฐœ๋ถˆ๊ฐ€๋Šฅโ€๊ณผ๊ฐ™์€๋ฌธ์ œ๊ฐ€์žˆ์—ˆ์Œ

์ด๋„๊ตฌ๋ฅผ์‚ฌ์šฉํ•˜์—ฌ๊ฐœ๋ฐœ๋ฐํ…Œ์ŠคํŠธ๋ฅผ๋ณด๋‹คํŽธ๋ฆฌํ•˜๊ฒŒ์ˆ˜ํ–‰ํ• ์ˆ˜์žˆ์ŒJARํŒŒ์ผ๋กœ์ œ๊ณต๋˜์–ด๋กœ์ปฌ์—์„ค์น˜๋ฐ์‹คํ–‰๊ฐ€๋Šฅ (Java7)๋‹จ์ˆœํžˆ API์˜๊ธฐ๋Šฅ์žฌํ˜„์„์œ„ํ•œํ…Œ์ŠคํŠธ์šฉ๋„๊ตฌ์ด๊ธฐ๋•Œ๋ฌธ์—์„œ๋น„์Šคํ™˜๊ฒฝ์—๋Š”์‚ฌ์šฉ์ด๋ถˆ๊ฐ€๋Šฅํ”„๋กœ๋น„์ „๋œ์ฒ˜๋ฆฌ๋Ÿ‰์€๋ฐ˜์˜๋˜์ง€์•Š์œผ๋ฏ€๋กœ์ฃผ์˜์ž์„ธํ•œ๋‚ด์šฉ์€ AWS document ๋ฅผ์ฐธ์กฐ

Page 112: Amazed by aws 1st session

Amazon EMR์˜ Hive ์—์„œ์‚ฌ์šฉ

CREATE EXTERNAL TABLE Audience

( AudienceId Int, ActionTimestamp string, Action string )

STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler'

TBLPROPERTIES (

"dynamodb.table.name" = โ€Audience2",

"dynamodb.column.mapping" =

โ€AudienceId:AudienceId,

ActionTimestamp:Timestamp,

Aciton:Actionโ€œ );

hive์˜ External Table๋กœ์ด์šฉ๊ฐ€๋ŠฅDynamoDB์˜๋ฐ์ดํ„ฐ์ง‘๊ณ„๋“ฑ์ดํ•„์š”ํ•œ๊ฒฝ์šฐ๋“ฑ์—์ด์šฉ

์ž์„ธํ•œ๋‚ด์šฉ์€http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/EMR_Interactive_Hive.html

Page 113: Amazed by aws 1st session

hive๋ฅผ์‚ฌ์šฉํ•˜์—ฌ S3์—๋ฐ์ดํ„ฐ๋ฐฑ์—…

EMR์—์„œ hive๋Š” DynamoDB๋ฟ๋งŒ์•„๋‹ˆ๋ผ S3 ์—ญ์‹œ External Table ์‚ฌ์šฉํ• ์ˆ˜์žˆ๋Š”์žฅ์ ์„์‚ด๋ ค DynamoDB ๋ฅผ External Table ๋กœ Selectํ•œ๋ฐ์ดํ„ฐ๋ฅผ๋‹ค์‹œ S3 ์˜External Table๋กœ Insert ๊ฐ€๋Šฅ

INSERT OVERWRITE TABLE

s3_as_external_table

SELECT *

FROM dynamodb_as_external_table;

Page 114: Amazed by aws 1st session

Redshift ์˜ COPY ๋ฅผ์‚ฌ์šฉํ•ด๋ฐ์ดํ„ฐ๋ฅผ๋กœ๋“œ

์ž์„ธํ•œ๋‚ด์šฉ์€http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/R

edshiftforDynamoDB.html

Amazon Redshift ์—๋ฐ์ดํ„ฐ๋กœ๋”ฉ

COPY audience

FROM โ€˜dynamodb://Audience2โ€™

CREDENTIALS

'aws_access_key_id=<Your-Access-Key-ID>;aws_secret_access_key=<Your-Secret-Access-Key>'

READRATIO 50;

Page 115: Amazed by aws 1st session

http://www.youtube.com/watch?v=Dh8kp1AcRg0

Page 116: Amazed by aws 1st session
Page 117: Amazed by aws 1st session
Page 118: Amazed by aws 1st session

https://github.com/Aconex/scrutineer

-์˜คํ”ˆ์†Œ์Šค : elasticsearch.com ํ†ตํ•ด์„œํฌํŠธ๊ฐ€๊ฐ€๋Šฅ-๋ถ„์‚ฐ๊ฒ€์ƒ‰์—”์ง„-ํด๋Ÿฌ์Šคํ„ฐ๋งํ˜•ํƒœ๋กœ๊ตฌ์„ฑ์ด๊ฐ€๋Šฅ-๊ณ ๊ฐ€์šฉ์„ฑ-๋‹ค์ค‘์‚ฌ์šฉ์žํ™˜๊ฒฝ

Page 119: Amazed by aws 1st session

https://github.com/kzwang/elasticsearch-river-dynamodb

River

Page 120: Amazed by aws 1st session

http://docs.couchbase.com/couchbase-elastic-search/

Page 121: Amazed by aws 1st session

http://www.elasticsearch.org/guide/en/elasticsearch/reference/0.9

0/modules-gateway-local.html

http://www.elasticsearch.org/guide/en/elasticsearch/reference/0.9

0/modules-gateway-s3.html

Page 122: Amazed by aws 1st session
Page 123: Amazed by aws 1st session

์‚ฌ์šฉ์ด๊ถŒ์žฅ๋˜๋Š”๊ฒฝ์šฐ

-๊ฒ€์ƒ‰์—๋Œ€ํ•ด๋‚ด๊ฐ€์ „๋ฌธ์„ฑ์ด์—†๋‹ค๊ณ ํŒ๋‹จ๋˜๋Š”๊ฒฝ์šฐ-Full-text ๊ฒ€์ƒ‰์ดํ•„์š”ํ•œ๊ฒฝ์šฐ-๋žญํ‚น-๊ฒ€์ƒ‰-๊ตฌ์กฐํ™”๋œ๋ฐ์ดํ„ฐ์™€๊ตฌ์กฐํ™”๋˜์ง€์•Š์€๋ฐ์ดํ„ฐ๊ฐ€ํ˜ผ์žฌํ•˜๋Š”๊ฒฝ์šฐ

CloudSearch

Page 124: Amazed by aws 1st session

์‚ฌ์šฉ์ด๊ถŒ์žฅ๋˜์ง€์•Š๋Š”๊ฒฝ์šฐ

-๋‹ค์ˆ˜์˜์•„์ดํ…œ๋˜๋Š” row ๋ฐ์„œ๋กœ๋‹ค๋ฅธํ…Œ์ด๋ธ”์ฐธ์กฐํŠธ๋žœ์žญ์…˜์ดํ•„์š”ํ•œ๊ฒฝ์šฐ-๋ณต์žกํ•œ์ฟผ๋ฆฌ๋ฐ์กฐ์ธ์ดํ•„์š”ํ•œ๊ฒฝ์šฐ-๋กœ๊ทธ์„ฑ๋ฐ์ดํ„ฐ์—๋Œ€ํ•œ์‹ค์‹œ๊ฐ„๋ถ„์„์ดํ•„์š”ํ•œ๊ฒฝ์šฐ-์ž์ฃผ์ฐธ์กฐ๋˜์ง€์•Š๋Š”๋ฐ์ดํ„ฐ๋ฅผ์ €์žฅํ•˜๊ณ ์žํ•˜๋Š”๊ฒฝ์šฐ

CloudSearch

Page 125: Amazed by aws 1st session

http://www.youtube.com/watch?v=mdj8RQhqOEg

Page 126: Amazed by aws 1st session

Write once

Read many then,

s3://mys3database/HASHasFILENAME.JSON

Page 127: Amazed by aws 1st session

S3 - Durable storage, any object99.999999999% durability of objects

Unlimited storage of objects of any type

Up to 5TB size per object

Feature Details

Flexible object store Buckets act like drives, folder structures within

Access control Granular control over object permissions

Server-side

encryption

256bit AES encryption of objects

Multi-part uploads Improved throughput & control

Object versioning Archive old objects and version new ones

Object expiry Automatically remove old objects

Access logging Full audit log of bucket/object actions

Web content

hosting

Serve content as web site with built in page

handling

Notifications Receive notifications on key events

Import/Export Physical device import/export service

Compute Storage

AWS Global Infrastructure

Database

App Services

Deployment & Administration

Networking

Page 128: Amazed by aws 1st session

1. RDBMS ๋งŒ์œผ๋กœ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ๋Š”ํ•œ๊ณ„๊ฐ€์žˆ๋‹ค.

2. NoSQL ๋งŒ์œผ๋กœ๋Š” Rich Query ๋ฅผ์ˆ˜ํ–‰ํ• ์ˆ˜์—†๋‹ค.

3. ๋ถ„์‚ฐํ™˜๊ฒฝ์—์ ํ•ฉํ•œ๊ฒŒ์ž„์„œ๋ฒ„๊ตฌ์กฐ๋ฅผ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค.

1. RDBMS ์˜์‚ฌ์šฉ๋น„์œจ์ถ•์†Œ, ์ƒค๋”ฉ๊ตฌ์กฐํ™•๋ฆฝ2. NoSQL + Search engine ์˜ํ˜ผํ•ฉ์‚ฌ์šฉ3. RPC, Coroutine (yield)๊ณผ๊ฐ™์€๊ธฐ๋ฒ•์˜์ ๊ทน์‚ฌ์šฉ4. Tight coupled ์˜๋ฐฉ๋ฒ•๋ณด๋‹ค๋Š” Loosely coupled ์˜๊ตฌํ˜„5. Pub/Sub ์„ํ†ตํ•œ์„œ๋ฒ„๊ฐ„๋ฉ”์„ธ์ง€์ „๋‹ฌ

Summary

Page 129: Amazed by aws 1st session

aws.amazon.com/ko/game-hosting