data engineering

๋น…๋ฐ์ดํ„ฐ๋ฅผ ์ง€ํƒฑํ•˜๋Š” ๊ธฐ์ˆ  CH4 - ๋น…๋ฐ์ดํ„ฐ์˜ ์ถ•์ 

mokhs 2024. 1. 21. 16:07

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ง€์‹์„ ํ•™์Šตํ•˜๊ณ  ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค

  • ๋ฒŒํฌํ˜•, ์ŠคํŠธ๋ฆฌ๋ฐ ํ˜• ๋ฐ์ดํ„ฐ ์ „์†ก
  • ์ŠคํŠธ๋ฆฌ๋ฐํ˜•์˜ ๋ฐ์ดํ„ฐ ์ „์†ก์ธ ๋ฉ”์‹œ์ง€ ๋ฐฐ์†ก ๊ตฌ์กฐ์™€ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„
    • ์„ฑ๋Šฅ์„ ์–ป๊ณ  ์‹ ๋ขฐ์„ฑ์ด ํฌ์ƒ๋˜๋Š” ๊ฒฝ์šฐ ๋“ฑ
  • ๋ฉ”์‹œ์ง€ ๋ฐฐ์†ก์— ์žˆ์–ด์„œ ํ”„๋กœ์„ธ์Šค ์‹œ๊ฐ„๊ณผ ์ด๋ฒคํŠธ ์‹œ๊ฐ„์˜ ๊ตฌ๋ณ„
    • ์ด๋ฒคํŠธ ์‹œ๊ฐ„์„ ๊ณ ๋ คํ•œ ์ตœ์ ํ™”
  • ๋ฐ์ดํ„ฐ ์ƒ‰์ธ์„ ํ†ตํ•œ ์ตœ์ ํ™”
  • NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ช‡ ๊ฐ€์ง€ ํŠน์„ฑ๊ณผ ๊ตฌ๋ถ„
  • ๋ฐ์ดํ„ฐ ์ถ•์ ์˜ ์ „๋ฐ˜์ ์ธ ํ”Œ๋กœ์šฐ

4-1 ๋ฒŒํฌ ํ˜• ์ŠคํŠธ๋ฆฌ๋ฐ ํ˜•์˜ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘

๋ฐ์ดํ„ฐ ์ „์†ก์—๋Š” ๋ฒŒํฌ ํ˜•๊ณผ ์ŠคํŠธ๋ฆฌ๋ฐ ํ˜•์˜ ๋‘ ์ข…๋ฅ˜๊ฐ€ ์žˆ์Œ

๊ฐ๊ฐ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋  ๋•Œ๊นŒ์ง€์˜ ํ๋ฆ„์„ ์‚ดํŽด๋ณด์ž.

๊ฐ์ฒด ์Šคํ† ๋ฆฌ์ง€์™€ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘

  • ๋น…๋ฐ์ดํ„ฐ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ํ™•์žฅ์„ฑ์ด ๋†’์€ ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅ๋จ
    • ๋ถ„์‚ฐ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ด์šฉ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์ง€๋งŒ ๋Œ€๋Ÿ‰์œผ๋กœ ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด ์Šคํ† ๋ฆฌ์ง€(object storage)๊ฐ€ ๊ธฐ๋ณธ์ด ๋จ
    • e.g. Hadoop์ด๋ผ๋ฉด HDFS, AWS์—์„œ๋Š” Amazon S3

๊ฐ์ฒด ์Šคํ† ๋ฆฌ์ง€์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ ํ”Œ๋กœ์šฐ

  • ๊ฐ์ฒด ์Šคํ† ๋ฆฌ์ง€๋Š” ๋‹ค์ˆ˜์˜ ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด ํŒŒ์ผ์„ ์—ฌ๋Ÿฌ ๋””์Šคํฌ์— ๋ณต์‚ฌํ•จ
    • ์ด์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณตํ™”์™€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ์„ ์ง€์›ํ•˜๊ณ  ์žˆ์Œ.
    • ๋”ฐ๋ผ์„œ ์ผ๋ถ€ ํ•˜๋“œ์›จ์–ด๊ฐ€ ๊ณ ์žฅ๋‚˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋˜์ง€ ์•Š์Œ
    • ์žฅ์•  ๊ทน๋ณต(Failover)์ด ๊ฐ€๋Šฅํ•˜๋‹ค
    • ์Šฌ๋ ˆ์ด๋ธŒ(read replica)๋ฅผ ํ†ตํ•œ **๋ถ€ํ•˜ ๋ถ„์‚ฐ์œผ๋กœ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๋ฐฉ์ง€**
  • ์ฃผ์˜์ 
    • ๊ฐ์ฒด ์Šคํ† ๋ฆฌ์ง€์˜ ๊ตฌ์กฐ๋Š” ๋ฐ์ดํ„ฐ์–‘์ด ๋งŽ์„ ๋•Œ ์šฐ์ˆ˜ํ•จ. ํ•˜์ง€๋งŒ ์†Œ๋Ÿ‰์ด ๋ฐ์ดํ„ฐ์ผ ๊ฒฝ์šฐ ๋น„ํšจ์œจ์ ์ž„.
    • → 100๋ฐ”์ดํŠธ์˜ ์ž‘์€ ํŒŒ์ผ์„ ์ž์ฃผ ์ฝ๊ณ  ์“ฐ๋Š” ๊ฒƒ์€ ๋ฐ์ดํ„ฐ์–‘์— ๋น„ํ•ด ํ†ต์‹  ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋„ˆ๋ฌด ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์ ํ•ฉํ•˜์ง€ ์•Š์Œ
    • ๊ทธ๋Ÿผ ์–ด๋Š์ •๋„๊ฐ€ ์ ํ•ฉํ•œ๋ฐ?
      • ์ž‘์€ ๊ทœ๋ชจ์ผ ๋•Œ๋Š” ์•„๋ฌด๋ž˜๋„ ๋น„์šฉ์„ ์ƒ๊ฐํ•ด์„œ ์ ์ ˆํ•œ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์„ ํƒํ•˜๊ณ  ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์€ ๋น…๋ฐ์ดํ„ฐ ์ •๋„๋ฉด ๊ฐ์ฒด ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๊ณ ๋ คํ•ด๋ผ๋กœ ์ดํ•ดํ–ˆ์Œ

๋ฐ์ดํ„ฐ ์ˆ˜์ง‘

์ˆ˜์ง‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•˜์—ฌ ์ง‘๊ณ„ ํšจ์œจ์ด ์ข‹์€ ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๋งŒ๋“œ๋Š” ์ผ๋ จ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘(data ingestion) ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘๋ถ€ํ„ฐ ๊ตฌ์กฐํ™” ๋ฐ์ดํ„ฐ์˜ ์ž‘์„ฑ, ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€์— ๋Œ€ํ•œ ์žฅ๊ธฐ์ ์ธ ์ €์žฅ ๋“ฑ์ด ํฌํ•จ๋œ๋‹ค.

→ ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌด์ง€์„ฑ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์ด๋ฅผ ์‹ค์šฉ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

  • ๋น…๋ฐ์ดํ„ฐ๋กœ ์ž์ฃผ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์€ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ์ด๊ณ  ์ด ๋ฐ์ดํ„ฐ๋Š” ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ“์ด๊ฒŒ ๋œ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ๋„ ์ ์ ˆํ•œ ํŒŒ์ผ ์‚ฌ์ด์ฆˆ๋กœ ์ €์žฅํ•˜์ง€ ์•Š์œผ๋ฉด ์ด ๋˜ํ•œ ์„ฑ๋Šฅ ์ €ํ•˜์˜ ์š”์ธ์ด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์ €์žฅํ•˜์—ฌ ํšจ์œจ์„ ๋†’์ด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•จ.
    • e.g. 1ํ…Œ๋ผ๋ฐ”์ดํŠธ์˜ ํŒŒ์ผ์„ 100Mbp์˜ ํšŒ์„ ์œผ๋กœ ์ „์†กํ•˜๋ฉด ์•ฝ 24์‹œ๊ฐ„์ด ์†Œ๋จ.
  • ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ค ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ์ ์ ˆํ• ๊นŒ?
    • ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ์ฒด ์Šคํ† ๋ฆฌ์ง€์—์„œ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ ํฌ๊ธฐ๋Š” ๋Œ€๋žต 1MB~1GB ๋ฒ”์œ„์ด๋‹ค.
      • ์ˆ˜์‹œ๋กœ ๊ฐ์ฒด ์Šคํ† ๋ฆฌ์ง€์— ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋กํ•˜๋ฉด ๋Œ€๋Ÿ‰์˜ ์ž‘์€ ํŒŒ์ผ์ด ์ƒ์„ฑ๋จ
        • → ๋ฐ์ดํ„ฐ๋ฅผ ์ ๋‹นํžˆ ๋ชจ์•„์„œ ํ•˜๋‚˜์˜ ํฐ ํŒŒ์ผ๋กœ ๋งŒ๋“ค๊ธฐ
      • ๋„ˆ๋ฌด ํฐ ๋ฐ์ดํ„ฐ๋ผ๋ฉด ์ ๋‹นํžˆ ๋‚˜๋ˆ ์„œ ์ฒ˜๋ฆฌํ•˜๊ธฐ

