πŸ’Έ DynamoDB λΉ„μš© 절감 μ—¬μ •

Dev96Β·2025λ…„ 10μ›” 22일
post-thumbnail

졜근 AWS λΉ„μš©μ„ μ κ²€ν•˜λ©΄μ„œ DynamoDB의 청ꡬ κΈˆμ•‘μ΄ μ˜ˆμƒλ³΄λ‹€ λ†’κ²Œ λ‚˜μ˜€κ³  μžˆλ‹€λŠ” κ±Έ ν™•μΈν–ˆλ‹€. 특히 개발 ν™˜κ²½(dev)κ³Ό 운영 ν™˜κ²½(prod) λͺ¨λ‘μ— λ™μΌν•œ λ°©μ‹μœΌλ‘œ μ„ΈνŒ…λ˜μ–΄ μžˆμ–΄ λΆˆν•„μš”ν•œ λ¦¬μ†ŒμŠ€ λ‚­λΉ„κ°€ μžˆλ‹€κ³  문득 생각이듬. 이번 κΈ€μ—μ„œλŠ” μ œκ°€ μ‹€μ œλ‘œ μ§„ν–‰ν•œ DynamoDB λΉ„μš© 절감 여정을 κ³΅μœ ν•˜λ €κ³  ν•©λ‹ˆλ‹€.

🧾 ν•΄κ²°λ°©μ•ˆ 탐색 및 ν•΄κ²°

πŸͺ„ Step 1. Standard β†’ Standard-IA μ „ν™˜ (개발 ν™˜κ²½)

λ¨Όμ € 개발 ν™˜κ²½μ˜ λͺ¨λ“  ν…Œμ΄λΈ”μ„ Standard β†’ Standard-IA(Infrequent Access) μŠ€ν† λ¦¬μ§€ 클래슀둜 λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€.

  • Standard-IA νŠΉμ§•
    • 자주 μ ‘κ·Όν•˜μ§€ μ•ŠλŠ” 데이터λ₯Ό μœ„ν•΄ 섀계
    • GBλ‹Ή μ €μž₯ λΉ„μš©μ€ μ €λ ΄
    • 단 읽기/μ“°κΈ° μš”μ²­μ΄ 많이 λ°œμƒν–ˆμ„λ•Œ μΆ”κ°€ λΉ„μš© λ°œμƒ κ°€λŠ₯μ„± λ†’μŒ

πŸ‘‰ dev ν™˜κ²½μ€ ν…ŒμŠ€νŠΈ μ‹œμ—λ§Œ μ ‘κ·Όν•˜λ―€λ‘œ IA둜 λ³€κ²½ μ‹œ 읽기/μ“°κΈ° μš”μ²­μ€ μ μ§€λ§Œ μ €μž₯ λ°μ΄ν„°λŠ” 많기 λ•Œλ¬Έμ— ν™•μ‹€νžˆ μœ λ¦¬ν–ˆλ‹€.


πŸ•’ Step 2. TTL + DynamoDB Streams + Firehose

λ‹€μŒμ€ 였래된 데이터(Old Data) 정리 λ‹¨κ³„μž…λ‹ˆλ‹€. 데이터λ₯Ό μ‚­μ œν•˜λŠ” λŒ€μ‹  좔적 κ°€λŠ₯성을 μœ μ§€ν•˜λ©΄μ„œλ„ λΉ„μš©μ„ μ€„μ΄λŠ” 방식을 νƒν–ˆμŠ΅λ‹ˆλ‹€.

  • TTL(Time To Live) μ„€μ •
  • DynamoDB Streams ν™œμ„±ν™”
  • Lambda β†’ Firehose β†’ S3 νŒŒμ΄ν”„λΌμΈ ꡬ좕
    • Lambda : DynamoDB Stream [REMOVE] 이벀트 μˆ˜μ‹  ν›„ Firehose둜 JSON 전솑
    • Firehose : JSON β†’ Parquet 포맷 λ³€ν™˜
    • S3(Data Lake) : μž₯κΈ° λ³΄κ΄€μš© μ €μž₯μ†Œλ‘œ 아카이빙 β†’ Glue(Data Catalog) κ΅¬μ‘°ν™”ν•΄μ„œ Athenaμ—μ„œ SQL μ‘°νšŒλ„ κ°€λŠ₯

