[AWS] DynamoDB: Effective Dynamo
DynamoDB๋ฅผ ์ฑ๋ฅ/๋น์ฉ ํจ์จ์ ์ผ๋ก ์ค๊ณํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ ์ ๋ฆฌํด๋ณธ๋ค.
์จ๋๋งจ๋ VS ํ๋ก๋น์ ๋
DynamoDB์ ๊ฐ์ฅ ํฐ ์ฅ์ ์, ์จ๋๋งจ๋๊ฐ ์ค์ ์ฌ์ฉ๋์ ๊ธฐ๋ฐ์ผ๋ก๋ง ๋น์ฉ์ด ์ฒญ๊ตฌ๋๋ค๋ ๊ฒ์ด๋ค. ์ฌ์ฉ๋์ ๋ง์ถฐ์ ์๋์ผ๋ก ํ์ฅ๋๋ฉฐ, ์ฌ์ฉํ์ง ์๊ฑฐ๋ ๋ฌด๋ฃ ์ฌ์ฉ๋ ์ด๋ด์์๋ง ์ด๋ค๋ฉด ๋น์ฉ์ด ๊ฑฐ์ $0๋ก ๋์จ๋ค.
์ด์์ ์ธ ์๋ฒ๋ฆฌ์ค ์์คํ
์ ๋ํ์ ์ธ ์๋ผ๊ณ ํ ์ ์๋ค.
์ฌ์ฉ๋์ด ์ผ์ ํ๋ค๋ฉด ํ๋ก๋น์ ๋์ด ๋์ ์๋ ์์ง๋ง, ์จ๋๋งจ๋ ๋ชจ๋๊ฐ SPIKE ํธ๋ํฝ ๋ฑ์ ์ฒ๋ฆฌํ๊ธฐ์ ๋ ์ฉ์ดํ๋ค.
๊ทธ๋์ ๋๋ ์จ๋๋งจ๋๋ฅผ ์ข ๋ ๊ถ์ฅํ๋ค. ์จ๋๋งจ๋๋ฅผ ์จ๋ณด๋ค๊ฐ ์ฌ์ฉ๋์ด ์ผ์ ํ ๊ฒ ๊ฐ๋ค๋ฉด ๊ทธ๋ ํ๋ก๋น์ ๋์ผ๋ก ์ ํํด๋ ๋๋ค. ํ๋ก๋น์ ๋์ด ์ด์์ ์ธ ๊ฒฝ์ฐ์๋ ์ต๋ 6-7๋ฐฐ ์ ๋ ์ ๋ ดํ ์ ์๋ค.
์ฒ๋ฆฌ๋ ์ ํ
DynamoDB๋ ๊ฑฐ์ ๋ฌด์ ํ์ผ๋ก ์ฒ๋ฆฌ๋์ ํ์ฅํ ์ ์์ง๋ง, ์ง์ง ๋ฌด์ ํ์ ์๋๋ค. ์ ํ์ฌํญ๋ค์ด ์ข ์์ด์ ์ด๊ฑธ ์ข ๊ฐ์ํ๊ณ ์ฌ์ฉํด์ผ ํ๋ค.
ํ๋ก๋น์ ๋ ๋ชจ๋๋ผ๋ฉด ์ํ๋ ๋งํผ ์ฒ๋ฆฌ๋์ ์ง์ ํ ์ ์๊ณ , ์จ๋๋งจ๋๋ฅผ ์ฌ์ฉํ๋ค๋ฉด 4000 WCU๋ถํฐ ์์ํด์ ์์ฒญํ๋ค๋ฉด ์ํ๋ ๋งํผ ๋ฌด์ ํ์ผ๋ก ์ฒ๋ฆฌ๋ ์ ํ์ ๋๋ฆฌ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
ํ์ง๋ง ํํฐ์
๋จ์๋ก๋ ๋๋ฆด ์ ์๋ ์ ํ์ด ์๋ค. (3000 RCU, 1000 WCU) <- ์ค์ํ๋ค.
ํ ๋น๋ ๋๋ฆฌ๊ธฐ
DynamoDB๋ ๊ณ์ ์์ค์์ ์ต๋ ์ฒ๋ฆฌ๋์ ์ ํ์ด ๊ฑธ๋ ค์๋ค.
๋๋ ค๋ฌ๋ผ๊ณ ์์ฒญํ๋ฉด ๋๋ ค์ฃผ๋๊น, ๋ถํ๊ฐ ๋ง์ ๊ฒ ๊ฐ๋ค๋ฉด ์๋ฉ ์ฌ๋ ค๋๋๊ฒ ์ข๋ค.
์์ฒญํ๋ฉด ๋๋ ค์ค๋ค.
ํํฐ์ ๊ตฌ์กฐ์ ํซ ํํฐ์
DynamoDB๋ ๊ธฐ๋ณธ์ ์ผ๋ก, CassandraDB์ ๋น์ทํ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ณ ์๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
"ํํฐ์
ํค"์ "์ ๋ ฌ ํค"๋ก ๊ตฌ์ฑ๋๋๋ฐ, "ํํฐ์
ํค"๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ค ํํฐ์
์ ๋ถ์ฐํด์ ์ ์ฅํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ค.

DynamoDB ์์ฒด๋ ์ฝ๊ธฐ/์ฐ๊ธฐ ์ฒ๋ฆฌ๋์ ๋ฌด์ ํ์ผ๋ก ํ์ฅํ ์ ์์ง๋ง, ํํฐ์
๋จ์๋ก๋ ์ ํ์ด ์๋ค.
ํํฐ์
๋ณ ์ด๋น 3000 RCU, 1000 WCU ์ ๋๋ก HARD LIMIT์ด ๊ฑธ๋ ค์๊ณ , ๋ง์ฝ ํน์ ํํฐ์
์๋ง ์์
์ด ๋ชฐ๋ฆฐ๋ค๋ฉด ์คํ ํ๋ง์ด ๊ฑธ๋ฆฌ๊ฒ ๋๋ค.
๊ทธ๋์ ๊ณ ๋ถํ ์์คํ
์์๋ ๋จ์ผ ํํฐ์
์ ๊ณผํ ์์
์ด ๋ชฐ๋ฆฌ์ง ์๋๋ก ๋ถ์ฐํ๋ ๊ฒ์ด ์ค์ํด์ง๋ค.
์ฐ๊ธฐ ์ต์ ํ: ํํฐ์ ์ค๋
๋ถํ๋ฅผ ๋ถ์ฐ์ํค๊ณ ์ฒ๋ฆฌ๋์ ์ง์ง ๋ฌด์ ํ์ผ๋ก ๋๋ ค์ผ ํ๋ค๋ฉด, ํํฐ์ ํค๋ฅผ A#1, A#2 ๊ฐ์ ์์ผ๋ก ๋ง๊ฐ์กฐํด์ ๊ณ ๋ฅด๊ฒ ๋ถ์ฐ์ํค๋ ๊ผผ์๊ฐ ํ์ํด์ง๋ค.
https://aws.amazon.com/ko/blogs/tech/alipeople-modernization-1/
์ด๊ฑธ ํํฐ์
์ค๋ฉ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ค๋ ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ํํฐ์
ํค๋ฅผ ๋์ ์ผ๋ก ๋ง๋ค๊ณ ์ง์ด๋ฃ๋ ๊ฒ์ด๋ค.
์ด๋ฌ๋ฉด ๋ค์ ์ค๋ ๋จ์๋ก ํํฐ์
์ด ๋ถ์ฐ๋๊ธฐ ๋๋ฌธ์, ํซ ํํฐ์
ํ์์ ์ํํ ์ ์๋ค.
๋ค๋ง ์ด๋ฌ๋ฉด ์ฝ์๋ ์ฒ๋ฆฌ๊ฐ ๊ต์ฅํ ๋ถํธํด์ง๋ค๋ ๋จ์ ์ด ์๋ค...
Bulk Write: BatchWriteItem API
๋น์ฐํ์ง๋ง, ์ฐ๊ธฐ๋ฅผ ํ๋์ฉ ํ๋๊ฒ๋ณด๋จ ๋ฌถ์ด์ ํ๋ ๊ฒ์ด ๋น ๋ฅด๋ค.
DynamoDB๋ ๋ฐฐ์น ์ฐ๊ธฐ API๋ฅผ ์ ๊ณตํ๋ฉฐ, ์ด๊ฑธ ์ฐ๋ฉด ์ข ๋ ๋น ๋ฅด๊ฒ ๋๋ ์ฐ๊ธฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
๊ทผ๋ฐ ์ ์ํด์ผํ ์ ์, ์ด๊ฑธ ์ด๋ค๊ณ ํด์ ์ฒ๋ฆฌ๋์ ๋๋ฆด ์ ์๋ ๊ฒ์ ์๋๋ผ๋ ๊ฒ์ด๋ค. 10๊ฐ๋ฅผ Batch๋ก ๋์์ ์ฐ๋ ๊ฒ๊ณผ, 1๊ฐ๋ฅผ 10๋ฒ์ฉ ๋ ๋ฆฌ๋ ๊ฒ์ ๋์ผํ WCU๋ฅผ ์๋ชจํ๋ค.
๋ ๋น ๋ฅด๊ฒ ๋ฃ๊ธฐ ๋๋ฌธ์ WCU๋ฅผ ์๋ชจํด์ ๋ ๋น ๋ฅด๊ฒ ์คํ ๋ฅผ๋ง์ด ๊ฑธ๋ฆด ์๋ ์๋ค.
warm throughput ์ค์
๋ค์ด๋๋ชจ์๋ ์ ์ค๋ฃจํ์ด๋ผ๋ ๊ฒ์ด ์๋ค.
๋ค์ด๋๋ชจ๋ฅผ SPIKE ํธ๋ํฝ์ ๊ฐ๋นํ๊ธฐ ์ํด์ ์๋์ผ๋ก ์ค์ผ์ผ์์์ ํ์ง๋ง, ๋๋ ์ด๊ฐ ์๋ค๋ณด๋ ๊ฒฝ์ฐ์ ๋ฐ๋ผ์๋ ์ค๋กํ๋ง์ด ๊ฑธ๋ฆด ์๋ ์๋ค.
์ ์ค๋ฃจํ์ ๊ทธ๊ฑธ ์ํ ์ธ๋ถ ์กฐ์ ์ต์
์ด๋ค.
๋ฏธ๋์ ์คํ์ดํฌ ํธ๋ํฝ์ ์์ํด์ "์ด ์ ๋ ๊ฐ์๊ธฐ ํ ์ธ ์ ์์ ๊ฒ ๊ฐ๋ค"๊ณ ์๋ ค์ฃผ๋ ๊ฒ์ด๋ค.
๊ธฐ๋ณธ๊ฐ์ ์ด๋ ๊ฒ ๋์ด์๋๋ฐ, ์ค์ ๋ก ํธ๋ํฝ์ด ๋์ด๋๋ค๋ฉด ์๋์ผ๋ก ์ฆ๊ฐํ๋ค.
๊ทธ๋ฆฌ๊ณ ํ๋ฒ ์ฌ๋ผ๊ฐ ๊ฐ์ ๋ด๋ ค๊ฐ์ง ์๋๋ค.
ํ์ง๋ง ์ง์ ๊ฐ์ ์ฌ๋ ค๋์ ์๋ ์๋๋ฐ, ๊ทธ๋ฌ๋ฉด ๋์ค์ SPIKE ํธ๋ํฝ์ด ๋ค์ด์๋ ์ค์ผ์ผ๋ง ๋๋ ์ด๋ฅผ ์ ๊ฒ ๊ฐ์ ธ๊ฐ๋ฉด์ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค. ๊ทธ ๋์ ์ถ๊ฐ ๋น์ฉ์ด ๋ฐ์ํ๋ค.
๋ค๋ง ์ด๊ฒ ์ง์ง ์ค์ผ์ผ๋ง์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ํ๋๊ฑด ์๋๊ณ , ๋ฏธ๋ฆฌ ์ค๋น๋ง ํ๋ ๋๋์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๋น์ฉ์ ์ผ๋ก ๊ทธ๋ ๊ฒ ๋ถ๋ด์ด ๋์ง ์๋๋ค. ๋๋ฆฐ๋ค๊ณ ํด์ ๋น์ฉ์ด ๊ณ์ ๋์ ๋๋๊ฑด ์๋๊ณ , ์ผํ์ฑ ๋น์ฉ์ด๋ค.
์๋์ผ๋ก ์ฆ๊ฐ์ํจ ์ ๋๋น USD 0.00013 ์ ๋๋ฅผ ๋ฏ๊ณ ๋๋๋ค.
๋ณต์กํ ์ฝ๊ธฐ
๋ณต์กํ ํํฐ๋ง ๊ธฐ๋ฅ์ด๋ ์ง๊ณ ๋ฑ์ด ํ์ํด์ง๋ค๋ฉด, ์ฌ์ค ๊ทธ๊ฑด DynamoDB์ ๋ง์ง ์๋ ์ ๊ทผ๋ฒ์ด๋ค. ๋ค์ด๋๋ชจ๋ ํํฐ์ ๋จ์๋ก๋ง ์ ๊ทผํด์ ์กฐํํ๋ ๊ฒ์ ์ต์ ํ๋์ด์๋ค. ๊ทธ ์์ญ์ ๋ฒ์ด๋๋ค๋ฉด, ์ฑ๋ฅ์ ์ผ๋ก๋, ๋น์ฉ์ ์ผ๋ก๋ ๋ณ๋ก ์ข์ง๋ ์๋ค.
๋คํํ DynamoDB๋ ๋ค๋ฅธ ์์คํ ๊ณผ์ ํตํฉ์ด ๊ฝค ์ ์ค๊ณ๋์ด์์ด์, DynamoDB๋ฅผ ๋ฐ์ดํฐ ์์ค๋ก ์ผ๊ณ ์ค์ ๋ณต์กํ ์กฐํ๋ ๋ค๋ฅธ ์์คํ ์ผ๋ก ๋ถ์ด์ ๋๋ฆฌ๋ ์ฌ์ฉ ํจํด์ด ๊ฝค ๊ด์ฐฎ์ ์ ์๋ค.
๋ํ ๋ฐ์ดํฐ์
์ ๋ํ ์ง๊ณ๊ฐ ํ์ํ๋ค๋ฉด Athena์์ ์กฐํฉ์ด ์๋นํ ์ข๋ค.
https://blog.naver.com/sssang97/224294652868
๋น์ฉ ์ต์ ํ
DynamoDB๋ ๋น์ฉ์ ์ค์ผ ์ ์๋ ์๋จ์ ๋ช๊ฐ์ง ์ ๊ณตํ๋ค.
Saving Plan
๊ฐ์ฅ ๊ฐ๋จํ ๋น์ฉ ์ ๊ฐ์์ Saving Plan For Database๊ฐ ์๋ค.
๋ฏธ๋ฆฌ ์ํ๋ ๋งํผ ๋ฌ๋ฌ๋ฅผ ์ ๊ฒฐ์ ํด๋๋ฉด, ๊ฑฐ๊ธฐ์ ์ฐจ๊ฐํ๋ฉด์ ํ ์ธ์ ํด์ฃผ๋ ํํ๋ค.
์จ๋๋งจ๋์ ๊ฒฝ์ฐ์๋ 18% ์ ๋ ๊น์์ค๋ค.
https://aws.amazon.com/ko/savingsplans/database-pricing/
Table Class - IA(Infrequent Access) Class
DynamoDB๋ S3์ฒ๋ผ ์คํ ๋ฆฌ์ง ๊ณ์ธต์ด ๋๋์ด์๋ค.
์ด๋ ๊ฒ ํ ์ด๋ธ ์์ฑ ๋จ๊ณ์์ ์ ํํ ์ ์๋ค.
IA๋ผ๋ ์คํ ๋ฆฌ์ง๋ฅผ ์ ํํ๋ฉด, ์คํ ๋ฆฌ์ง ๋น์ฉ์ด ์ข ๋ ์ ๋ ดํ ๋์ ์ฝ๊ธฐ/์ฐ๊ธฐ ๋น์ฉ์ด ๋น์ธ์ง๋ค.
๊ทธ๋์ ๋ฐ์ดํฐ ์์ด ๋ง์ง๋ง ์ฝ๊ธฐ/์ฐ๊ธฐ๊ฐ ๋ง์ง ์์ ๋ฐฑ์
ํ ๋ฐ์ดํฐ์ ๋ ์ ์ ํ๋ค.
IA๋ฅผ ์ฐ๋ฉด ์ ์ฅ๋น์ฉ์ด ๊ธฐ์กด ๋๋น 2.5๋ฐฐ์ฏค ์ ๋ ดํด์ง๋ค.