๋ฒŒํฌ ํ˜•์˜ ๋ฐ์ดํ„ฐ ์ „์†ก

  • ์ „ํ†ต์ ์ธ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์—์„œ ์‚ฌ์šฉ๋œ ๋ฒŒํฌ ํ˜• ๋ฐฉ์‹์€ ๋ง ๊ทธ๋Œ€๋กœ ์ด๋ฏธ ๋ชจ์•„๋‘” ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ธฐ๋Š” ๋ฐฉ์‹์ด๋‹ค.
    • ๋”ฐ๋ผ์„œ ์ด๋ฏธ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ•์ ๋œ ๊ฒฝ์šฐ๋‚˜ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์— ๋ฒŒํฌ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ์‹ ๋ขฐ์„ฑ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ๋ฒŒํฌ ํ˜• ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
    • ์ŠคํŠธ๋ฆฌ๋ฐ ํ˜•์€ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์žฌ์‹คํ–‰ํ•˜๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š๊ณ  ์‹ ๋ขฐ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.
    • ๋ฒŒํฌ ํ˜• ๋ฐฉ์‹์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋น„๊ต์  ์‰ฝ๊ฒŒ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์žฌ์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ด๋Ÿฐ ์ ์—์„œ ๋ฒŒํฌ ํ˜•์€ ์›Œํฌํ”Œ๋กœ ๊ด€๋ฆฌ ๋„๊ตฌ์™€์˜ ๊ถํ•ฉ์ด ๋›ฐ์–ด๋‚˜๋‹ค.
  • ์ฃผ์˜
    • ๋ฒŒํฌ ํ˜•์ด๋ผ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌด์กฐ๊ฑด ํ•œ ๋ฒˆ์— ์ „์†กํ•˜๋Š” ๊ฑด ์•„๋‹ˆ๋‹ค.
    • ๋„ˆ๋ฌด ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ์˜ฎ๊ธฐ๋ฉด ์ž‘์—…์ด ๋ฌด๊ฑฐ์›Œ์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธด๋‹ค.
      • → ์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜๋ˆ ์„œ ์ „์†กํ•ด์•ผ ํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋ฉด ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์œ„ํ•œ ETL server๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
    • ETL server๋Š” ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ์ ํ•ฉํ•œ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค๋ฅผ ์œ„ํ•œ ETL ๋„๊ตฌ์™€ ์˜คํ”ˆ ์†Œ์Šค ๋˜๋Š” ์†์ˆ˜ ์ž‘์„ฑํ•œ ์Šคํฌ๋ฆฝํŠธ ๋“ฑ์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค.

๋ฐ์ดํ„ฐ ์ „์†ก์˜ ์›Œํฌํ”Œ๋กœ

  • ๋ฐ์ดํ„ฐ ์ „์†ก์— ์›Œํฌํ”Œ๋กœ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
    • e.g. ์ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ ์žฌ๋˜๋ฉด ๋ฐ์ดํ„ฐ ๋ถ„์„์„ ์œ„ํ•œ data mart๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”. ๋“ฑ
  • ๋งค์ผ ๋งˆ์Šคํ„ฐ ๋ฐ์ดํ„ฐ์˜ ์Šค๋ƒ…์ƒท๊ณผ ์‹ ๋ขฐ์„ฑ์ด ์ค‘์‹œ๋˜๋Š” ๊ณผ๊ธˆ ๋ฐ์ดํ„ฐ ์ „์†ก ๋“ฑ์˜ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ์™€ ํ•จ๊ป˜ ์›Œํฌํ”Œ๋กœ์˜ ์ผ๋ถ€์— ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  • ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐฉ์‹์€ ํŠน์„ฑ์ƒ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์›Œํฌํ”Œ๋กœ์šฐ ์ผ๋ถ€๋กœ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ŠคํŠธ๋ฆฌ๋ฐ ํ˜•์˜ ๋ฐ์ดํ„ฐ ์ „์†ก

์ŠคํŠธ๋ฆฌ๋ฐ ํ˜•์€ ๋ง ๊ทธ๋Œ€๋กœ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
์ŠคํŠธ๋ฆฌ๋ฐ์ด๋ผ๊ณ  ํ•˜๋ฉด ๊ฑฐ์ฐฝํ•œ ๋ง์ฒ˜๋Ÿผ ๋Š๊ปด์ง€์ง€๋งŒ, ์‚ฌ์‹ค ๋ฐ์ดํ„ฐ ์ €์žฅ์„ ์œ„ํ•ด API๋ฅผ ๊ณ„์† ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฆ„์ด ์—†๋‹ค.
ํ•˜์ง€๋งŒ ์ด ํ˜ธ์ถœ ๊ณผ์ •์—์„œ ์ „์†ก ์‹คํŒจ, ๋ฐ์ดํ„ฐ ์ค‘๋ณต ๊ทธ๋ฆฌ๊ณ  ๋””๋ฐ”์ด์Šค ์ผ€์ด์Šค ๋“ฑ์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

 

์ŠคํŠธ๋ฆฌ๋ฐ ํ˜• ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ํ”Œ๋กœ์šฐ

 

  • ๋ณดํ†ต ์ŠคํŠธ๋ฆฌ๋ฐ ํ˜•๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐฉ์‹์„ ๋ฉ”์‹œ์ง€ ๋ฐฐ์†ก(message delivery) ์ด๋ผ๊ณ  ํ•œ๋‹ค.
    • ๋ฉ”์‹œ์ง€ ๋ฐฐ์†ก ์‹œ์Šคํ…œ์€ ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ์–‘์— ๋น„ํ•ด ํ†ต์‹ ์„ ์œ„ํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ปค์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์„œ๋ฒ„๋Š” ๋†’์€ ์„ฑ๋Šฅ์„ ์š”๊ตฌํ•œ๋‹ค.
  • ๋ฉ”์‹œ์ง€ ํ, ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค์™€ ๊ฐ™์€ ์ค‘๊ณ„ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
    • ์ด๋Ÿฐ ๊ฒฝ์šฐ ๊ธฐ๋ก๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์ • ๊ฐ„๊ฒฉ์œผ๋กœ ๊บผ๋‚ด๊ณ  ๋ชจ์•„์„œ ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•œ๋‹ค.
    • ๋ฉ”์‹œ์ง€ ํ, ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค์™€ ๊ฐ™์€ ์‹œ์Šคํ…œ์„ ์ด์šฉํ•˜๋ฉด ์žฅ์•  ๊ทน๋ณต(failover), ์‹คํŒจํ•œ ๋ฉ”์‹œ์ง€(dead letter) ์žฌ์ „์†ก ๊ด€๋ฆฌ์— ๋Œ€ํ•ด ์ด์ ์„ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.
    • ๋Œ€ํ‘œ์ ์œผ๋กœ ๋ฉ”์‹œ์ง€ ํ๋Š” Amazon SQS, ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋Š” Apache Kafka ๋“ฑ์ด ์žˆ๋‹ค.
  • ์ฃผ๋กœ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
    • e.g. ์‚ฌ์šฉ์ž์˜ ํ–‰๋™ ๋ถ„์„์„ ์œ„ํ•œ ์ด๋ฒคํŠธ ์ถ”์ ์ด๋‚˜ ์„œ๋ฒ„ ๋กœ๊ทธ ์ ์žฌ
    • ๋‹ค์–‘ํ•œ ์š”๊ตฌ์‚ฌํ•ญ์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ๊ณ  ํ•ญ์ƒ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ๊ณ ๋ คํ•ด์„œ ์ด์— ์ ์ ˆํ•œ ์†”๋ฃจ์…˜์„ ์„ ํƒํ•˜๋Š” ๊ฒŒ ์ค‘์š”ํ•˜๋‹ค.
    • ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๊ฒƒ์— ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋ฅผ ์ ์ ˆํ•œ ์†”๋ฃจ์…˜์ด๋ผ๊ณ  ๋ณด๊ธฐ์—๋Š” ์–ด๋ ต๋‹ค.

