๐Ÿณ Data Engineering/Data Pipeline

Amazon Redshift ์›จ์–ดํ•˜์šฐ์Šค๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๊ตฌ์„ฑ ์ €๋ฒˆ ํฌ์ŠคํŒ…๋“ค์„ ํ†ตํ•ด ์›ํ•˜๋Š” ์†Œ์Šค ์‹œ์Šคํ…œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ–ˆ๋Š”๋ฐ ์ด์ œ Redshift ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์„ ์™„๋ฃŒํ•  ์ฐจ๋ก€์ด๋‹ค! => ๋กœ๋“œ ๋ฐฉ๋ฒ•์€ ๋ฐ์ดํ„ฐ ์ถ”์ถœ ์‚ฐ์ถœ๋ฌผ์ด ์–ด๋–ค ๋ชจ์Šต์ธ์ง€์— ๋”ฐ๋ผ ๋‹ค๋ฆ„ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค๋กœ Amazon Redshift๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•œ ํ›„ ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•ด S3์™€ ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๊ฐ„๋‹จํ•œ๋‹ค ์šฐ์„  S3์—์„œ ์ฝ๊ธฐ์™€ ๊ด€๋ จ๋œ ๊ถŒํ•œ์„ Redshift ํด๋Ÿฌ์Šคํ„ฐ์— ์ง์ ‘ ํ• ๋‹นํ•  IAM ์—ญํ• ์„ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š”๋ฐ IAM์˜ ํƒ์ƒ‰ ๋ฉ”๋‰ด์—์„œ ์—ญํ• ์„ ์„ ํƒํ•˜๊ณ  [์—ญํ•  ๋งŒ๋“ค๊ธฐ]๋ฅผ ํด๋ฆญํ•œ ํ›„ ์„ ํƒํ•  AWS ์„œ๋น„์Šค ๋ชฉ๋ก์—์„œ Redshift๋ฅผ ์ฐพ์•„ ์„ ํƒํ•˜๊ณ  [์‚ฌ์šฉ ์‚ฌ๋ก€ ์„ ํƒ] ์—์„œ 'Redshift - Customizab..
MongoDB์—์„œ ๋ฐ์ดํ„ฐ ์ถ”์ถœ ์ด๋ฒˆ ์˜ˆ์ œ์—์„œ๋Š” ์ง‘ํ•ฉ(collection)์—์„œ MongoDB ๋ฌธ์„œ(document)์˜ ํ•˜์œ„ ์ง‘ํ•ฉ์„ ์ถ”์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค! => ์ด ์˜ˆ์ œ์—์„œ MongoDB ์ง‘ํ•ฉ์—์„œ ๋ฌธ์„œ๋Š” ์›น ์„œ๋ฒ„์™€ ๊ฐ™์€ ์ผ๋ถ€ ์‹œ์Šคํ…œ์—์„œ ๊ธฐ๋ก๋œ ์ด๋ฒคํŠธ๋ฅผ ๋‚˜ํƒ€๋ƒ„ (env) pip install pymongo => MongoDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋จผ์ € PyMongo ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค ๊ทธ ํ›„ MongoDB์˜ Atlas์—์„œ ๋ฌด๋ฃŒ MongoDB ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค! (env) pip install dnspython => MongoDB Atlas์—์„œ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ์— ์—ฐ๊ฒฐํ•  ๋•Œ pymongo๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด dnspython์ด๋ผ๋Š” ํŒŒ์ด์ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ•˜๋‚˜ ๋” ์„ค์น˜ํ•ด์•ผ ..
์ด๋ฒˆ ํฌ์ŠคํŒ…๊ณผ ๋‹ค์Œ ํฌ์ŠคํŒ…์„ ํ†ตํ•ด ๊ณตํ†ต ์‹œ์Šคํ…œ์—์„œ๋ถ€ํ„ฐ ๋˜๋Š” ๊ณตํ†ต ์‹œ์Šคํ…œ์œผ๋กœ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ณด๋‚ด๊ณ  ์ˆ˜์ง‘ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ ์˜ˆ์ œ๋ฅผ ์ด์šฉํ•ด ๊ณต๋ถ€๋ฅผ ํ•ด๋ณด๊ฒ ์Šด๋‹ค..!ํŒŒ์ด์ฌ ํ™˜๊ฒฝ ์„ค์ • ์•ž์œผ๋กœ ๋‚˜์˜ฌ ๋ชจ๋“  ์ฝ”๋“œ ์˜ˆ์ œ๋Š” ํŒŒ์ด์ฌ๊ณผ SQL๋กœ ์ž‘์„ฑ๋˜๋ฉฐ ์˜ค๋Š˜๋‚  ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋ง ๋ถ„์•ผ์—์„œ ํ”ํžˆ ์‚ฌ์šฉ๋˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค ์ด๋ฒˆ ์‹ค์Šต์— ์‚ฌ์šฉ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์ „์— ์„ค์น˜ํ•  ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค => ๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํŒŒ์ด์ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์œ ์šฉํ•œ virtualenv ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉ (์ด๋ฅผ ํ†ตํ•ด ํŒŒ์ด์ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ „์—ญ์ด ์•„๋‹Œ ํ”„๋กœ์ ํŠธ์— ๋งž๋Š” ๋ฒ”์œ„ ๋‚ด์—์„œ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Œ) $ python -m venv env ๋ฅผ ํ†ตํ•ด env๋ผ๋Š” ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜๊ณ  window์˜ ๊ฒฝ์šฐ(์ œ๊ฐ€ window ํ™˜๊ฒฝ์—์„œ ..
ํŒŒ์ดํ”„๋ผ์ธ์€ ๊ฐ์ž ๋‹ค๋ฅธ ๋ชฉํ‘œ์™€ ์ œ์•ฝ ์กฐ๊ฑด์„ ๊ฐ–๊ฒŒ ๋˜๋Š”๋ฐ ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐ์ดํ„ฐ์˜ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ์—ฌ๋ถ€, ๋งค์ผ ๋ฐ์ดํ„ฐ๊ฐ€ ์—…๋ฐ์ดํŠธ๋  ์ˆ˜ ์žˆ๋Š”์ง€, ๋ถ„์„๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ์ข…์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ• ์ง€ ๋“ฑ์ด๋‹ค ์ด๋ฒˆ์—๋Š” ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋กœ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์„ฑ๊ณต์ ์ธ ๋ช‡ ๊ฐ€์ง€ ๊ณตํ†ต ํŒจํ„ด์„ ๊ณต๋ถ€ํ•ด๋ณด๊ฒ ๋‹ค!  ETL๊ณผ ELT  ETL๊ณผ ELT ๋ชจ๋‘ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์ง• ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ์ธํ…”๋ฆฌ์ „์Šค์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํŒจํ„ด์ด๋‹ค (๋‘˜๋‹ค ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์ง•์— ๋ฟŒ๋ฆฌ๋ฅผ ๋‘๊ณ  ์žˆ์Œ) ๋‘ ํŒจํ„ด ๋ชจ๋‘ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต๊ธ‰ํ•˜๊ณ  ๋ถ„์„๊ฐ€๋‚˜ ๋ณด๊ณ  ๋„๊ตฌ๊ฐ€ ์ด๋ฅผ ์œ ์šฉํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ด๋‹ค!์ด ๋‘˜์˜ ์ฐจ์ด์ ์€ ๋งˆ์ง€๋ง‰ ๋‘ ๋‹จ๊ณ„(๋ณ€ํ™˜ ๋ฐ ๋กœ๋“œ)์˜ ์ˆœ์„œ์ž„  ์ถ”์ถœ(extract) ๋‹จ๊ณ„๋Š” ๋กœ๋“œ ๋ฐ ๋ณ€ํ™˜์„ ์ค€๋น„ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ์†Œ์Šค..
ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ์ œํ’ˆ๊ณผ ์„ค๊ณ„๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ์ „์— ์ตœ์‹  ๋ฐ์ดํ„ฐ ์Šคํƒ์„ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋ฅผ ์ดํ•ดํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค! ์„ ํƒ ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•˜์ง€๋งŒ ์—…๊ณ„ ํ‘œ์ค€์ด ๋˜์–ด ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌํ˜„์— ์žˆ์–ด๋ชจ๋ฒ” ์‚ฌ๋ก€์˜ ๋ฐœํŒ์„ ๋งˆ๋ จํ•œ ํ•ต์‹ฌ ์š”๊ตฌ ์‚ฌํ•ญ๊ณผ ๊ฐœ๋…์€ ์žˆ๋‹ค! โฌ‡๏ธโฌ‡๏ธโฌ‡๏ธโฌ‡๏ธโฌ‡๏ธ 1. ๋ฐ์ดํ„ฐ ์†Œ์Šค์˜ ๋‹ค์–‘์„ฑ 2. ํด๋ผ์šฐ๋“œ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์™€ ๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ 3. ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋„๊ตฌ 4. ๋ชจ๋ธ๋ง ๋„๊ตฌ ๋ฐ ํ”„๋ ˆ์ž„์›Œํฌ 5. ์›Œํฌํ”Œ๋กœ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํ”Œ๋žซํผ   ๋ฐ์ดํ„ฐ ์†Œ์Šค์˜ ๋‹ค์–‘์„ฑ ๋Œ€๋ถ€๋ถ„ ์กฐ์ง์—๋Š” ์ˆ˜๋ฐฑ ๊ฐœ๋Š” ์•„๋‹ˆ๋”๋ผ๋„ ์ˆ˜์‹ญ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์†Œ์Šค๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๋ถ„์„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค ์†Œ์Šค ์‹œ์Šคํ…œ ์†Œ์œ ๊ถŒ ๋ถ„์„ ํŒ€์€ ์กฐ์ง์ด ๊ตฌ์ถ•ํ•˜๊ณ  ์†Œ์œ ํ•œ ์†Œ์Šค ์‹œ์Šคํ…œ๊ณผ ํƒ€์‚ฌ ๋„๊ตฌ ๋ฐ ๊ณต๊ธ‰์—…์ฒด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค ex. ์ „์ž์ƒ๊ฑฐ๋ž˜ ํšŒ์‚ฌ๋Š” ..
๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์ด๋ž€? ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์€ ๋‹ค์–‘ํ•œ ์†Œ์Šค์—์„œ ์ƒˆ๋กœ์šด ๊ฐ€์น˜๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๋Œ€์ƒ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ธฐ๊ณ  ๋ณ€ํ™˜ํ•˜๋Š” ์ผ๋ จ์˜ ๊ณผ์ •์ด๋‹ค. => ์ด๋Š” ๋ถ„์„, ๋ฆฌํฌํŒ…, ๋จธ์‹ ๋Ÿฌ๋‹ ๋Šฅ๋ ฅ์˜ ๊ธฐ์ดˆ๊ฐ€ ๋จ  ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋ณต์žก์„ฑ์€ ์›๋ณธ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์™€ ์ƒํƒœ, ๊ตฌ์กฐ ๋ฐ ๋ถ„์„ ํ”„๋กœ์ ํŠธ์˜ ์š”๊ตฌ์ƒํ•ญ์— ๋”ฐ๋ผ์„œ๋„ ๋‹ฌ๋ผ์ง => ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ํ˜•ํƒœ์˜ ํŒŒ์ดํ”„๋ผ์ธ์€ REST API์ฒ˜๋Ÿผ ๋‹จ์ผ ์†Œ์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์˜ SQL ํ…Œ์ด๋ธ”๊ณผ ๊ฐ™์€ ๋Œ€์ƒ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ž„! ์‹ค์ œ๋กœ ํŒŒ์ดํ”„๋ผ์ธ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ถ”์ถœ, ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต, ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํฌํ•จํ•œ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๋•Œ๋กœ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ์ข… ๋ชฉ์ ์ง€๋กœ ์ „๋‹ฌํ•˜๊ธฐ ์ „์— ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ํ•™์Šตํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•˜๋Š” ๋‹จ๊ณ„๊ฐ€ ์žˆ๊ธฐ๋„ ํ•จ  ๋ˆ„๊ฐ€ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ• ๊นŒ?  1..
JJunGyo
'๐Ÿณ Data Engineering/Data Pipeline' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก