DB๋ถ€ํ•˜ ๋ฉˆ์ถฐ!

y0on2q
  • #log
  • #firehose
  • #kinesis
  • #database

1. ๋“ค์–ด๊ฐ€๋ฉฐ

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

1.1. ๊ธฐ์กด ๊ตฌ์กฐ ๋ฐ ๋ฌธ์ œ์ 

๊ธฐ์กด์—๋Š” ๋™์˜์ƒ ์‹œ์ฒญ๋กœ๊ทธ๋ฅผ, 10์ดˆ๋งˆ๋‹ค RDB์— ์ €์žฅํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
์„œ๋น„์Šค ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๋ฉด์„œ, ์—ฌ๋Ÿฌ ๋ฌธ์ œ์ ์ด ๋‚˜ํƒ€๋‚˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์ฒซ ๋ฒˆ์งธ๋กœ, DB์— ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    ํ•˜๋‚˜์˜ ์œ ์ €๊ฐ€ 10์ดˆ ํ˜น์€ ๋” ์งง์€ ์‹œ๊ฐ„ ๋™์•ˆ DB์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
    ๋‹ค์ˆ˜ ์œ ์ €์˜ ๋™์‹œ ์‹œ์ฒญ์˜ ๊ฒฝ์šฐ์—๋„, RDB์— ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
    ๋˜ํ•œ ํ†ต๊ณ„๋ฅผ ์œ„ํ•œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋„, production DB์— ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๋‘ ๋ฒˆ์งธ๋กœ, DB์˜ ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.
    ์œ ์ €์—๊ฒŒ ์ง์ ‘ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋กœ๊ทธ์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ, RDB์— ์ €์žฅํ•จ์œผ๋กœ ์ธํ•œ ๋น„ํšจ์œจ์ด ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

2. ์ƒˆ ๊ธฐ์ˆ  ์Šคํƒ์„ ์„ ํƒํ•˜๋ฉฐ

์ด์— ์›๋”์›” ๊ฐœ๋ฐœํŒ€์—์„œ๋Š”, RDB์—์„œ ํ•ด๋‹น ํ…Œ์ด๋ธ”์„ ๋ถ„๋ฆฌํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด ๊ณผ์ •์—์„œ ๋‹ค์–‘ํ•œ ์ œ์•ฝ ๋ฐ ๊ณ ๋ ค์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  1. ์ถ”ํ›„ ํ†ต๊ณ„๋“ฑ์— ์‚ฌ์šฉํ•˜๊ธฐ์— ํŽธ๋ฆฌํ•˜์—ฌ์•ผ ํ•œ๋‹ค.
    ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งˆ์ผ€ํŒ…, ํ†ต๊ณ„ ๋ถ„์„ ๋“ฑ ๋‹ค์–‘ํ•œ ํŒ€์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    ํ•˜์—ฌ ํ†ต๊ณ„์— ์šฉ์ดํ•˜๊ณ , ์ถ”ํ›„ data warehouse ๋กœ์˜ ํ™•์žฅ๊ฐ€๋Šฅ์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

  2. production DB์— ๋ถ€ํ•˜๋ฅผ ์ฃผ์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.
    ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์˜์ƒ์„ ์‹œ์ฒญํ•˜๋Š” ๋™์•ˆ์—๋„, ๋‹ค๋ฅธ ์„œ๋น„์Šค๋“ค์ด ๋กœ๊ทธ ์ €์žฅ์œผ๋กœ ์ธํ•œ ๋ณ‘๋ชฉ์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๊ฒƒ์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.

3. ๊ธฐ์ˆ ์Šคํƒ์˜ ๊ณ ๋ ค

์ด์— ์›๋”์›” ๊ฐœ๋ฐœํŒ€์—์„œ๋Š”, ์ด 4๊ฐ€์ง€์˜ ๊ธฐ์ˆ ์„ ๊ณ ๋ คํ•˜๊ณ , ํ…Œ์ŠคํŠธํ•˜์˜€์Šต๋‹ˆ๋‹ค.

1. Atlas + MongoDB

์ฒ˜์Œ์œผ๋กœ ๊ณ ๋ คํ–ˆ๋˜ ๊ฒƒ์€, MongoDB ์™€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ๋ฐ˜์˜ Atlas ์˜€์Šต๋‹ˆ๋‹ค.
NoSQL์˜ ํŠน์„ฑ์ƒ, ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ์˜ ํšจ๊ณผ์ ์ธ ์ €์žฅ์ด ๊ฐ€๋Šฅํ•˜๊ณ , ์‹ค์ œ DB์™€์˜ ๊ฒฉ๋ฆฌ๋„ ๊ฐ€๋Šฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.
๋‹ค๋งŒ Atlas์˜ ๊ด€๋ฆฌ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•œ ์ ์ด ๋‹จ์ ์œผ๋กœ ์ž‘์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ NoSQL์˜ ํŠน์„ฑ์ƒ ํ†ต๊ณ„๋“ฑ์˜ ์ž‘์—…์„ ํ•  ๋•Œ, ์ง‘๊ณ„ ํ•จ์ˆ˜์˜ ๋ถ€์žฌ ๋“ฑ์œผ๋กœ ์ธํ•œ ํผํฌ๋จผ์Šค ๋ฐ ํ†ต๊ณ„ ์ž‘์—…์—์„œ๋„ ๋น„ํšจ์œจ์ ์ด๋ผ ํŒ๋‹จํ•˜์˜€์Šต๋‹ˆ๋‹ค.

2. AWS DynamoDB