4-2 ๋ฉ”์‹œ์ง€ ๋ฐฐ์†ก์˜ ํŠธ๋ ˆ์ด๋“œ ์˜คํ”„(์„ฑ๋Šฅ vs ์‹ ๋ขฐ์„ฑ)

ํด๋ผ์ด์–ธํŠธ์˜ ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋ฉด ์ŠคํŠธ๋ฆฌ๋ฐ ํ˜•์˜ ๋ฉ”์‹œ์ง€ ๋ฐฐ์†ก์€ ์„ฑ๋Šฅ๊ณผ ์‹ ๋ขฐ์„ฑ์„ ๋ชจ๋‘ ๋งŒ์กฑํ•˜๊ธฐ ์–ด๋ ต๋‹ค.
๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋ฉ”์‹œ์ง€ ๋ฐฐ์†ก ๊ตฌ์กฐ์™€ ๊ทธ ํ•œ๊ณ„์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž

 

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋งŽ์•„์ง€๊ณ  ๋ฉ”์‹œ์ง€์˜ ์–‘์ด ๋งŽ์•„์ง€๋งŒ ์Šคํ† ๋ฆฌ์ง€์— write ๋ถ€ํ•˜๊ฐ€ ๋งŽ์ด ๊ฑธ๋ฆฌ๊ฒŒ ๋œ๋‹ค.
  • ์ด๋Ÿฐ ๊ฒฝ์šฐ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ผ๋ถ€ ๋ชจ์•„์„œ write ํ•ด์„œ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๋•Œ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋ฅผ ์‚ฌ์šฉํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.
    • ๋Œ€ํ‘œ์ ์ธ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋กœ๋Š” Apache Kafka, Amazon Kinesis ๋“ฑ์ด ์žˆ๋‹ค.

ํ‘ธ์‰ฌ ํ˜•๊ณผ ํ’€ ํ˜•

 

  • ์œ„ ๊ทธ๋ฆผ์— ๋ณด์ด๋“ฏ ์ œ์–ด ์ฃผ๋„๊ถŒ์ด ์–ด๋””์— ์žˆ๋Š”์ง€์— ๋”ฐ๋ผ ๋ฉ”์‹œ์ง€ ๋ฐฐ์†ก ๋ฐฉ์‹์ด ํ‘ธ์‰ฌ ํ˜•๊ณผ ํ’€ ํ˜•์œผ๋กœ ๋‚˜๋‰œ๋‹ค.
  • ์ด๋Š” ๊ตฌํ˜„ ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋‚˜๋‰˜๋‹ˆ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋ฅผ ์„ ํƒํ•˜๊ธฐ ์ „์— ์ž˜ ์‚ดํŽด๋ณด์ž
    • ์†ก์‹  ์ธก์˜ ์ œ์–ด๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์ด ํ‘ธ์‹œ(push)ํ˜•
    • ์ˆ˜์‹  ์ธก์˜ ์ œ์–ด๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ ํ’€(pull)ํ˜•
      • ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•„์„œ pullํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŒŒ์ผ ์‚ฌ์ด์ฆˆ ์ ์ •ํ™”์— ๋„์›€์ด ๋จ
  • ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋Š” ๋ฐ์ดํ„ฐ์˜ ์“ฐ๊ธฐ ์†๋„๋ฅผ ์กฐ์ •ํ•˜๊ธฐ ์œ„ํ•œ ์™„์ถฉ์ œ ์—ญํ• ์ด๊ณ  ํ‘ธ์‰ฌ ํ˜•๊ณผ ํ’€ ํ˜•์œผ๋กœ ๋ฉ”์‹œ์ง€ ๋ฐฐ์†ก์˜ ํƒ€์ด๋ฐ์„ ์กฐ์ ˆํ•œ๋‹ค.
  • ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค์˜ ๊ตฌ์กฐ์—์„œ์˜ ์—ญํ•  ์ •์˜
    • ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค์— ๋ฐ์ดํ„ฐ๋ฅผ push ํ•˜๋Š” ์ƒ์„ฑ์ž(producer)
    • ๋ฐ์ดํ„ฐ๋ฅผ pullํ•ด์„œ ์†Œ๋น„ํ•˜๋Š” ์†Œ๋น„์ž(consumer)

๋ฉ”์‹œ์ง€ ๋ผ์šฐํŒ…

  • ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค์— ์ €์žฅ๋œ ๋ฉ”์‹œ์ง€๋Š” ์—ฌ๋Ÿฌ consumer๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณต์‚ฌ๋˜์–ด ์—ฌ๋Ÿฌ ๊ฒฝ๋กœ๋กœ ๋ถ„๊ธฐ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”์‹œ์ง€ ๋ผ์šฐํŒ…(message routing)์ด๋ผ๊ณ  ํ•œ๋‹ค.
    • ์ด๋ฅผ ํ†ตํ•ด ๋งŽ์€ producer์—์„œ ์˜ค๋Š” ๋Œ€๋Ÿ‰์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ฆ‰๊ฐ์ ์œผ๋กœ ์–ด๋–ค consumer์—๊ฒŒ ์ „์†กํ•˜๋ฉด์„œ ๋™์‹œ์— ๋‹ค๋ฅธ consumer๋Š” ๋ฐ์ดํ„ฐ ์ ์žฌ ํšจ์œจํ™”๋ฅผ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•„๋‘์—ˆ๋‹ค๊ฐ€ ํ•œ ๋ฒˆ์— ์ €์žฅํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
    • ์ฆ‰, consumer๋Š” ์„œ๋กœ์˜ ์กด์žฌ๋ฅผ ๋ชจ๋ฅด๊ณ  ์˜์กด์„ฑ์ด ๊ฒฉ๋ฆฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ consumer๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒŒ ์ž์œ ๋กญ๋‹ค.
      • → ํ™•์žฅ์„ฑ์ด ๋†’๋‹ค.

๋ฉ”์‹œ์ง€ ๋ฐฐ์†ก์˜ ์‹ ๋ขฐ์„ฑ ๋ฌธ์ œ

