DB๋ถํ ๋ฉ์ถฐ!
- #log
- #firehose
- #kinesis
- #database
1. ๋ค์ด๊ฐ๋ฉฐ
์๋
ํ์ธ์. ์๋์ ๊ฐ๋ฐํ ํ์์ง(y0on2q) ๋ผ๊ณ ํฉ๋๋ค.
์๋์์ ํด๋์ค, ์ํธ๋ฉ ๋ฑ์ ๋น๋์ค ์ปจํ
์ธ ์ฌ์
์ ์งํ์ค์ ์์ต๋๋ค.
๋ค์ํ ๋ฐ์ดํฐ ๋ถ์ ๋ฐ ํต๊ณ ์์
์ ์ํ์ฌ, ์ ์ ์ ๋์์ ์์ฒญ ๋ก๊ทธ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ ์ฅํ๊ณ ์์ต๋๋ค.
ํด๋น ์๋น์ค์ ๋ณํ ๊ณผ์ ์ ์ดํด๋ณด๊ณ , ํ์ฌ ๊ตฌ์กฐ์ ๋ํด์๋ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
1.1. ๊ธฐ์กด ๊ตฌ์กฐ ๋ฐ ๋ฌธ์ ์
๊ธฐ์กด์๋ ๋์์ ์์ฒญ๋ก๊ทธ๋ฅผ, 10์ด๋ง๋ค RDB์ ์ ์ฅํ๊ณ ์์์ต๋๋ค.
์๋น์ค ๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด์, ์ฌ๋ฌ ๋ฌธ์ ์ ์ด ๋ํ๋๊ธฐ ์์ํ์ต๋๋ค.
-
์ฒซ ๋ฒ์งธ๋ก, DB์ ๋ถํ๊ฐ ๋ฐ์๋๋ค๋ ๊ฒ์ ๋๋ค.
ํ๋์ ์ ์ ๊ฐ 10์ด ํน์ ๋ ์งง์ ์๊ฐ ๋์ DB์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ณ ์์์ต๋๋ค.
๋ค์ ์ ์ ์ ๋์ ์์ฒญ์ ๊ฒฝ์ฐ์๋, RDB์ ๋ถํ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋ํ ํต๊ณ๋ฅผ ์ํ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋, production DB์ ๋ถํ๊ฐ ๋ฐ์ํ๊ณ ์์์ต๋๋ค. -
๋ ๋ฒ์งธ๋ก, DB์ ๋ญ๋น๊ฐ ๋ฐ์ํ๋ค๋ ์ ์ ๋๋ค.
์ ์ ์๊ฒ ์ง์ ํ์ํ์ง ์์ ๋ก๊ทธ์ฑ ๋ฐ์ดํฐ๋ฅผ, RDB์ ์ ์ฅํจ์ผ๋ก ์ธํ ๋นํจ์จ์ด ๋ฐ์ํ๊ณ ์์์ต๋๋ค.
2. ์ ๊ธฐ์ ์คํ์ ์ ํํ๋ฉฐ
์ด์ ์๋์ ๊ฐ๋ฐํ์์๋, RDB์์ ํด๋น ํ
์ด๋ธ์ ๋ถ๋ฆฌํ๊ธฐ๋ก ํ์ต๋๋ค.
์ด ๊ณผ์ ์์ ๋ค์ํ ์ ์ฝ ๋ฐ ๊ณ ๋ ค์ฌํญ์ด ๋ฐ์ํ์์ต๋๋ค.
-
์ถํ ํต๊ณ๋ฑ์ ์ฌ์ฉํ๊ธฐ์ ํธ๋ฆฌํ์ฌ์ผ ํ๋ค.
ํด๋น ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง์ผํ , ํต๊ณ ๋ถ์ ๋ฑ ๋ค์ํ ํ์์ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ์ฌ์ผ ํฉ๋๋ค.
ํ์ฌ ํต๊ณ์ ์ฉ์ดํ๊ณ , ์ถํ data warehouse ๋ก์ ํ์ฅ๊ฐ๋ฅ์ฑ์ ๊ณ ๋ คํ์ฌ์ผ ํ์ต๋๋ค. -
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.
์์ฑ๋ ์ํคํ ์ณ๋ ์๋์ ๊ฐ์ต๋๋ค.
- Client์์ ์์ฒญ์ด ์ค๋ฉด, ํด๋น ์์ฒญ์ ๋๋ค๊ฐ SQS์ ์ ์กํฉ๋๋ค.
- SQS๋ฅผ ๊ตฌ๋ ์ค์ธ handler ๊ฐ ํ์ ๋ค์ด์จ ๋ฐ์ดํฐ๋ฅผ firehose์ ์ ์กํ๊ฒ ๋ฉ๋๋ค.
- firehose๋ ์ผ์ ์๊ฐ, ํน์ ์ผ์ ํฌ๊ธฐ๊ฐ ๋๋ ๊ฒฝ์ฐ, S3๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ฒ ๋ฉ๋๋ค.
- lambda cron job ์ ํตํด, glue๋ฅผ ํตํ ๋ฐ์ดํฐ ํฌ๋กค๋ฌ๋ฅผ ๋์์ํต๋๋ค.
- glue๋ฅผ ํตํ ํฌ๋กค๋ง์ด ์งํ๋๋ฉด, s3์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๊ฒ ๋ฉ๋๋ค.
- ์ ์ฅ๋ ๋ฐ์ดํฐ๋, Athena๋ฅผ ํตํด ์ฟผ๋ฆฌํ๊ณ , ํ์ํ ๋ฐ์ดํฐ๋ RDS์ ์ ์ฅํ๊ฒ ๋ฉ๋๋ค.
๋ง๋ฌด๋ฆฌํ๋ฉฐ.
์ง๊ธ๊น์ง, ์๋์ ๊ฐ๋ฐํ์์ ์งํํ ๋ก๊ทธ์ฑ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํคํ
์ณ ๊ตฌ์ถ์ ๋ํ์ฌ ์ค๋ช
๋๋ ธ์ต๋๋ค.
์ด๋ฟ๋ง ์๋๋ผ ์๋์ ๊ฐ๋ฐํ์์๋ ๋ค์ํ ๊ฐ๋ฐ์ ๊ณ ๋ฏผ๊ณผ ์ฑ๋ฆฐ์ง์ด ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
์๋์๊ณผ ํจ๊ปํ๊ธธ ์ํ์ ๋ค๋ฉด, ์ฑ์ฉ๊ณต๊ณ ๋ฅผ ํตํด ์ง์ ๋ถํ๋๋ฆฝ๋๋ค.
๊ฐ์ฌํฉ๋๋ค :)