๐ ํด๋น ํฌ์คํ ์ YouTube GeekNews ์ฑ๋์ ๋ฐ์ดํฐ ์ธํ๋ผ ๊ฐ์ ๋ด์ฉ์ ๊ธฐ๋ฐํด ์ ๊ฐ ์ฌ๊ตฌ์ฑํ์ฌ ์์ฑํจ์ ์๋ ค๋๋ฆฝ๋๋ค.
1. ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ํ์์ฑ
๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ์ ํ์ํ ๊น? ํฌ๊ฒ ๋ ๊ฐ์ง ์ด์ ๋ก ๋ณผ ์ ์๋ค.
- ๋น์ฆ๋์ค ๋ฆฌ๋๋ค์ ์์ฌ๊ฒฐ์ ๋๊ธฐ ์ํจ
- ์๋น์ค ๋๋ ์ ํ์ ๋ฐ์ดํฐ์ ๋์์ ๋ฐ์ ํฅ์์ํค๊ธฐ ์ํจ
๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑํ ๋ ์ฃผ๋ก ๋ฐ์ดํฐ ETL์ ๊ตฌ์ฑํ๋ค๊ณ ํ๋ค. ETL์ ์์ ๊ฐ์ ๊ณผ์ ์ ๋งํ๋ค. ๊ทธ๋ผ ์ด๋ฌํ ๊ณผ์ ์ ์ ํ๋๊ฑธ๊น?
๋ฐ์ดํฐ๊ฐ ๋ฐ์ํ๋ ๊ณณ๋ค์ ์ ๋ง ๋ค์ํ๋ค. ๋ฐ๋ผ์ ๋ฐ์ํ๋ ๊ณณ ๋ง๋ค ๊ฐ ํ ์ด๋ธ์ ๊ตฌ์ฑํ๋ค๋ฉด ํ ์ด๋ธ ๊ฐ ๊ด๊ณ๋ ๋งค์ฐ ๋ณต์กํด์ง๋ค(Normalized Schema). ๋ฐ๋ผ์ ๋ฐ์ดํฐ๊ฐ ๋ฐ์ํ๋ Production Systems์์ ETL ์ด๋ผ๋ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํด์ ๋ฐฉ๋ํ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ Data Warehouse์ ์ ์ฅํ๋ค. ์ ์ฅํ ๋๋ ํ๋์ ํตํฉ๋ ๊ณณ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ด์๋์ ์ ์๋๋ก ๊ตฌ์ฑํ๋ค.
ETL์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถ - ๋ณํ - ์ ์ฌ ํ๋ ์์๋ก ์งํ๋๋ค. ๊ทธ๋ฌ๋ ์ต๊ทผ์๋ ELT(์ถ์ถ - ์ ์ฌ - ๋ณํ) ๊ตฌ์กฐ๋ก ๋ง์ด ์งํ๋๋ค๊ณ ํ๋ค. ์๋ํ๋ฉด [์ถ์ถ - ๋ณํ]์ ์๋ํ์ํค๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ด๋ค. ์ ์ด๋ ค์ธ๊น? ๋ฐ์ดํฐ๊ฐ ๋ฐ์ํ๋ ๊ณณ์ ๋ค์ํ๋ฉฐ ๊ทธ ๋งํผ ๋ฐ์ํ๋ ๋ฐ์ดํฐ๋ค์ ํฌ๋งท ํํ๊ฐ ์๋ก ๊ฐ๊ธฐ ๋ค๋ฅผ ๊ฒ์ด๋ค. ๊ทธ๋์ ํน์ ํ ์ฝ๋๋ก ์ด๋ฅผ ํ์ผํ์์ผ์ฃผ๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ต๋ค.
๋ฐ๋ผ์ ์์ฆ์๋ '์ ์ฌ'๋ฅผ '๋ณํ'๋ณด๋ค ์์ ๋จ๊ณ๋ก ์ฃผ์ด [์ถ์ถ - ์ ์ฌ]๋ฅผ ์ฝ๋๋ก ์๋ํ ์ํค๊ณ ๋ฐ์ดํฐ ํฌ๋งท์ ๋ฐ๋ผ ๋ณํ์ ํ๋ ์ถ์ธ๋ค. ์ด๋ ๊ฒ ํ๋ ๊ฒ์ด ํจ์ฌ ๋ ํจ์จ์ ์ด๋ค.
์ด์ ๊ทธ๋ ๋ค๋ฉด ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ด ํฌํจ๋์ด ์๋ ๋ฐ์ดํฐ ์ธํ๋ผ์ ํฐ ๊ตฌ์กฐ๋ฅผ ์ดํด๋ณด์. ์ด๋ฒ ํฌ์คํ ์์๋ ํ๋จ์ ๊ตฌ์ฑ์์ ์ค '์ต์ด๋ก ๋ฐ์ํ๋ ๋ฐ์ดํฐ๋ค'์ ์๋ฏธํ๋ Sources ๋ถ๋ถ์ ๋ํด ์์๋ณด๊ธฐ๋ก ํ์.
2. ์ต์ด๋ก ๋ฐ์ดํฐ๊ฐ ๋ฐ์ํ๋ ๊ณณ๋ค, Sources
Sources(์์ผ๋ก ์์ค๋ผ๊ณ ํ๊ฒ ๋ค)๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐ์ดํฐ๊ฐ ๋ฐ์ํ๋ ๊ณณ๋ค์ด๋ผ๊ณ ํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ํ์๊ฐ ๊ตฌ๊ธ ๊ฒ์์ฐฝ์ '๋ค์ด๋ฒ' ๊ฒ์์ด๋ฅผ ์น๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ๋ ๋ก๊ทธ ๋ฐ์ดํฐ๋ถํฐ ์์ํด, ํน์ ์ผํ๋ชฐ์ ๊ฒฐ์ ๋ฐ์ดํฐ, ์ฃผ๋ฌธ ๋ฐ์ดํฐ ๋ฑ ์ฌ๋ฌ๊ฐ์ง๊ฐ ๋ ์ ์๋ค. ์ด๋ฌํ ์์ค๋ค ์ข ๋ฅ์ด ๋ํ์ ์ผ๋ก ๋ญ๊ฐ ์๋์ง ์์๋ณด์.
2-1. OLTP
OLTP(Online Transaction Processing)๋ ๋ค์ํ ์ฌ์ฉ์๊ฐ ์ค์๊ฐ์ผ๋ก DB์ ๋ฐ์ดํฐ๋ฅผ ๊ฐฑ์ , ์กฐํ ๋ฑ์ ๋จ์์์ ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด ์ ์ฉ์นด๋๋ฅผ ์กฐํํ๋ค๊ฑฐ๋ ์๋ ํ๊ธ ์ง๊ธ, ๊ณ์ข์ด์ฒด ๋ฑ์ด ์๊ฒ ๋ค. ๊ณ์ข์ด์ฒด๋ฅผ ์์๋ก ๋ค์ด๋ณธ๋ค๋ฉด, A์ ๊ณ์ข์์ 1000์์ ๋นผ๋ด์ด B์ ๊ณ์ข๋ก 1000์์ ์ก๊ธํ๋ ๊ฒ๊น์ง ๋ฐ์ํ ๊ฒ์ ํ๋์ ํธ๋์ ์ ์ผ๋ก ์ทจ๊ธํ์ฌ ๋ฐ์ํ๋ ๋ฐ์ดํฐ๋ค์ ๋ด๋ DB์ด๋ค.
๊ทธ๋ฐ๋ฐ OLTP๋ CDC(Change Data Capture)๋ผ๋ ๊ฒ์ ํ์ฉํ๋ค. CDC๋, OLTP์์ ๋ฐ์ํ๋ ๋ฐ์ดํฐ๋ค ์ค ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ค๋ง ๋ฐ๋ก ์ธ๋ถ DB์ ์ ์ก์ ํ๊ณ ์ด OLTP์ ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ค๋ง์ ๋ถ์์ฉ DB๋ก ๋๊ฒจ ๋ถ์์ด ๊ฐ๋ฅํ๋ค.
์ฐธ๊ณ ๋ก OLTP์ ๋น๊ต๋์์ผ๋ก OLAP(Online Analytical Processing)์ด ์กด์ฌํ๋ค. OLAP๋ ์ฃผ๋ก ๋ฐ์ดํฐ ๋ถ์์ ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฉฐ, ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด๋ ์ ์ฌํ๋ค. OLTP, OLAP ์ฐจ์ด์ ์ ๋น๊ตํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
OLTP | OLAP |
๋ง์ ํธ๋์ ์ | ๋ง์ ๋ฐ์ดํฐ |
๋น ๋ฅธ ์ฒ๋ฆฌ | ๋๋ฆฐ ์ฟผ๋ฆฌ |
Normalized ๋ฐ์ดํฐ | Denormalized ๋ฐ์ดํฐ |
๋ง์ ๋ฐ์ด๋ธ์ ๊ฐ์ง | ์ ์ ํ ์ด๋ธ์ ๊ฐ์ง |
ex) "๋๊ฐ X ์ํ์ ๊ตฌ์ ํ๋?" | ex) "๋๊ฐ X๋ผ๋ ์ํ์ ์ผ๋ง๋ ๊ตฌ์ ํ๋?" - ๋ถ์์ฉ |
2-2. Application / ERP
ERP๋ ์ ์ฌ์ ์์ ๊ด๋ฆฌ๋ก์ ์ฝ๊ฒ ๋งํ๋ฉด ํ์ฌ์์ ์ผ์ด๋๋ ๋ชจ๋ ์์๋ค, ์๋ฅผ ๋ค๋ฉด, ์ฌ๋ฌด, ์กฐ๋ฌ, ์ธ์ฌ ๋ฑ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ค์ ์๋ฏธํ๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฐ๋ฆฌ๊ฐ ํํ ์๊ณ ์๋ ๋ชจ๋ฐ์ผ ์ฑ์ด๋, ์น ์๋น์ค๋ ๊ธฐํ ์ฌ๋ฌผ์ธํฐ๋ท ์ดํ๋ฆฌ์ผ์ด์ ์ด๋ ๋ค์ํ ๊ฒ๋ค์์ ๋ฐ์ํ๋ ๋ฐ์ดํฐ๋ค์ ์๋ฏธํ๋ค. ๋ณดํต Oracle์ NetSuite, CRM ๋ฑ๊ณผ ๊ฐ์ ํ๋ซํผ๋ค์ ์ด์ฉํ๋ค.
2-3. Event Collectors
์๋น์ ์ฌ์ฉ์๊ฐ ๋ง๋ค์ด๋ด๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํ๋ค. ๋จ์ ์ธ ์๋ก GA(Google Analytics)๊ฐ ์๊ฒ ๋ค. Event Collectors ๋ฅผ ์ํ ๋ํ์ ์ธ ํ๋ซํผ๋ค์ด ์๋๋ฐ, Segment, SNOWPLOW, RUDDERSTACK ๋ฑ์ด ์๋ค. ์ด๊ฒ๋ค์ ๋ชจ๋ฐ์ผ, ์น ๋ฑ ๊ฐ๊ธฐ ๋ค๋ฅธ ๊ณณ์์ ๋ฐ์ํ ๋ฐ์ดํฐ๋ค์ ํตํฉํด์ GA๋ AWS์ RedShift์ ๊ฐ์ ๋ถ์์ฉ ํ๋ซํผ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํด์ค๋ค. ๊ฒฐ๊ตญ ์์ง๋์ด๋ค์ด "A๋ผ๋ ๊ณณ์์ ์ด๋ฒคํธ ๋ฐ์ดํฐ๊ฐ ๋ฐ์ํ ๊ฒ๋ค์ GA๋ก ๋ณด๋ด์ฃผ์ธ์. B๋ผ๋ ๊ณณ์์ ์ด๋ฒคํธ ๋ฐ์ดํฐ๊ฐ ๋ฐ์ํ ๊ฒ๋ค์ RedShift๋ก ๋ณด๋ด์ฃผ์ธ์." ์ด๋ฐ ๊ฒ๋ค์ ๋งค๋ฒ ์ฝ๋๋ก ์น์ง ์์๋ ๋๊ฒ๋ Segment์ ๊ฐ์ ํ๋ซํผ์ด ํ๋์ ์๋ฃจ์ ์ผ๋ก ์ ๊ณตํด์ฃผ๋ ๊ฒ์ด๋ค.
2-4. Logs
์ฌ์ฉ์ ๋ก๊ทธ๋ ํฌํจ๋ ์ ์๊ฒ ์ง๋ง ์ฃผ๋ก ์ฌ๋ด์์ ๋ฐ์ํ๋ ์๋ฒ ๋ก๊ทธ ๋ฐ์ดํฐ๊ฐ์ ๊ฒ๋ค์ ์๋งํ๋ค.
2-5. ์จ๋ ํํฐ API
์ด๊ฒ์ ์์๋ฅผ ํ๋ ๋ค๋ฉด ๋ฐ๋ก ์ดํด๊ฐ ๋๋๋ฐ, Stripe์ ๊ฐ์ ๋ฏธ๊ตญ์ ์จ๋ผ์ธ ๊ฒฐ์ ์๋น์ค API๋ฅผ ์ ๊ณตํ๋ ํ์ฌ๊ฐ ์๋ค. ์ด๋ค C๋ผ๋ ํ์ฌ๊ฐ Stripe ๊ธฐ์ ์ ์จ๋ผ์ธ ๊ฒฐ์ ์๋น์ค API๋ฅผ ์ด์ฉํ๊ณ C๋ผ๋ ํ์ฌ์ ์๋น์ค ์ด์ฉ์๋ค์ ๋ฐ์ดํฐ๋ค์ Stripe API๋ก๋ถํฐ ์ ๊ณต๋๋ค๋ ๊ฒ์ด๋ค.
2-6. ํ์ผ, Object Storage
๋จ์ ์ธ ์๋ก, ์ด๋ฉ์ผ๋ก ์ฃผ๊ณ ๋ฐ์ ํ์ผ๋ค์ด๋ ๊ธฐํ Object Storage๋ค๋ ํ๋์ ๋ฐ์ดํฐ๊ฐ ๋ ์ ์๋ค.