์‹ค์‹œ๊ฐ„ ๋ฉ”์‹œ์ง€ ๋ฐฐ์†ก๊ณผ ๊ฐ™์€ ์ŠคํŠธ๋ฆฌ๋ฐ ๊ตฌ์กฐ์—์„œ๋Š” ์„ฑ๋Šฅ ๋ฌธ์ œ ์™ธ์—๋„ ์‹ ๋ขฐ์„ฑ(reliability) ๋ฌธ์ œ๋Š” ํ”ผํ•  ์ˆ˜ ์—†๋‹ค.

  • ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋„คํŠธ์›Œํฌ ์žฅ์•  ๋“ฑ์œผ๋กœ ์ธํ•ด ์˜ค๋ฅ˜ ๋ฐœ์ƒ์ด ํ•„์—ฐ์ ์ธ๋ฐ, ์ด๊ฒƒ๋„ ์‹ ๋ขฐ์„ฑ ๋ฌธ์ œ์— ํ•œ ๋ชซํ•œ๋‹ค.
    • ๋ฉ”์‹œ์ง€๋Š” ์ „์†ก๋์„ ์ˆ˜ ์žˆ์ง€๋งŒ consumer์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ด ์ž‘์—…์ด ์‹คํ–‰๋˜์ง€ ์•Š์•˜์„ ์ˆ˜๋„ ์žˆ๋‹ค.
    • ๊ทธ๋ž˜์„œ ์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” ์ž‘์—… consumer์˜ ์™„๋ฃŒ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•˜๋‹ค๋Š” ํ‘œ์‹œ๋ฅผ consumer๊ฐ€ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค์—๊ฒŒ ์ „์†กํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜๋„ ์žˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ๊ฐ ์ƒํ™ฉ์— ๋งž๊ฒŒ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ๊ณ ๋ คํ•ด์„œ ์‹ ๋ขฐ์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š”๋ฐ, ๋Œ€ํ‘œ์ ์ธ ํ•ด๊ฒฐ์ฑ…์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
    • at most once (์ตœ๋Œ€ ํ•œ ๋ฒˆ)
      • ๋ฉ”์‹œ์ง€๋Š” ํ•œ ๋ฒˆ๋งŒ ์ „์†ก. ๋„์ค‘์— ์ „์†ก์— ์‹คํŒจํ•ด์„œ ์‚ฌ๋ผ์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.
    • exactly once (์ •ํ™•ํžˆ ํ•œ ๋ฒˆ)
      • ๋ฉ”์‹œ์ง€๋Š” ์†์‹ค๋˜๊ฑฐ๋‚˜ ์ค‘๋ณต ์—†์ด ์ •ํ™•ํžˆ ํ•œ ๋ฒˆ๋งŒ ์ „๋‹ฌ๋œ๋‹ค.
      • ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— exactly once๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•œ ๊ณณ์— ๋ชจ์—ฌ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๊ณ„ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.
        • ์ด๋ฅผ ์ค‘๊ณ„ํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๋ณดํ†ต ์ฝ”๋””๋„ค์ดํ„ฐ(coordinator) ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
        • ํ•˜์ง€๋งŒ ๋ชจ๋“  ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ๋Š” ์—ญ์‹œ ๋„คํŠธ์›Œํฌ ์žฅ์• ์™€ ์ฝ”๋””๋„ค์ดํ„ฐ์—๋„ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ญ์ƒ ์กด์žฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ์ˆ˜ ์—†๋‹ค.
          • ๋ณดํ†ต ์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” ํ•ฉ์˜(consensus) ๋ผ๋Š” ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด๊ฑด ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ์„ค๊ณ„์—์„œ ์–ด๋ ค์šด ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.
    • at least once (์ ์–ด๋„ ํ•œ ๋ฒˆ)
      • ๋ฉ”์‹œ์ง€๋Š” ํ™•์‹คํžˆ ์ „๋‹ฌ๋˜์ง€๋งŒ ๊ฐ™์€ ๊ฐ’์ด ์—ฌ๋Ÿฌ ๋ฒˆ ์ „๋‹ฌ๋˜์–ด ์ค‘๋ณต๋  ์ˆ˜ ์žˆ๋‹ค.
      • ๋”ฐ๋ผ์„œ ์ค‘๋ณต ์ œ๊ฑฐ๋Š” ํด๋ผ์ด์–ธํŠธ์— ๋งก๊ธด๋‹ค.
        • ๋Œ€๋ถ€๋ถ„์˜ ๋ฉ”์‹œ์ง€ ๋ฐฐ์†ก ์‹œ์Šคํ…œ์—์„œ๋Š” at least once๋ฅผ ์ง€์›ํ•œ๋‹ค.
          e.g. Apache Kafka
  • ๋ฉ”์‹œ์ง€ ๋ฐฐ์†ก ๋„๊ตฌ๊ฐ€ ์‹ ๋ขฐ์„ฑ์— ๋Œ€ํ•ด ์•„๋ฌด๋Ÿฐ ๋ณด์žฅ์„ ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค.
    • e.g. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ์˜ํ•œ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์€ ์›นํŽ˜์ด์ง€๋ฅผ ๋‹ซ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ์ž‘๋™์ด ์ค‘์ง€๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฒคํŠธ๊ฐ€ ์œ ์‹ค๋  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฒฐ๊ตญ ๊ฐ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์ ์ ˆํ•œ ์†”๋ฃจ์…˜์„ ์„ ํƒํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์ค‘๋ณต์— ๋Œ€๋น„ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๊ทธ์— ๋งž๊ฒŒ ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

4-3 ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ์˜ ์ตœ์ ํ™”

์ŠคํŠธ๋ฆฌ๋ฐ ํ˜•์˜ ๋ฉ”์‹œ์ง€ ๋ฐฐ์†ก์—์„œ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋„์ฐฉํ•  ๋•Œ๊นŒ์ง€์˜ ์‹œ๊ฐ„ ์ง€์—ฐ์ด ๋ฌธ์ œ๋‹ค.
๋Šฆ๊ฒŒ ๋„๋‹ฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ง‘๊ณ„ ์†๋„์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์— ๊ด€ํ•ด ์•Œ์•„๋ณด์ž

ํ”„๋กœ์„ธ์Šค ์‹œ๊ฐ„๊ณผ ์ด๋ฒคํŠธ ์‹œ๊ฐ„

  • ํ”„๋กœ์„ธ์Šค ์‹œ๊ฐ„(process time)์€ ์‹ค์ œ ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•œ ์‹œ๊ฐ„.
  • ์ด๋ฒคํŠธ ์‹œ๊ฐ„(event time)์€ ์ด๋ฒคํŠธ๊ฐ€ ์ƒ์„ฑ๋œ. ์ฆ‰, ๋ฉ”์‹œ์ง€๊ฐ€ ์ƒ์„ฑ๋œ ์‹œ๊ฐ„์„ ๋งํ•œ๋‹ค.
  • ๋„คํŠธ์›Œํฌ๋‚˜ ์‹œ์Šคํ…œ ํŠน์„ฑ ์ƒ ํ”„๋กœ์„ธ์Šค ์‹œ๊ฐ„๊ณผ ์ด๋ฒคํŠธ ์‹œ๊ฐ„์— ํฐ ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ณดํ†ต ๋ฐ์ดํ„ฐ ๋ถ„์„์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ๊ฒƒ์€ ์ด๋ฒคํŠธ ์‹œ๊ฐ„์ธ๋ฐ, ์ด ์‹œ๊ฐ„ ์ฐจ์ด๋กœ ์ธํ•ด์„œ ์„ฑ๊ฐ€์‹  ๋ฌธ์ œ๋“ค์ด ์กด์žฌํ•œ๋‹ค.

ํ”„๋กœ์„ธ์Šค ์‹œ๊ฐ„์— ์˜ํ•œ ๋ถ„ํ• ๊ณผ ๋ฌธ์ œ์ 

  • ์˜ˆ๋ฅผ ๋“ค์–ด ๋ชจ๋ฐ”์ผ ์•ฑ์˜ ํ™œ๋™ ์‚ฌ์šฉ์ž ์ˆ˜(Active User)๋ฅผ ์ง‘๊ณ„ํ•˜๋Š” ์ผ€์ด์Šค๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž.
  • ์ด ๊ฒฝ์šฐ ๋Šฆ๊ฒŒ ํด๋ผ์ด์–ธํŠธ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋Šฆ๊ฒŒ ์„œ๋ฒ„์— ๋„์ฐฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
    • ์ฆ‰, ๋Šฆ๊ฒŒ ๋„์ฐฉํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ์˜ํ•ด ๊ณผ๊ฑฐ์˜ ์ง‘๊ณ„ ๊ฒฐ๊ณผ๊ฐ€ ๋งค์ผ ์กฐ๊ธˆ์”ฉ ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค.
    • ๋”ฐ๋ผ์„œ ์‹ค์ œ์— ๊ฐ€๊นŒ์šด ์ง‘๊ณ„ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด๋ฒคํŠธ ์‹œ๊ฐ„๋ณด๋‹ค ๋ฉฐ์น  ์ •๋„ ์ง€๋‚œ ์‹œ์ ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘๊ณ„ํ•ด์•ผ ํ•œ๋‹ค.