πŸ‘‰ μ‚­μ œλœ 데이터도 둜그 ν˜•νƒœλ‘œ S3에 μ•ˆμ „ν•˜κ²Œ 보관


βš™οΈ Step 3. On-Demand β†’ Provisioned μ „ν™˜ (운영 ν™˜κ²½)

운영 ν™˜κ²½(prod)μ—μ„œλŠ” νŠΈλž˜ν”½μ΄ κΎΈμ€€ν–ˆκΈ° λ•Œλ¬Έμ— μ˜¨λ””λ§¨λ“œ(On-Demand) 과금 방식이 였히렀 λΉ„νš¨μœ¨μ μ΄μ—ˆμŠ΅λ‹ˆλ‹€. 평균 RCU/WCU(읽기/μ“°κΈ° μš©λŸ‰ λ‹¨μœ„)κ°€ μ•ˆμ •μ μœΌλ‘œ μœ μ§€λ˜λŠ” μƒνƒœλΌλ©΄ ν”„λ‘œλΉ„μ €λ‹(Provisioned) λͺ¨λ“œλ‘œ μ „ν™˜ν•˜λŠ” 것이 훨씬 μ €λ ΄ν•©λ‹ˆλ‹€.

  • Before : On-demand (μš”μ²­λ‹Ή 과금)
  • After : Provisioned (κ³ μ • μš©λŸ‰ + Auto Scaling)

πŸ‘‰ Auto Scaling도 같이 μ„€μ •ν•˜μ—¬ νŠΈλž˜ν”½ 급증 μ‹œ μžλ™μœΌλ‘œ μš©λŸ‰μ„ ν™•μž₯


πŸ’­ 회고

μ†”μ§νžˆ λ§ν•˜λ©΄ 이번 ν”„λ‘œμ νŠΈμ—μ„œ DynamoDB에 λŒ€ν•΄ 깊이 μ΄ν•΄ν•˜μ§€ λͺ»ν•œ 채 κ°œλ°œμ—λ§Œ μ§‘μ€‘ν•΄μ™”λ˜ 것 κ°™λ‹€. ν…Œμ΄λΈ” λ§Œλ“€κ³  데이터 λ„£κ³  쑰회만 되면 β€œλλ‹€β€λΌκ³  μƒκ°ν–ˆλ˜κ²ƒκ°™λ‹€. λ‹Ήμ‹œμ—” β€œμ˜¨λ””λ§¨λ“œ(On-Demand) 방식이면 λ‚΄κ°€ μ“΄ 만큼만 μš”κΈˆμ΄ λ‚˜μ˜€κ² μ§€β€ 라고 λ‹¨μˆœν•˜κ²Œ μƒκ°ν–ˆλ‹€. ν•˜μ§€λ§Œ μ²­κ΅¬μ„œλ₯Ό 보고 λ§Žμ€κ±Έ λŠκΌˆλ˜κ²ƒκ°™λ‹€. 이번 λΉ„μš© 절감 μž‘μ—…μ„ ν•˜λ©΄μ„œ 느꼈던 건 운영 νš¨μœ¨λ„ κ²°κ΅­ 개발의 일뢀고 λ‹¨μˆœνžˆ μ½”λ“œλ§Œ 잘 μ§œλŠ”κ²Œ μ•„λ‹ˆλΌ μ„œλΉ„μŠ€μ˜ λ™μž‘ 원리와 과금 ꡬ쑰λ₯Ό μ΄ν•΄ν•˜λŠ”κ²ƒμ΄ μ§„μ§œ λ°±μ—”λ“œ 개발자의 μ™„μ„±μ΄λΌλŠ” κ±Έ μƒˆμ‚Ό κΉ¨λ‹¬μ•˜λ‹€.

profile
λ‹€μ–‘ν•œ κ²½ν—˜κ³Ό μ‹€λ¬΄μ˜ 깊이둜 평가받고 싢은 μ‚¬λžŒλ“€μ„ μœ„ν•΄ κΈ°λ‘ν•©λ‹ˆλ‹€. μ‹€λ¬΄μ—μ„œ λΆ€λ”ͺ히며 배운 것듀이 κ°€μž₯ 였래 λ‚¨λŠ”λ‹€κ³  λ―ΏμŠ΅λ‹ˆλ‹€.

0개의 λŒ“κΈ€