๋‹ค์Œ์œผ๋กœ ๊ณ ๋ คํ–ˆ๋˜ ๊ฒƒ์€, aws DynamoDB ์˜€์Šต๋‹ˆ๋‹ค.
AWS ์ธํ”„๋ผ์™€ ํ†ตํ•ฉ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ๊ณผ, ์‹ค์ œ DB ์™€์˜ ๊ฒฉ๋ฆฌ๋„ ๊ฐ€๋Šฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.
๋‹ค๋งŒ ํŠธ๋ž˜ํ”ฝ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ณ„์‚ฐํ•ด๋ณธ ๊ฒฐ๊ณผ, ๋†’์€ ๋น„์šฉ์ด ํ•˜๋‚˜์˜ ๊ฑธ๋ฆผ๋Œ์ด์—ˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ๋ฌธ์„œ๋‚˜ ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ์•„์ง์€ ํ’๋ถ€ํ•˜์ง€ ๋ชปํ•˜๋‹ค๊ณ  ๋Š๊ปด ์„ ํƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

3. Google BigQuery

์„ธ๋ฒˆ์งธ๋กœ ๊ณ ๋ คํ•œ ๊ฒƒ์€, Google BigQuery์˜€์Šต๋‹ˆ๋‹ค.
๋น…์ฟผ๋ฆฌ๋Š” ๊ตฌ๊ธ€์—์„œ ๊ฐœ๋ฐœํ•œ ํ†ต๊ณ„, ๋ถ„์„ ์šฉ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.
ํฐ ๊ทœ๋ชจ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ๋•Œ, ๊ทธ๋ฆฌ๊ณ  ์•ˆ์ •์„ฑ๋„ ์–ด๋Š ์ •๋„ ๋ณด์žฅ๋œ ๊ธฐ์ˆ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.
๋‹ค๋งŒ ๋กœ๊ทธ์„ฑ ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ์„ ์œ„ํ•ด gcp๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ์•ผ ํ•˜์—ฌ, ์ธํ”„๋ผ ๊ด€๋ฆฌํฌ์ธํŠธ์˜ ์ฆ๊ฐ€๊ฐ€ ๋‹จ์ ์œผ๋กœ ์ž‘์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ, ์‹ค์‹œ๊ฐ„์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๋กœ ํ™•์ธํ•˜๊ณ , ์ฒ˜๋ฆฌํ•˜๊ธฐ์—๋„ ์กฐ๊ธˆ์˜ ๋‹จ์ ์ด ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ตœ์ข… ๊ธฐ์ˆ ์Šคํƒ

์ €ํฌ๋Š” aws kinesis๊ธฐ๋ฐ˜์˜ data stream ์ธ firehose๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ฒฐ์ •ํ•œ ๋ฐฐ๊ฒฝ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค

1. Full-managed Service

aws firehose๋Š” full-managed service์ž…๋‹ˆ๋‹ค.
์ด๋ฅผ ํ†ตํ•ด, ํŠธ๋ž˜ํ”ฝ์— ๋”ฐ๋ฅธ ์ธํ”„๋ผ์˜ ๊ด€๋ฆฌ ๋“ฑ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋”์šฑ ์ค„์ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ๋‹ค๋ฅธ aws ๊ธฐ์ˆ ๊ณผ์˜ ํ†ตํ•ฉ๋„ ์šฉ์ดํ• ๊ฒƒ์ด๋ผ๊ณ  ํŒ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.

2. Glue + Athena๋ฅผ ํ†ตํ•œ ์ฟผ๋ฆฌ

firehose stream์œผ๋กœ ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ, SQL๋กœ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ ์ด ์ด๋ฏธ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฅผ ํ†ตํ•ด, ํ†ต๊ณ„ ๋ถ„์„์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด์„œ, ์‹ค์„œ๋ฒ„์˜ ๋ถ€ํ•˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ํŒ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.

After.

์™„์„ฑ๋œ ์•„ํ‚คํ…์ณ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. Client์—์„œ ์š”์ฒญ์ด ์˜ค๋ฉด, ํ•ด๋‹น ์š”์ฒญ์„ ๋žŒ๋‹ค๊ฐ€ SQS์— ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  2. SQS๋ฅผ ๊ตฌ๋… ์ค‘์ธ handler ๊ฐ€ ํ์— ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ firehose์— ์ „์†กํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  3. firehose๋Š” ์ผ์ • ์‹œ๊ฐ„, ํ˜น์€ ์ผ์ • ํฌ๊ธฐ๊ฐ€ ๋„˜๋Š” ๊ฒฝ์šฐ, S3๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  4. lambda cron job ์„ ํ†ตํ•ด, glue๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ํฌ๋กค๋Ÿฌ๋ฅผ ๋™์ž‘์‹œํ‚ต๋‹ˆ๋‹ค.
  5. glue๋ฅผ ํ†ตํ•œ ํฌ๋กค๋ง์ด ์ง„ํ–‰๋˜๋ฉด, s3์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  6. ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š”, Athena๋ฅผ ํ†ตํ•ด ์ฟผ๋ฆฌํ•˜๊ณ , ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋Š” RDS์— ์ €์žฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋งˆ๋ฌด๋ฆฌํ•˜๋ฉฐ.

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

โ† ๋ชฉ๋ก์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ

Art Changes Life

๋…ธ๋จธ์Šค์™€ ํ•จ๊ป˜ ์—”ํ„ฐํ…Œํฌ ์‚ฐ์—…์„ ํ˜์‹ ํ•ด๋‚˜๊ฐˆ ๋ฉค๋ฒ„๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

์ฑ„์šฉ ์ค‘์ธ ๊ณต๊ณ  ๋ณด๊ธฐ