์•„๋ž˜ ์ด๋ฏธ์ง€๋ฅผ ๋ณด๋ฉด 1์›” 1์ผ์— ๋Œ€๋ถ€๋ถ„์˜ ์ด๋ฒคํŠธ๋Š” ์„œ๋ฒ„์— ๋‹น์ผ์— ๋„์ฐฉํ•˜์ง€๋งŒ ๊ทธ ์ด์ „์— ์ƒ์„ฑ๋œ ์ด๋ฒคํŠธ๋„ ๊ฝค ๋ณด์ด๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด๋ฒคํŠธ ์‹œ๊ฐ„๊ณผ ํ”„๋กœ์„ธ์Šค ์‹œ๊ฐ„์—๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์ž.

 

๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€์—์„œ์˜ ๋ฐ์ดํ„ฐ ๋ถ„์‚ฐ

ํ•œํŽธ, ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€ ์ƒ์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ๋‹จ๊ณ„์—์„œ๋Š” ์ด๋ฒคํŠธ ์‹œ๊ฐ„์ด ์•„๋‹ˆ๋ผ ํ”„๋กœ์„ธ์Šค ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ณดํ†ต์ด๋‹ค.

  • ํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ ๋ถ„์„์€ ์ด๋ฒคํŠธ ์‹œ๊ฐ„ ๊ธฐ์ค€์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ง‘๊ณ„ ์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.
    • ๊ทธ๋ฆฌ๊ณ  ์ด๋ฒคํŠธ ์‹œ๊ฐ„์€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ด์•ผ๋งŒ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฒฐ๊ตญ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๋กœ๋“œํ•ด์•ผํ•œ๋‹ค.
  • ๋‹ค์ˆ˜์˜ ํŒŒ์ผ์„ ๋ชจ๋‘ ๊ฒ€์ƒ‰ํ•˜๋Š” ํ’€ ์Šค์บ”์€ ์‹œ์Šคํ…œ์˜ ๋ถ€ํ•˜๋ฅผ ๋†’์ด๋Š” ์š”์ธ์ด๋ฏ€๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€์˜ ํ’€ ์Šค์บ”์€ ์–ด๋–ป๊ฒŒ ํ”ผํ•  ์ˆ˜ ์žˆ์„๊นŒ?

ํ’€ ์Šค์บ”์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ํ•œ ๋ฒˆ ์•Œ์•„๋ณด์ž.

์‹œ๊ณ„์—ด ์ธ๋ฑ์Šค

  • ์ด๋ฒคํŠธ ์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•ด์„œ ํ’€ ์Šค์บ”์„ ํ”ผํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ณดํ†ต ์‹œ๊ณ„์—ด ์ธ๋ฑ์Šค(time-series index)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ ํšจ์œจ์„ ๊ฐœ์„ ํ•˜๋Š” ์ „ํ˜•์ ์ธ ๋ฐฉ๋ฒ•์ด๋‹ค.

์กฐ๊ฑด์ ˆ ํ‘ธ์‰ฌ ๋‹ค์šด

  • ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ์ฝ๊ธฐ ์ข‹๊ฒŒ ๋ณ€ํ˜•(์ •๋ ฌ)ํ•ด๋‘ฌ์„œ ์กฐํšŒ ์กฐ๊ฑด์ ˆ๊ณผ ํ•จ๊ป˜ ์ตœ์†Œํ•œ์˜ ๋ฐ์ดํ„ฐ๋งŒ ์ฝ๋„๋ก ํ•˜๋Š” ์ตœ์ ํ™”๋ฅผ ์กฐ๊ฑด์ ˆ ํ‘ธ์‹œ ๋‹ค์šด(predicate pushdown)
    • ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•ด๋‘๋Š” ๊ฑด ์ธ๋ฑ์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์กฐํšŒ ์ตœ์ ํ™”์™€ ๋น„์Šทํ•œ ์›๋ฆฌ๋‹ค.
  • ๋งค์ผ ํ•œ ๋ฒˆ์”ฉ ์ƒˆ๋กœ ๋„์ฐฉํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ๋กœ ์ฝ๊ธฐ ์ข‹๊ฒŒ ๋ณ€ํ™˜ํ•œ๋‹ค.
    • ์œ„ ์ด๋ฏธ์ง€๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•œ ํ›„ ์—ด ์ง€ํ–ฅ ์Šคํ† ๋ฆฌ์ง€๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ชจ์Šต์ด๋‹ค.
  • ๋‹จ, ๋นˆ๋ฒˆํ•œ ์“ฐ๊ธฐ๋Š” ์ตœ์ ํ™”์˜ ํšจ๊ณผ๋ฅผ ๋‚ฎ์ถ˜๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ธฐ์–ตํ•˜์ž.
    • ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๊ฒŒ ๋ฐ์ดํ„ฐ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ ์ฃผ๊ธฐ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.
    • ๋˜ํ•œ ์ด๋ฒคํŠธ ์‹œ๊ฐ„ ๊ธฐ์ค€์„ ์ž˜๊ฒŒ ๋ถ„์‚ฐํ•˜๋Š” ๊ฒƒ๋„ ๋ฐ์ดํ„ฐ ๋กœ๋“œ๊ฐ€ ๋นˆ๋ฒˆํ•ด์ง€๋ฏ€๋กœ ํšจ์œจ์ด ์•ˆ ์ข‹์•„์งˆ ์ˆ˜ ์žˆ๋‹ค.
      • ๋”ฐ๋ผ์„œ ์—ด ์ง€ํ–ฅ ์Šคํ† ๋ฆฌ์ง€์˜ ๊ฒฝ์šฐ ์งง์€ ์ฃผ๊ธฐ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š๋‹ค.

์ด๋ฒคํŠธ ์‹œ๊ฐ„์— ์˜ํ•œ ๋ถ„ํ• 

  • ์ด๋ฒคํŠธ ์‹œ๊ฐ„์„ ์ด์šฉํ•ด์„œ ํ…Œ์ด๋ธ” ํŒŒํ‹ฐ์…”๋‹์„ ํ•ด๋ณผ ์ˆ˜๋„ ์žˆ๋‹ค.
    • ์ด๋ ‡๊ฒŒ ๋ถ„ํ• ๋œ ํ…Œ์ด๋ธ”์„ ์‹œ๊ณ„์—ด ํ…Œ์ด๋ธ”(time-series table) ์ด๋ผ ํ•œ๋‹ค.
    • ์‹œ๊ณ„์—ด ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•˜๋ฉด ์œ„์™€ ๊ฐ™์€ ๋ชจ์Šต์ด ๋œ๋‹ค.

๋ฐ์ดํ„ฐ ๋งˆํŠธ๋ฅผ ์ด๋ฒคํŠธ ์‹œ๊ฐ„์œผ๋กœ ์ •๋ ฌํ•˜๊ธฐ

  • ์ด๋ฒคํŠธ ์‹œ๊ฐ„์œผ๋กœ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ ๋งˆํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ง‘๊ณ„ ์ž‘์—…์„ ํšจ์œจํ™” ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

4-4 ๋น„๊ตฌ์กฐํ™” ๋ฐ์ดํ„ฐ์˜ ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€

NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹จ์ˆœํžˆ ๋ชจ์•„์„œ ์ €์žฅํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์˜จ๋ผ์ธ์œผ๋กœ ์ด์šฉํ•˜๊ฑฐ๋‚˜ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ง‘๊ณ„ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ช‡ ๊ฐ€์ง€ ํŠน์ง•์„ ์•Œ์•„๋ณด์ž.

  • ๋น…๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•œ ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€์—๋Š” ํ™•์žฅ์„ฑ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜์ง€ ์•Š๊ณ ๋„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์—ฐ์„ฑ์ด ์š”๊ตฌ๋œ๋‹ค.
  • ๊ทธ ์ค‘ ๊ธฐ๋ณธ์ด ๋˜๋Š” ๊ฐ์ฒด ์Šคํ† ๋ฆฌ์ง€๋Š” ์ž„์˜์˜ ํŒŒ์ผ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ ๋‹จ์ ๋„ ๋งŽ๋‹ค.
  • ๊ฐ์ฒด ์Šคํ† ๋ฆฌ์ง€๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹œ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ์šฉ๋„๋กœ๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.
    • ํŒŒ์ผ์„ ์จ๋„ฃ์œผ๋ฉด ํ†ต์งธ๋กœ ๊ต์ฒดํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŒŒ์ผ์„ ๊ต์ฒดํ•˜๊ธฐ ์–ด๋ ต๋‹ค.
    • ์ฆ‰, ์“ฐ๊ธฐ ๋นˆ๋„๊ฐ€ ๋‚ฎ์€ ์š”๊ตฌ์‚ฌํ•ญ์— ์ ํ•ฉํ•˜๋‹ค.
    • ๊ทธ๋ž˜์„œ ์“ฐ๊ธฐ ๋นˆ๋„๊ฐ€ ๋†’์€ ๋ฐ์ดํ„ฐ๋Š” ๋ณ„๋„ RDB์— ์ €์žฅํ•˜๊ณ  ์ •๊ธฐ์ ์œผ๋กœ ์Šค๋ƒ…์ƒท์„ ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•œ๋‹ค.
  • ๋ณดํ†ต ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋Š” ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•ด ๊ณ ๋ ค๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์ด ์›์น™์ธ๋ฐ, ์ŠคํŠธ๋ฆฌ๋ฐ ํ˜•์˜ ๋ฉ”์‹œ์ง€ ๋ฐฐ์†ก ๋“ฑ์€ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๊ฐ€ ๋ณด์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค.
    • ์ผ๋ฐ˜์ ์ธ RDB๋ผ๋„ ์ถฉ๋ถ„ํ•œ ์“ฐ๊ธฐ ์„ฑ๋Šฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ถˆ์ถฉ๋ถ„ํ•œ ๊ฒฝ์šฐ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ณ ๋ คํ•ด๋ณด๋Š” ๊ฒƒ๋„ ์ข‹๋‹ค.
  • ๋˜ํ•œ ๊ฐ์ฒด ์Šคํ† ๋ฆฌ์ง€๋Š” ์“ฐ๊ธฐ ์ž‘์—…์ด ์˜ค๋ž˜ ๊ฑธ๋ ค์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘๊ณ„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๊ธฐ๊นŒ์ง€ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค.
    • ์‹ค์‹œ๊ฐ„ ์ง‘๊ณ„์™€ ๊ฒ€์ƒ‰์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ๋‹ค๋ฅธ ์ ํ•ฉํ•œ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ ๊ณ ๋ ค๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ์šฉ๋„์— ์ตœ์ ํ™”๋œ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋“ค์ด ๋“ฑ์žฅํ–ˆ๋‹ค.

  • e.g. ๋ถ„์‚ฐ KVS, ์™€์ด๋“œ ์นผ๋Ÿผ ์Šคํ† ์–ด, ๋„ํ๋จผํŠธ ์Šคํ† ์–ด, ๊ฒ€์ƒ‰ ์—”์ง„

๋ถ„์‚ฐ KVS

๋ถ„์‚ฐ KVS(distributed Key-Value Store)๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํ‚ค๊ฐ’ ์Œ์œผ๋กœ ์ €์žฅํ•˜๋„๋ก ์„ค๊ณ„๋œ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์ด๋‹ค.

  • ๊ฐ์ฒด ์Šคํ† ๋ฆฌ์ง€๋„ ๋„“์€ ์˜๋ฏธ์—์„œ ๋ถ„์‚ฐ KVS์˜ ์ผ์ข…์ด์ง€๋งŒ, ์—ฌ๊ธฐ์„œ๋Š” ์ข€ ๋” ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ •ํ•œ๋‹ค.
    • e.g. ๋ช‡ KB ์ •๋„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ดˆ๋‹น ์ˆ˜๋งŒ ๋ฒˆ ์ฝ๊ณ  ์“ฐ๋Š” ๊ฒฝ์šฐ
  • ๋ถ„์‚ฐ KVS๋Š” ๊ตฌํ˜„์ด ๋‹ค์–‘ํ•œ๋ฐ ๋ณดํ†ต ํ•œ failover๋ฅผ ์œ„ํ•œ ๊ตฌ์กฐ๋“ค์ด ์„ค๊ณ„์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.

Amazon DynamoDB

  • DynamoDB๋Š” ํ•ญ์ƒ ์•ˆ์ •๋œ ์ฝ๊ธฐ ์“ฐ๊ธฐ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•˜๋„๋ก ๋””์ž์ธ๋œ ๋ถ„์‚ฐํ˜• NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‹ค.
    • ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๊ฐœ์˜ ํ‚ค์— ์—ฐ๊ฒฐํ•˜๋Š” ํ˜•ํƒœ๋กœ ์ž„์˜์˜ ์Šคํ‚ค๋งˆ๋ฆฌ์Šค ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
    • JSON๊ณผ ๊ฐ™์ด ์ค‘์ฒฉ๋œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋„ ์ทจ๊ธ‰ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๊ฐ„๋‹จํ•œ ๋ถ„์‚ฐ KVS๋ผ๊ธฐ๋ณด๋‹ค๋Š” ๋„ํ๋จผํŠธ ์Šคํ† ์–ด๋กœ๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.
  • DynamoDB๋Š” P2P ํ˜• ๋ถ„์‚ฐ ์•„ํ‚คํ…์ฒ˜๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค.
    • ๋ฏธ๋ฆฌ ์„ค์ •ํ•œ ์ดˆ ๋‹จ์œ„์˜ ์š”์ฒญ ์ˆ˜์— ๋”ฐ๋ผ auto scaling์ด ๊ฐ€๋Šฅํ•ด์„œ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ์— ์ง€์—ฐ์ด ๋ฐœ์ƒํ•˜๋ฉด ๊ณค๋ž€ํ•œ application์— ์œ ์šฉํ•˜๋‹ค.
  • DynamoDB๋Š” ๋‹ค๋ฅธ AWS ๋ถ„์„ ์„œ๋น„์Šค์™€ ํ˜ธํ™˜์ด ์‰ฝ๋‹ค.
    • Amazon EMR, Amazon Redshift ๋“ฑ๊ณผ ๊ฒฐํ•ฉํ•ด์„œ Hive์— ์˜ํ•œ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.
    • DynamoDB Streams๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์„ ์ด๋ฒคํŠธ๋กœ ์™ธ๋ถ€์— ์ „์†กํ•ด ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆผ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
      • Kinesis Stream์ด๋ผ๋Š” ์„œ๋น„์Šค๋„ ์žˆ๋Š”๋ฐ ์ด๊ฑด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์•„๋‹ˆ๊ณ  ๋‹จ์ˆœ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค์ด๋‹ค.

์™€์ด๋“œ ์นผ๋Ÿผ ์Šคํ† ์–ด

์™€์ด๋“œ ์นผ๋Ÿผ ์Šคํ† ์–ด(wide-column store)๋Š” ๋ถ„์‚ฐ KVS๋ฅผ ๋ฐœ์ „ ์‹œ์ผœ 2๊ฐœ ์ด์ƒ์˜ ์ž„์˜์˜ ํ‚ค์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ ๊ฒƒ์ด๋‹ค.

  • e.g. Google Cloud Bigtable, Apache HBase, Apache Cassandra
  • ์™€์ด๋“œ ์นผ๋Ÿผ ์Šคํ† ์–ด์—์„œ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ํ–‰ ํ‚ค์™€ ์นผ๋Ÿผ ๋ช…์˜ ์กฐํ•ฉ์— ๋Œ€ํ•ด ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.
    • ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ํ–‰์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์นผ๋Ÿผ๋„ ์–ผ๋งˆ๋“ ์ง€ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์™€์ด๋“œ ์นผ๋Ÿผ ์Šคํ† ์–ด๋Š” ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ๊ฐ€๋กœ์™€ ์„ธ๋กœ์˜ 2์ฐจ์› ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค๋Š” ์ ์ด ํŠน์ง•์ด๋‹ค.