๋์ ์ฝ๊ธฐ/์ฐ๊ธฐ ๋น์ฉ์ 1.2๋ฐฐ์ฏค ๋น์ธ๋ค.

TTL
๋ค์ด๋๋ชจ๋ TTL ๊ธฐ๋ฐ์ ์ญ์ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ค.
์์์ฑ์ด ํ์ํ ๋ฐ์ดํฐ๊ฐ ์๋๋ผ๋ฉด ์ด๊ฑธ ์ฌ์ฉํด์ ์คํ ๋ฆฌ์ง๋ฅผ ์ ์ฝํ๋ ๊ฒ๋ ์ข์ ์ ๊ทผ๋ฒ์ด๋ค.
๊ฒ๋ค๊ฐ ๋ฌด๋ฃ ๊ธฐ๋ฅ์ด๋ผ์ ๋ถ๋ด์์ด ์ฐ๊ธฐ ์ข๋ค.
https://blog.naver.com/sssang97/223346539870
์ฐธ์กฐ
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/capacity-mode.html
https://stackoverflow.com/questions/53843829/what-tps-can-dynamodb-handle
https://aws.amazon.com/ko/blogs/tech/alipeople-modernization-1/
https://aws.amazon.com/ko/blogs/tech/sec-cloud-amazon-dynamodb-cost-optimization-journey/
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/on-demand-capacity-mode.html
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/warm-throughput.html
https://aws.amazon.com/ko/blogs/tech/how-to-optimize-amazon-dynamodb-costs/