Apache Cassandra

  • ์•„ํŒŒ์น˜ ์นด์‚ฐ๋“œ๋ผ๋Š” ๋‚ด๋ถ€์ ์ธ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋กœ ์™€์ด๋“œ ์นผ๋Ÿผ ์Šคํ† ์–ด๋ฅผ ์ด์šฉํ•˜๋ฉด์„œ๋„ CQL์ด๋ผ ๋ถˆ๋ฆฌ๋Š” ๋†’์€ ์ˆ˜์ค€์˜ ์ฟผ๋ฆฌ ์–ธ์–ด๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค.
    • CQL์€ SQL๊ณผ ๋น„์Šทํ•ด์„œ ์‚ฌ์šฉ์„ฑ์ด ์ข‹๋‹ค.
    • ๋‹ค์Œ์€ CQL ์ฟผ๋ฆฌ์˜ ์˜ˆ์‹œ์ด๋‹ค.

  • ํ…Œ์ด๋ธ”์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์—์„œ ๋ˆˆ์น˜ ์ฑˆ ์‚ฌ๋žŒ๋„ ์žˆ๊ฒ ์ง€๋งŒ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋งŒ ์ทจ๊ธ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์นด์‚ฐ๋“œ๋ผ์˜ INSERT๋Š” upsert(insert or update)๋กœ ๋™์ž‘ํ•ด ๋™์ผํ•œ ํ‚ค๋ฅผ ๊ฐ€์ง„ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•˜๋ฉด ๋ฎ์–ด์“ฐ๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.
  • P2P ํ˜•์˜ ๋ถ„์‚ฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค.
    • ์ง€์ •ํ•œ ํ‚ค์— ์˜ํ•ด์„œ ๊ฒฐ์ •ํ•œ ๋…ธ๋“œ์—๋Š” ํ•ด๋‹น ํ‚ค์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.
    • ๋”ฐ๋ผ์„œ ๋‹ค์ˆ˜์˜ ๋…๋ฆฝ์ ์ธ ํ‚ค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์— ์ฒ˜๋ฆฌ๋ฅผ ์ž˜ ๋ถ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์™€์ด๋“œ ์นผ๋Ÿผ ์Šคํ† ์–ด๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘๊ณ„ํ•˜๋Š” ๊ฒƒ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.
    • ์ง‘๊ณ„๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋ถ„์‚ฐ๋œ ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ.
    • Hive, Presto ๊ทธ๋ฆฌ๊ณ  Spark ๋“ฑ์˜ ์ฟผ๋ฆฌ ์—”์ง„์€ ๋ชจ๋‘ ์นด์‚ฐ๋“œ๋ผ๋กœ ๋ถ€ํ„ฐ์˜ ๋ฐ์ดํ„ฐ ๋กœ๋“œ์— ๋Œ€์‘ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋ฐ์ดํ„ฐ ๋ถ„์„์„ ์œ„ํ•ด ์ฟผ๋ฆฌ ์—”์ง„์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

๋„ํ๋จผํŠธ ์Šคํ† ์–ด

  • ์™€์ด๋“œ ์นผ๋Ÿผ ์Šคํ† ์–ด๊ฐ€ ์ฃผ๋กœ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ๋ฐ˜๋ฉด, ๋„ํ๋จผํŠธ ์Šคํ† ์–ด(document store) ๋Š” ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์˜ ์œ ์—ฐ์„ฑ์„ ๋ชฉ์ ์œผ๋กœ ํ•œ๋‹ค.
    • ๊ตฌ์ฒด์ ์œผ๋กœ๋Š” JSON์ฒ˜๋Ÿผ ๋ณต์žกํ•˜๊ฒŒ ๋’ค์–ฝํžŒ ์Šคํ‚ค๋งˆ๋ฆฌ์Šค ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ์˜ ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๊ณ  ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ์œ ์—ฐํ•˜๋‹ค
    • ๊ฐ„๋‹จํ•œ ๋ถ„์‚ฐ KVS๋„ JSON ํ…์ŠคํŠธ๋ฅผ ์ €์žฅํ•  ์ˆœ ์žˆ์ง€๋งŒ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜๋Š” ์—†๋‹ค.
    • ๋„ํ๋จผํŠธ ์Šคํ† ์–ด๋Š” ๋ฐฐ์—ด๊ณผ ์—ฐ์ƒ ๋ฐฐ์—ด(Map) ๊ฐ™์ด ์ค‘์ฒฉ๋œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋„ํ๋จผํŠธ ์ผ๋ถ€๋งŒ์„ ์น˜ํ™˜ํ•˜๋Š” ์‹์˜ ์ฟผ๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์žฅ์ 
    • ์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. (schema less, ์œ ์—ฐ์„ฑ)
      • ์™ธ๋ถ€์—์„œ ๋“ค์—ฌ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ํŠนํžˆ ์ ํ•ฉํ•จ
      • ์ž์ฒด ๊ฐœ๋ฐœํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ์—์„œ๋Š” ๋ช…์‹œ์ ์œผ๋กœ ์Šคํ‚ค๋งˆ๋ฅผ ์ •ํ•˜๋Š” ํŽธ์ด ์ข‹์€ ์ ๋„ ๋งŽ์œผ๋ฏ€๋กœ ๋„ํ๋จผํŠธ ์Šคํ† ์–ด๋Š” ์ฃผ๋กœ ์ฐธ๊ณ  ์‹œ์Šคํ…œ์˜ ๋ฐ์ดํ„ฐ ๋ฐ ๋กœ๊ทธ ์ €์žฅ ๋“ฑ์— ์ ํ•ฉํ•จ.

MongoDB

  • ๋ชฝ๊ณ ๋””๋น„๋Š” ์˜คํ”ˆ ์†Œ์Šค ๋ถ„์‚ฐํ˜• ๋„ํ๋จผํŠธ ์Šคํ† ์–ด์ด๋‹ค.
  • ์‹ ๋ขฐ์„ฑ์„ ํฌ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ง€๋งŒ ๊ฐ„ํŽธํ•จ ๋•Œ๋ฌธ์ธ์ง€ ์ธ๊ธฐ๊ฐ€ ์ข‹๋‹ค.
  • ๋ชฝ๊ณ ๋””๋น„๋Š” ์—ฌ๋Ÿฌ ๋…ธ๋“œ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘๊ณ„ํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.
    • ๋ฐ์ดํ„ฐ ๋ถ„์„์ด ๋ชฉ์ ์ธ ๊ฒฝ์šฐ์—๋Š” ์—ญ์‹œ ์ฟผ๋ฆฌ ์—”์ง„์ด ํ•„์š”ํ•˜๋‹ค.

๊ฒ€์ƒ‰ ์—”์ง„

  • ๊ฒ€์ƒ‰ ์—”์ง„(serch engine)์€ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ ๋ฐ ์Šคํ‚ค๋งˆ๋ฆฌ์Šค ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘๊ณ„ํ•˜๋Š” ๋ฐ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.
  • ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋ฌธ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ์—ญ ์ƒ‰์ธ(index)์„ ๋งŒ๋“œ๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.
    • ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ์‹œ์Šคํ…œ ๋ถ€ํ•˜ ๋ฐ ๋””์Šคํฌ ์†Œ๋น„๋Ÿ‰์€ ์ปค์ง€์ง€๋งŒ ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰์ด ํ›จ์”ฌ ๊ณ ์†ํ™”๋œ๋‹ค.
    • ๋Œ€๋ถ€๋ถ„์˜ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์ƒ‰์ธ ์ž‘์„ฑ์„ ์ œํ•œํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ ์—”์ง„์€ ์ ๊ทน์ ์œผ๋กœ ์ƒ‰์ธ์„ ๋งŒ๋“ค์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ๊ฒƒ์— ํŠนํ™”๋˜์–ด ์žˆ๋‹ค.
      • fyi; ์ƒ‰์ธ(index)๋Š” ๋ฐ์ดํ„ฐ ์“ฐ๊ธฐ ์‹œ์— ์žฌ๊ตฌ์„ฑ์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋œ๋‹ค.
  • ๊ฒ€์ƒ‰ ์—”์ง„์€ ๋ฐ์ดํ„ฐ์˜ ์ง‘๊ณ„์— ์ ํ•ฉํ•˜๋‹ค.
    • ํŠนํžˆ ๋น„์ •์ƒ์ ์ธ ์ƒํƒœ์˜ ๊ฐ์ง€ ๋ฐ ๋ณด์•ˆ ์ฒดํฌ, ๊ณ ๊ฐ ์„œํฌํŠธ์ฒ˜๋Ÿผ ๋ฏผ์ฒฉ์„ฑ์ด ์š”๊ตฌ๋˜๋Š” ์šฉ๋„์—์„œ ์ตœ์‹  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.
  • ๊ฒ€์ƒ‰ ์—”์ง„์€ ์žฅ๊ธฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ•์ ํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์‹ค์‹œ๊ฐ„ ์ง‘๊ณ„ ์‹œ์Šคํ…œ์˜ ์ผ๋ถ€๋กœ ์ด์šฉ๋œ๋‹ค.
    • e.g. ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€์— ๋”ฐ๋กœ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ ์—”์ง„์—๋„ ์ „์†กํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์„ฑ์ด ๋†’์€ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ํ™œ์šฉํ•œ๋‹ค.
  • ๋Œ€ํ‘œ์ ์œผ๋กœ Elasticsearch, Splunk, Apache Solr๊ฐ€ ์žˆ๋‹ค.

Elasticsearch

์ง€๊ธˆ ๊ธฐ์ค€์œผ๋กœ ์—˜๋ผ์Šคํ‹ฑ์„œ์น˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ๊ฒ€์ƒ‰ ์—”์ง„ ์ค‘ ๊ฐ€์žฅ ์ธ๊ธฐ์žˆ๋‹ค.

๋ณดํ†ต ELK ์Šคํƒ ํ˜น์€ Elastic ์Šคํƒ์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๋กœ๊ทธ ์ˆ˜์ง‘ ์†Œํ”„ํŠธ์›จ์–ด Logstash, ์‹œ๊ฐํ™” ์†Œํ”„ํŠธ์›จ์–ด Kibana์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋œ๋‹ค.

  • ์—˜๋ผ์Šคํ‹ฑ์„œ์น˜๋Š” ์ž„์˜์˜ JSON ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์•„๋ฌด๊ฒƒ๋„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ํ•„๋“œ์— ์ƒ‰์ธ์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.
    • ํ•„์š”์— ๋”ฐ๋ผ ์Šคํ‚ค๋งˆ๋ฅผ ๊ฒฐ์ •ํ•ด์„œ ์ƒ‰์ธ์„ ๋ฌดํšจํ™”ํ•˜๋Š” ์‹์˜ ํŠœ๋‹์ด ํ•„์š”ํ•˜๋‹ค.
    • ๋Œ€๋ถ€๋ถ„์˜ ๊ฒ€์ƒ‰ ์—”์ง„์—์„œ ์ด๋Ÿฐ ์˜ต์…˜์„ ์ง€์›ํ•œ๋‹ค e.g. solr
  • ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ์—์„œ๋Š” ์—ญ ์ƒ‰์ธ์ด ๊ตฌ์ถ•๋œ๋‹ค.
  • ์ƒ‰์ธ์ด ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ•œ ๋„ํ๋จผํŠธ ์Šคํ† ์–ด๋ณด๋‹ค ๋น„๊ต์  ์“ฐ๊ธฐ ๋ถ€ํ•˜๊ฐ€ ํฌ๋‹ค
  • ์ž์ฒด ์ฟผ๋ฆฌ ์–ธ์–ด๋ฅผ ํ†ตํ•ด ๊ณ ๊ธ‰ ์ง‘๊ณ„ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
    • ์—ด ์ง€ํ–ฅ ์Šคํ† ๋ฆฌ์ง€์—๋„ ๋Œ€์‘ํ•˜๊ณ  ์žˆ์–ด ๊ทธ๊ฒƒ๋งŒ์œผ๋กœ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘๊ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฐ˜์ด ๋œ๋‹ค.
    • SQL๊ณผ๋Š” ์กฐ๊ธˆ ๋‹ฌ๋ผ์„œ ์‚ฌ๋žŒ์ด ์ง์ ‘ ์ž‘์„ฑํ•˜๊ธฐ์—๋Š” ๋ณต์žกํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ Kibana์™€ ๊ฐ™์€ ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ํ”„๋กœ๊ทธ๋žจ ์•ˆ์—์„œ ํ˜ธ์ถœํ•˜๋Š” ์‹์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

ํด๋ผ์ด์–ธํŠธ์˜ ์‹œ๊ณ„๊ฐ€ ๊ณ ์žฅ๋‚ฌ์„ ์ˆ˜ ์žˆ๋‹ค

  • ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ๊ฐ€๋” 1% ๋ฏธ๋งŒ์˜ ๋ฐ์ดํ„ฐ์˜ ์ด๋ฒคํŠธ ์‹œ๊ฐ„์ด ๊ณผ๊ฑฐ์—์„œ ๋ฏธ๋ž˜๋กœ ๋„๋ฆฌ ๋ถ„ํฌํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์ด๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์‹œ๊ณ„์— ๋ฌธ์ œ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • ์ด๋Ÿฐ ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๊ฐ€ ๋„“์œผ๋ฉด ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€์— ๋Œ€๋Ÿ‰์˜ ์ž‘์€ ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๊ณ  ๊ทธ ํŒŒ์ผ์„ ์ฝ๊ณ  ์“ฐ๋Š” ๊ฒƒ์— ์˜ํ•ด์„œ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋œ๋‹ค.
  • ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๋ฏธ๋ฆฌ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋จผ ๊ณผ๊ฑฐ๋‚˜ ๋ฏธ๋ž˜์˜ ์‹œ๊ฐ„์„ ํฌํ•จํ•œ ๋ฐ์ดํ„ฐ๋Š” ๊ทธ๊ฒƒ์„ ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€์— ๋„ฃ๊ธฐ ์ „์— ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

์š”์•ฝ

๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•„์„œ ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•˜๊ธฐ๊นŒ์ง€ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์˜ ํ๋ฆ„์— ๋Œ€ํ•ด ์•Œ์•„๋ดค๋‹ค ์ด๋ฅผ ํ‚ค์›Œ๋“œ๋กœ ์š”์•ฝํ•ด๋ณด์ž

  • ๋ฐ์ดํ„ฐ ์ „์†ก
    • ๋ฒŒํฌ ํ˜•
    • ์ŠคํŠธ๋ฆฌ๋ฐ ํ˜•
  • ๋ฉ”์‹œ์ง€ ๋ฐฐ์†ก ๋ฐฉ์‹๊ณผ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„
    • ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค
      • producer
      • consumer
    • ๋ฉ”์‹œ์ง€ ๋ฐฐ์†ก์˜ ์‹ ๋ขฐ์„ฑ ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ
      • most once
      • exactly once
      • at least once
  • ๋ฐ์ดํ„ฐ ์ƒ‰์ธ์„ ํ†ตํ•œ ์ตœ์ ํ™”
    • ์‹œ๊ณ„์—ด ์ธ๋ฑ์Šค
    • ๋ฐ์ดํ„ฐ ๋ฏธ๋ฆฌ ์ •๋ ฌํ•ด๋‘๊ธฐ(์กฐ๊ฑด์ ˆ ํ‘ธ์‰ฌ ๋‹ค์šด)
    • ๋ฐ์ดํ„ฐ ๋งˆํŠธ ๊ตฌ์กฐ ํ™œ์šฉํ•˜๊ธฐ
  • NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“ฑ ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€
    • ๋ถ„์‚ฐ KVS
    • ์™€์ด๋“œ ์นผ๋Ÿผ ์Šคํ† ์–ด
    • ๋„ํ๋จผํŠธ ์Šคํ† ์–ด
    • ๊ฒ€์ƒ‰ ์—”์ง„

 

์ถœ์ฒ˜

https://www.yes24.com/Product/Goods/66277191

 

๋ฐ˜์‘ํ˜•