๋ฐ์ดํฐ ์์ง๋์ด๋ง ์ํคํ ์ฒ ์ค๊ณ์ ์ ํ
์ํคํ ์ฒ vs ๋๊ตฌ
- ์ํคํ ์ฒ(์ ๋ต): ์ด๋ค ๊ธฐ์ (ํ์ด๋ธ๋ฆฌ๋/ํด๋ผ์ฐ๋/์จํ๋ ๋ฏธ์ค)์, ์(๋น์ฆ๋์ค ์๊ตฌ, ๋ณด์, ์ฑ๋ฅ, ๋น์ฉ), ์ธ์ (๋์ ํ์ด๋ฐ, ํ์ฅ์ฑ) ๊ตฌ์ถํด์ผ ํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ค.
- ๋๊ตฌ(์ ์ ): ์ํคํ ์ฒ ๋ด์์ ์ด๋ป๊ฒ ๊ตฌ์ถํ ์ง๋ฅผ ์ ํ๋ค.
ํ์ด๋ธ๋ฆฌ๋ ํด๋ผ์ฐ๋๋ฅผ ๊ณ ๋ คํ ์์
- ๋ณด์, ๊ท์ ์๊ตฌ: ์ผ๋ถ ๋ฐ์ดํฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฒ์ , ๋ณด์์ ์จํ๋ ๋ฏธ์ค์์ ์ ์ง๋์ด์ผ ํ ๋
- ๊ธฐ์กด ์ธํ๋ผ ํ์ฉ: ์กฐ์ง์ด ์ด๋ฏธ ์ด์ ์ค์ธ ์จํ๋ ๋ฏธ์ค ์์์ ๋น์ฉ ์ ๊ฐ์ด๋ ์ต๋ ํ์ฉ์ด ํ์ํ ๊ฒฝ์ฐ
- ํด๋ผ์ฐ๋ ํนํ ๊ธฐ๋ฅ ํ์ฉ: ๋น ๋ฐ์ดํฐ ๋ถ์, AI ๋ชจ๋ธ ํ์ต, ์๋ฒ๋ฆฌ์ค ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฑ ํด๋ผ์ฐ๋ ์๋น์ค๊ฐ ๋ ํจ์จ์ ์ธ ๊ฒฝ์ฐ
- ์ฑ๋ฅ ์๊ตฌ ๋ถ๋ฆฌ: ํธ๋์ญ์ ๋ฏผ๊ฐ ์๋น์ค๋ ์จํ๋ ๋ฏธ์ค, ๋์ฉ๋ ๋ฐฐ์น/๋ถ์์ ํด๋ผ์ฐ๋์์ ์ํํ๊ณ ์ ํ ๋
egress ๋น์ฉ ์ต์ ํ ๋ฐฉ๋ฒ
- ์ด๋ฒคํธ ๋ฐ์ดํฐ๋ง ํด๋ผ์ฐ๋๋ก ์ ์ก: ์ ํ๋ฆฌ์ผ์ด์ ์ ์จํ๋ ๋ฏธ์ค์ ๋๊ณ , ๋๋์ raw ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ฐ๋๋ก ๋ณด๋ด์ง ์๊ณ , ์ด๋ฒคํธ๋ ๋ณํ๋ ๋ฐ์ดํฐ๋ง ์ ์กํ์ฌ ์ด ํธ๋ํฝ๋์ ์ต์ํํ๋ค.
- ์ญ ETL: ๋ถ์ ๊ฒฐ๊ณผ๋ ์ธ์ฌ์ดํธ๋ง ๋ค์ ์จํ๋ ๋ฏธ์ค๋ก ํธ์ํ ๋, ๋์ฉ๋ raw ๋ฐ์ดํฐ๋ฅผ ์จํ๋ ๋ฏธ์ค๋ฅผ ๋ฒ์ด๋์ง ์๊ฒ ์ ์ดํ๋ค.
- ํ์ ๋ฐ์ดํฐ๋ง ์ ์ก: ํํฐ๋ง, ์ง๊ณ, ์์ฝ ๋ฑ ์ ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ๋ง ํด๋ผ์ฐ๋๋ก ๋ณด๋ด์ ์ ์ก๋์ ์ค์ธ๋ค.
- ์ค์ผ์ค๋ง/๋ฐฐ์น ์ฌ์ฉ: ๋ฐ์ดํฐ ์ ์ก์ ์ค์๊ฐ์ด ์๋ ์ค์ผ์ค๋ง ๋๋ ๋ฐฐ์น๋ก ์ด๋ค์ง๋๋ก ํ๋ค.
ํ์ด๋ธ๋ฆฌ๋ ํด๋ผ์ฐ๋๋ ์จํ๋ ๋ฏธ์ค์ ํด๋ผ์ฐ๋์ ์ฅ์ ์ ๋ณํํ๋ฉด์, egress ๋น์ฉ ์ต์ ํ๋ฅผ ์ํด ๋ฐ์ดํฐ ์ด๋์ ์ต์ํํ๋ ์ ๋ต์ ์ ํ์ด ๋๋ค. ์ด๋ฒคํธ ๋ฐ์ดํฐ ์์ฃผ๋ก ํด๋ผ์ฐ๋์ ๋ณด๋ด๋ฉด ๋น์ฉ์ ์ค์ผ ์ ์๊ณ , ์ญ ETL๋ก ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์จํ๋ ๋ฏธ์ค๋ก ๊ฐ์ ธ์ ๋ณด์๊ณผ ๊ท์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ ์ ์๋ค.
๋ฉํฐํด๋ผ์ฐ๋์ ์ฅ์
- ๊ณต๊ธ์ ์ฒด ์ข ์ ์ต์ํ: ํน์ ํด๋ผ์ฐ๋ ๋ฒค๋์ ์์กดํ์ง ์์ -> ๋ค์ํ ์๋ฃจ์ ์ ํ์์ ๋ฐ๋ผ ์ ํ ๊ฐ๋ฅ
- ์ ์ฐํ ์ํฌ๋ก๋ ๋ถ๋ฐฐ: ๊ฐ ํด๋ผ์ฐ๋์ ์ฅ์ ์ ํ์ฉํด ๋ค์ํ ์๋น์ค๋ณ๋ก ์ต์ ํ ๊ฐ๋ฅ
- ์ฅ์ ๋ณต๊ตฌ ๋ฐ ๋ณต์๋ ฅ: ํ ํด๋ผ์ฐ๋ ์๋น์ค ์ฅ์ ๋ฐ์ ์ ๋ค๋ฅธ ํด๋ผ์ฐ๋๋ก ์๋ ์ ํ์ด ๊ฐ๋ฅ -> ์์ ์ฑ ํฅ์
๋ฉํฐํด๋ผ์ฐ๋์ ๋จ์
- ๋ฐ์ดํฐ egress ๋น์ฉ: ์๋ก ๋ค๋ฅธ ํด๋ผ์ฐ๋๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋ ๋ฐ์ํ๋ ๋น์ฉ ์ฆ๊ฐ ๋ฌธ์
- ๋คํธ์ํฌ ๋ณ๋ชฉ ๋ฐ ์ง์ฐ: ํด๋ผ์ฐ๋ ๊ฐ ๋คํธ์ํฌ ์ ์ก์์ ๋ณ๋ชฉ ํ์์ด๋ ์ง์ฐ ์ํ
- ๋ณต์ก์ฑ ๋ฐ ๊ด๋ฆฌ ๋ถ๋ด
๋ชจ๋๋ฆฌ์ vs ๋ชจ๋์
- ๋ชจ๋๋ฆฌ์: ํ๊ณณ์์ ์ ์ฒด ๊ธฐ๋ฅ์ ์ง์คํ๋ ๋จ์ํจ, ์ปจํ
์คํธ ์ค์์นญ ์ ์. ํ์ง๋ง ์์คํ
๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด ๋ณ๊ฒฝ, ๋ฐฐํฌ๊ฐ ์ค๋ ๊ฑธ๋ฆฌ๊ณ ์ฅ์ ๊ด๋ฆฌ๊ฐ ์ด๋ ต๋ค. ์ํ ํ์ฅ ๋ถ๊ฐ
- + ๋ฉํฐ ํ ๋์ ๋ฌธ์ : ํ๋์ ์์คํ ์ ์ฌ๋ฌ ๊ณ ๊ฐ(ํ ๋ํธ)์ ๋์์ ์์ฉํ๋ฉด์ ๋ฐ์ดํฐ ๊ฒฉ๋ฆฌ์ ์ด์ ์์ ์ฑ์ ์ด๋ ค์์ด ์๊ธฐ๋ ๊ฒ
- ๋ชจ๋์/๋ง์ดํฌ๋ก์๋น์ค(MSA): ์๋น์ค๋ณ ๋ถ๋ฆฌ๋ก ๋๋ฉ์ธ ์ง์ค ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๊ณ , ๊ฐ์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ·ํ์ฅํ ์ ์๋ค. ๊ทธ๋ฌ๋ ์๋น์ค ๊ฐ ํตํฉ·API ํต์ ·์ด์ํ๊ฒฝ ๋ณต์ก์ฑ์ด ์ปค์ง๋ค.
+ ํ ๋ํธ?
- ์ํํธ์จ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๊ฒฝ์์ ๋ ๋ฆฝ์ ์ธ ์ฌ์ฉ์, ์กฐ์ง, ๊ณ ๊ฐ
- ex) SaaS ์๋น์ค์์ ์ฌ๋ฌ ํ์ฌ๊ฐ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ๋๋ผ๋, ๊ฐ ํ์ฌ๋ ๋ ๋ฆฝ์ ์ธ ๋ฐ์ดํฐ์ ํ๊ฒฝ์ ๊ฐ์ง๋๋ฐ ์ด ํ์ฌ๋ค์ด ๋ฐ๋ก ๊ฐ๊ฐ์ ํ ๋ํธ
์๋ฒ๋ฆฌ์ค
์๋ฒ๋ฆฌ์ค: ๊ฐ๋ฐ์๊ฐ ์๋ฒ์ ์ด์๊ณผ ๊ด๋ฆฌ๋ฅผ ์ ๊ฒฝ ์ฐ์ง ์์๋ ๋๊ณ , AWS Lambda, GCP BigQuery ๊ฐ์ ์๋น์ค๊ฐ ๋ํ์ ์ด๋ฉฐ, ์ด๋ฒคํธ ๊ธฐ๋ฐ์ผ๋ก ์คํ๋์ด ์ค์ ์ฌ์ฉํ ๋งํผ ๋น์ฉ์ด ๋ฐ์ํ๋ค.
์๋ฒ๋ฆฌ์ค๊ฐ ์ ํฉํ ์ํฉ
- ํธ๋ํฝ์ด๋ ์์ ๋ถํ๊ฐ ์ผ์ ํ์ง ์๊ณ ๊ฐํ์ ์ธ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์์ ์ ์ ํฉํ๋ค.
- ๋น ๋ฅธ ๊ฐ๋ฐ๊ณผ ๋ฐฐํฌ๊ฐ ํ์ํ๊ณ , ์๋ฒ ๊ด๋ฆฌ ๋ถ๋ด์ ์ค์ด๊ณ ์ถ์ ๋ ์ด์์ ์ด๋ค.
- ์คํํธ์ ์ด๋ ํ๋กํ ํ์ , ๋ง์ดํฌ๋ก์๋น์ค ๋ฑ ์์ ๋จ์๋ก ๋น ๋ฅด๊ฒ ํ์ฅ ๊ฐ๋ฅํ ํ๊ฒฝ์ ๋ง๋๋ค.
- ์๋ ํ์ฅ๊ณผ ์ ํด ๋ฆฌ์์ค ๋น์ฉ ์ ๊ฐ์ด ์ค์ํ ๊ฒฝ์ฐ ์ฌ์ฉ๋๋ค.
์๋ฒ๋ฆฌ์ค ๋จ์ ๋ฐ ์ฃผ์์ฌํญ
- ์ด๋ฒคํธ ๊ธฐ๋ฐ์ผ๋ก ๋น์ฉ์ด ๋ฐ์ํ๋ฏ๋ก ์ฌ์ฉ๋์ด ๋ง์์ง๋ฉด ๋น์ฉ์ด ๊ธ์ฆํ ์ ์๋ค.
- ์ฝ๋ ์คํํธ ๋ฌธ์ ๋ก ์ธํด ์คํ ์ด๊ธฐ ์ง์ฐ ์๊ฐ์ด ๋ฐ์ํ ์ ์๋ค.
- ์คํ ์๊ฐ์ด๋ ๋ฆฌ์์ค(๋ฉ๋ชจ๋ฆฌ, CPU) ์ ํ์ด ์์ด ๊ธด ์์ ์๋ ๋ถ์ ํฉํ๋ค.
์ปจํ ์ด๋ ํน์ง ๋ฐ ์๋ฒ๋ฆฌ์ค์ ๊ด๊ณ
- ์ปจํ ์ด๋๋ ๋จ์ผ ํธ์คํธ OS ์ปค๋์ ๊ณต์ ํ๋ฉด์ ์ค๋ฒํค๋๋ฅผ ์ค์ด๊ณ , ์์กด์ฑ ๊ด๋ฆฌ์ ์ด์์ฑ์ ์ ๊ณตํ๋ค.
- ์๋ฒ๋ฆฌ์ค ํ๊ฒฝ์ ๋ณดํต ์ปจํ ์ด๋ ์์์ ์คํ๋๋ค.
- AWS์์ ์ปจํ ์ด๋ ๊ด๋ฆฌ๋ฅผ ์ํ ์๋น์ค๋ก๋ ECS, EKS, Fargate๊ฐ ์๋ค.
- ECS: AWS๊ฐ ์ง์ ์ ๊ณตํ๋ ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์๋น์ค๋ก, ํด๋ฌ์คํฐ ๊ด๋ฆฌ๋ฅผ ๊ฐ์ํํ์ฌ ์ง์ ์ฅ๋ฒฝ์ด ๋ฎ๊ณ ์ด์์ด ๋น๊ต์ ์ฝ๋ค. ํนํ EC2 ๊ธฐ๋ฐ ํน์ Fargate ์๋ฒ๋ฆฌ์ค ๋ชจ๋์์ ์คํํ ์ ์๋ค.๋ค๋ง, ์ฟ ๋ฒ๋คํฐ์ค์ ๋นํด ์ ์ฐ์ฑ์ด ๋ถ์กฑํ๊ณ ๋ฉํฐ ํด๋ผ์ฐ๋ ํ๊ฒฝ์๋ ๋ถ์ ํฉํ๋ค.
- EKS: ์์ ๊ด๋ฆฌํ ์ฟ ๋ฒ๋คํฐ์ค ์๋น์ค๋ก, ์คํ์์ค ์ฟ ๋ฒ๋คํฐ์ค ํ๊ฒฝ์ AWS์์ ์ ๊ณตํ๋ค. ์ด ๋๋ฌธ์ ๋ฉํฐ ํด๋ผ์ฐ๋๋ ํ์ด๋ธ๋ฆฌ๋ ํด๋ผ์ฐ๋์ ์ ํฉํ๊ณ , ๋ณต์กํ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์ ๋์ ์ ์ฐ์ฑ๊ณผ ํ์ฅ์ฑ์ ์๋ํ๋ค. ํ์ง๋ง ํด๋ฌ์คํฐ ๋ฐ ๋ ธ๋ ๊ด๋ฆฌ๋ฅผ ์ง์ ํด์ผ ํ๊ณ , ์ด์ ๋ณต์ก์ฑ๊ณผ ๊ด๋ฆฌ ๋ถ๋ด์ด ํฌ๋ฉฐ ๊ด๋ฆฌ ๋น์ฉ๋ ๋ฐ์ํ๋ค.
- Fargate๋ ์๋ฒ๋ฆฌ์ค ์ปจํ ์ด๋ ์๋น์ค๋ก, ์๋ฒ๋ ๋ ธ๋๋ฅผ ์ง์ ๊ด๋ฆฌํ ํ์ ์์ด ์ปจํ ์ด๋๋ง ๋ฐฐํฌํ๋ฉด ๋๋ค. ์๋ ํ์ฅ, ๋ฆฌ์์ค ํ๋ก๋น์ ๋์ ์๋ํ๋ก ์ด์ ๋ถ๋ด์ด ์ต์ํ๋์ด ์ง์ ์ด ์ฝ์ง๋ง, ๋น์ฉ์ ๋ฆฌ์์ค ์ฌ์ฉ๋์ ๋ฐ๋ผ ์ฆ๊ฐํ ์ ์๊ณ , ๋์ฉ๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์๋ ํ๊ณ๊ฐ ์์ผ๋ฉฐ, ๋คํธ์ํฌ ์ด๊ธฐํ ์ง์ฐ์ด๋ ๋๋ฒ๊น ์ ์ฝ๋ ์๋ค.
์๋ฒ vs ์๋ฒ๋ฆฌ์ค ์ฌ์ฉ ํ๋จ ๊ธฐ์ค
- ์๋ฒ๋ ์ผ์ ๋น์ฉ์ด ๋ฐ์ํ์ง๋ง, ์ฅ์ ๊ด๋ฆฌ·์ํ ํ์ฅ·IaC ์๋ํ๊ฐ ๊ฐ๋ฅํ๋ค.
- ์๋ฒ๋ฆฌ์ค๋ ์ฌ์ฉํ ๋งํผ ๋น์ฉ์ ๋ด๊ณ , ๋จ์ํ๊ณ ๊ฐ๋ณ ์์ , ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ฒ๋ฆฌ์ ์ ํฉํ๋ค.
- ์ผ๋ฐ ๊ถ์ฅ ํจํด์ ์๋ฒ๋ฆฌ์ค๋ฅผ ์ฐ์ ๋์ ํ๊ณ , ์ดํ ํ์์ ๋ฐ๋ผ ์๋ฒ๋ก ์ด์ ํ๋ ๋ฐฉ์์ด๋ค.
- ์๋ฒ๋ ๊ณ ์ฑ๋ฅ·์ง์์ ์๋น์ค๋ฅผ ์ํด, ์๋ฒ๋ฆฌ์ค๋ ๊ฐํ์ ·๋น ๋ฅธ ํ์ฅ์ฑ ์์ ์ ์ ํฉํ๋ค.
Airflow
Apache Airflow๋ ๋ณต์กํ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ์๋ํ์ ๊ด๋ฆฌ์ ์ต์ ํ๋ ๋๊ตฌ์ด๋ค.
Airflow๋ ์ธ์ ์ฐ๋๊ฒ์ด ์ข๊ณ , ์ด๋จ๋๋ ์ ํฉํ์ง ์๋๊ฐ?
Airflow๊ฐ ์ ํฉํ ์ํฉ
- ๋ณต์กํ ETL/ELT ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑํ๊ณ ์ถ์ ๋
- ์ ์ข์๊ฐ? Airflow๋ DAG๋ฅผ ์ฌ์ฉํด ๋ณต์กํ ์์ ๊ฐ ์์กด์ฑ, ์์๋ฅผ ๋ช ํํ ํํํ๊ณ ๊ด๋ฆฌํ ์ ์๋ค.
- ๋ค์ํ ๋ฐ์ดํฐ ์์ค ๋๋ ์์คํ
๊ฐ์ ๋ฐ์ดํฐ ์ด๋๊ณผ ์ฒ๋ฆฌ๋ฅผ ์๋ํ ๋ฐ ๋ชจ๋ํฐ๋งํด์ผ ํ ๋
- ์ ์ข์๊ฐ? Airflow๋ ๋ค์์ ๋ด์ฅ ์คํผ๋ ์ดํฐ์ ํ ์ผ๋ก ์ฌ๋ฌ DB, ํด๋ผ์ฐ๋ ์๋น์ค, API ๋ฑ ๋ค์ํ ์์คํ ๊ณผ ์ฝ๊ฒ ํตํฉ๋๊ณ , UI๋ก ์ํฌํ๋ก์ฐ ์ํ, ๋ก๊ทธ, ์คํ ์ด๋ ฅ์ ์ค์๊ฐ ๋ชจ๋ํฐ๋งํ ์ ์๋ค.
- ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ ํ์ต/๋ฐฐํฌ ๋ฑ ๋ณต์ ์์
์ด ์์ฐจ์ ์ผ๋ก ๋๋ ๋ณ๋ ฌ๋ก ์ฐ์ ์คํ๋์ด์ผ ํ ๋
- ์ ์ข์๊ฐ? Airflow๋ ๋ณ๋ ฌ ์คํ๊ณผ ์์ ๋ถ๊ธฐ, ์กฐ๊ฑด ์ํ ๋ฑ ๋ณต์กํ ์์ ํ๋ฆ์ ์ง์ํ๋ค.
- ์ํฌํ๋ก์ฐ์ ์ฌ์๋, ์๋ฆผ, ์คํจ ์ ๋ฐฑ์
์ฒ๋ฆฌ ๋ฑ ์ค๋ฅ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ด ์ค์ํ ๊ฒฝ์ฐ
- ์ ์ข์๊ฐ? Airflow๋ ์ค๋ฅ ๋ฐ์ ์ ์์ ์ฌ์๋, ์คํจ ์๋ฆผ, ๋ฐฑํ(๊ณผ๊ฑฐ ๋ฐ์ดํฐ ์ฌ์ฒ๋ฆฌ) ๊ธฐ๋ฅ์ด ์๋ค.
๋ถ์ ํฉํ ์ํฉ
- ์ด๋จ์๋ก ๋น๋ฒํ ์์
์คํ์ด ํ์ํ๊ฑฐ๋, ์๋ง์ ๋์ ์ํฌํ๋ก๋ฅผ ์ฆ๊ฐ ์ฒ๋ฆฌํด์ผ ํ๋ ๋๊ท๋ชจ ํธ๋์ญ์
์ฑ ์
๋ฌด
- ์ ๋ถ์ ํฉ? Airflow๋ ๋ฐฐ์น ์์ฃผ์ ์ค์ผ์ค๋ง ๋๊ตฌ๋ก ์ด๋จ์ ๋น๋ฒ ์คํ, ์ค์๊ฐ ์ด๋ฒคํธ ์ฒ๋ฆฌ, ์ด๊ณ ์ ๋๋ ๋์ ์ํฌํ๋ก ์ฒ๋ฆฌ์๋ ์ ํฉํ์ง ์๋ค. ์คํ ์ง์ฐ(์ฝ๋ ์คํํธ)๊ณผ ํฐ ๋ถํ๊ฐ ์ด์์ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์๋ค.
- ์ํฌํ๋ก์ฐ๊ฐ ๊ทน๋๋ก ๊ฐ๋จํ๊ฑฐ๋ ๋จ์ผ ์์
์คํ์ ๊ทธ์น๋ ๊ฒฝ์ฐ
- ์ ๋ถ์ ํฉ? Airflow๊ฐ ์ ๊ณตํ๋ ๋ณต์กํ DAG ๊ตฌ์ฑ๊ณผ ๊ด๋ฆฌ ์์คํ ์ด ์คํ๋ ค ๊ณผ๋ํ ๋น์ฉ๊ณผ ๋ณต์ก์ฑ์ ์ ๋ฐํ๋ฉฐ, ๋จ์ ์์ ์ cron, ์คํฌ๋ฆฝํธ ๋ฑ ๋ ๊ฒฝ๋ํ๋ ๋๊ตฌ๊ฐ ์ ์ ํ๋ค.
- ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ์ด๋ฒคํธ ์ค์ฌ ์ํคํ
์ฒ (Airflow๋ ๋ฐฐ์น ์งํฅ์ )
- ์ ๋ถ์ ํฉ? Airflow๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฝ ๊ธฐ๋ฐ ๋ฐฐ์น ์ฒ๋ฆฌ ๋๊ตฌ์ด๋ฏ๋ก, ์ค์๊ฐ ํธ๋ฆฌ๊ฑฐ๋ ์คํธ๋ฆฌ๋ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์๋ Apache Kafka์ ๊ฐ์ ์ด๋ฒคํธ·์คํธ๋ฆผ ์ฒ๋ฆฌ ํ๋ซํผ์ด ๋ ์ ํฉํ๋ค.
๋ฐ์ดํฐ ์์ง
๋ฐ์ดํฐ ์์ง๋์ด๋ ์์ฒ ์์คํ ์์ ๋ฐ์ดํฐ๋ฅผ ์์งํ ๋ค, ๋ถ์์ด๋ ๋น์ฆ๋์ค ํ์ฉ์ ์ ํฉํ๋๋ก ์ ์ ๋ฐ ๊ฐ๊ณตํ๋ ์ญํ ์ ์ํํ๋ค.
CDC(Change Data Capture): ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ์ค์๊ฐ์ผ๋ก ์ถ์ ํ๊ธฐ
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ํ๋ ๊ฐ ๋ณ๊ฒฝ ์ด๋ฒคํธ(INSERT, UPDATE, DELETE)๋ฅผ ์ถ์ถํ๋ ๋ฐฉ๋ฒ
- RDBMS์์๋ ์คํธ๋ฆผ ์์ฑ ์ํด ์ฒ๋ฆฌ๋ ์ ์๋ ์ด๋ฒคํธ ๋ก๊ทธ ์์ฑํด ์ ์ฅ
- NoSQL์ ๊ฒฝ์ฐ ๋ก๊ทธ, ์ด๋ฒคํธ ์คํธ๋ฆผ ๋ชฉํ๋กํ๋ ์คํ ๋ฆฌ์ง ์์น๋ก ์ ์ก
RDBMS์ ๋๋นํด์ NoSQL์ ์ฅ์
- ์คํค๋ง ์ ์ฐ์ฑ
- NoSQL์ ๊ณ ์ ๋ ์คํค๋ง ์์ด ๊ตฌ์กฐ ๋ณ๊ฒฝ์ด๋ ๋ค์ํ ๋ฐ์ดํฐ ํ์ ์ด ์์ ๋ก์
- ๋น์ ํ·๋ฐ์ ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ ๋ฆฌ
- ์ํ ํ์ฅ์ฑ๊ณผ ๋ถ์ฐ ์ฒ๋ฆฌ
- ์ค๊ณ๋ถํฐ ๋ ธ๋ ์ถ๊ฐ๋ฅผ ํตํ ์ํ ํ์ฅ๊ณผ ์๋ ๋ฐ์ดํฐ ๋ถ์ฐ(์ค๋ฉ, ๋ณต์ )์ ์ต์ ํ
- ๋๊ท๋ชจ ํธ๋ํฝ์ด๋ ๋ฐ์ดํฐ ์ฆ๊ฐ์๋ ์์ฝ๊ฒ ์์คํ ํ์ฅ์ด ๊ฐ๋ฅ
- ๊ณ ๊ฐ์ฉ์ฑ ๋ฐ ์ค์๊ฐ ์ฒ๋ฆฌ
- ๋ถ์ฐ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ค๊ณ๋์ด ์ฌ๋ฌ ๋ ธ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํ์ฌ ์ ์ฅ -> ๊ณ ๊ฐ์ฉ์ฑ ์ ์ง
- ๋จ์ผ ์ฅ์ ์ ์ด ์์ -> ์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆผ·์ด๋ฒคํธ ๊ธฐ๋ฐ ์ฒ๋ฆฌ์ ๊ฐ์
- ๋ค์ค ์ง์ญ ๋๋ ๋ถ์ฐ ํ๊ฒฝ -> ๋ฐ์ดํฐ ์ ๊ทผ ์ง์ฐ(latency)์ ์ค์ด๊ณ , ํน์ ์ง์ญ์ ์ฅ์ ๋ฐ์ ์์๋ ๋ค๋ฅธ ์ง์ญ์ ๋ฐ์ดํฐ๋ก ์๋น์ค๋ฅผ ๊ณ์ ์ ์งํ ์ ์์ด ๋ด๊ฒฐํจ์ฑ๊ณผ ๊ฐ์ฉ์ฑ์ด ๊ฐ์ ๋จ.
- ๋คํธ์ํฌ ์ฅ์ ๋ ๋ถํ ์ด ๋ฐ์ํด๋ ์์คํ ์ ์ฒด๊ฐ ๋ฉ์ถ์ง ์๋๋ก ๋ณด์ฅํ๋ ๋ถ์ฐ ํ์ฉ์ฑ(Partition Tolerance)์ ๊ฐ์ถ๊ณ ์๊ธฐ ๋๋ฌธ
- ๊ฐ๋ฐ ๋ฏผ์ฒฉ์ฑ ๋ฐ ๋น์ฉ ํจ์จ
- ๋ฐ์ดํฐ ๋ชจ๋ธ ๋ณ๊ฒฝ, ์ ๊ท ๊ธฐ๋ฅ ์ถ๊ฐ ์ ๋ณต์กํ ์คํค๋ง ์์ ์์ด ๋น ๋ฅด๊ฒ ๊ฐ๋ฐ ์์ ์งํ ๊ฐ๋ฅ
๊ทธ๋ ๋ค๋ฉด ๋ก๊ทธ์ ๋ํด์ ์์ธํ ์์๋ณด์
๋ก๊ทธ: ์์คํ ์์ ๋ฐ์ํ๋ ์ด๋ฒคํธ ์ ๋ณด
๋ก๊ทธ์ 3์์
- ๋๊ตฌ(Who): ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํจ ์ฌ์ฉ์/์์คํ
- ๋ฌด์(What): ๋ฐ์ํ ์ด๋ฒคํธ์ ๋ฉํ๋ฐ์ดํฐ
- ์ธ์ (When): ํ์์คํฌํ
| ์ฅ์ | ๋จ์ | |
| ๋ฐ์ด๋๋ฆฌ ์ธ์ฝ๋ฉ | ๊ณต๊ฐ ํจ์จ์ , ๋น ๋ฅธ I/O | ์ฝ๊ธฐ ์ด๋ ค์ |
| JSON | ๊ธฐ๊ณ๊ฐ ์ฝ๊ธฐ ์ฌ์, ์ด์์ฑ | ๋ฐ์ด๋๋ฆฌ๋ณด๋ค ํฌ๊ณ ๋๋ฆผ |
| ๋น์ ํ | ์ ์ฐํจ | ๊ท๊ฒฉ ์กด์ฌ ์ํจ, ์ผ๊ด์ฑ ๋ถ์กฑ |
JSON์ด ๋๋ฆฐ ์ด์
์ JSON์ด ๋ฐ์ด๋๋ฆฌ๋ณด๋ค ๋นํจ์จ์ ์ธ๊ฐ?
- ํ ์คํธ ๊ธฐ๋ฐ ํฌ๋งท์ ํฌ๊ธฐ ๋ถํผ: JSON์ ๊ตฌ์กฐ๋ฅผ ํํํ๊ธฐ ์ํด ํค ์ด๋ฆ๊ณผ ๊ตฌ๋ฌธ ์์(์ค๊ดํธ, ์ฝ๋ก , ๋ฐ์ดํ ๋ฑ)๋ฅผ ๋ชจ๋ ํ ์คํธ๋ก ํฌํจํ๋ฏ๋ก, ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ๋ฐ์ด๋๋ฆฌ๋ณด๋ค ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ํจ์ฌ ํฌ๋ค.
- ํ์ฑ ๋น์ฉ ์ฆ๊ฐ: JSON์ ํ ์คํธ ํ์ฑ์ ์ํด ๋ฐ๋ณต์ ์ธ ๋ฌธ์์ด ์ฒ๋ฆฌ์ ๋ณํ ์์ ์ด ํ์ํด CPU ๋ถํ๊ฐ ์ปค์ง๋ฉฐ, ๋ฐ์ด๋๋ฆฌ ํฌ๋งท์ ๋ฉ๋ชจ๋ฆฌ์์ ์ง์ ์ฝ์ด ๋ค์ผ ์ ์์ด ๋น ๋ฅด๋ค.
๋น ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ์ ๋ก๊ทธ์ ๊ธฐ๋กํ๋ฉด ๋ฐ์ดํฐ ์์ด ์ง๋์น๊ฒ ๋ง์ ๋นํจ์จ์ ์ด๋ค. ๋ฐ๋ผ์ ํน์ ์ปค๋ฐ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์ฌ์ค๋ง ๊ธฐ๋กํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉฐ, ์ด๋ ์ ์ฉํ๋ ์กฐ๊ฑด์ “๋ก๊ทธ ๋ ๋ฒจ”๋ก ๊ด๋ฆฌํ๋ค.
- ๋ก๊ทธ ๋ ๋ฒจ: ์ด๋ค ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋กํ ์ง ๊ฒฐ์ (DEBUG < INFO < WARN < ERROR)
- ๋ก๊ทธ ํด์๋: ์ผ๋ง๋ ์์ธํ ๊ธฐ๋กํ ์ง
Append-Only ํจํด(์ ๋ ฅ ์ ์ฉ ํจํด)
๊ณผ๊ฑฐ๋ฅผ ์ง์ฐ์ง ์๋ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐฉ์, ํ ์ด๋ธ์ ๋ ์ฝ๋๋ฅผ ์์ (UPDATE)ํ์ง ์๊ณ , ๋ณ๊ฒฝ ์ฌํญ์ ์ ๋ ์ฝ๋๋ก ์ถ๊ฐ(INSERT)ํ๋ ๋ฐฉ์
์ฅ์
- ์์ ํ ์ด๋ ฅ ์ถ์ ๊ฐ๋ฅ
- ์์ธ ๋ถ์, ๋ณต์ ์ฌ์
- race condition ๊ฐ์
- ์ ๋ฐ์ดํธ๋ ์ญ์ ์ฒ๋ฆฌ ๊ณผ์ ์์ ๋ฐ์ํ ์ ์๋ ๋์์ฑ ๋ฌธ์ ๋ฅผ ์ค์ผ ์ ์๋ค.
- ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์ ๋ณต์กํ ๋์์ฑ ์ ์ด๊ฐ ๋ ํ์ํ๋ค.
๋ฌธ์ ์
- ๋ฐ์ดํฐ ๋น๋ฒํ ๋ณ๊ฒฝ ์ ํ ์ด๋ธ์ด ๊ธ๊ฒฉํ ์ปค์ง
- ์ต์ ๋ ์ฝ๋ ์กฐํ ์ ์ค๋ฒํค๋ ๋ฐ์ (ํ ID์ ์๋ฐฑ ๊ฐ ๋ ์ฝ๋ ์กด์ฌ ๊ฐ๋ฅ)
- ํ๋์ ID๋ณ๋ก ๋ง์ ์ด๋ ฅ ๋ ์ฝ๋๋ฅผ ์กฐํํด์ผ ํ๋ฏ๋ก, ์ํ๋ ํ์ฌ ์ํ๋ ํน์ ์์ ์ํ๋ฅผ ์ฐพ๊ธฐ ์ํด ๋ณต์กํ ํํฐ๋ง์ด๋ ์ ๋ ฌ ์์ ์ด ํ์ํ๋ค. ์ด ๊ณผ์ ์์ ์ถ๊ฐ์ ์ธ CPU, ๋ฉ๋ชจ๋ฆฌ ์์์ด ์๋ชจ๋๊ณ ์ฟผ๋ฆฌ ์๊ฐ์ด ๋์ด๋๋ค.
-> ๋ฐ๋ผ์ ๋ง์ด ๋ณ๊ฒฝ๋๋ ๋ฐ์ดํฐ์์๋ ์ ๋ ฅ ์ ์ฉ ์ด๋ ฅ ํจํด์ด ๋ฐ์ดํฐ ์ฉ๋๊ณผ ์ฟผ๋ฆฌ ์ฑ๋ฅ ์ธก๋ฉด์์ ๋ถ๋ด์ด ๋ ์ ์๋ค. ์ด๋ด ๋๋ ์์นด์ด๋น, ํํฐ์ ๋, ์ธ๋ฑ์ฑ ์ต์ ํ ๋ฑ์ ๋ณด์์ฑ ๊ณผ ์ค๊ณ๊ฐ ํ์ํ๋ค.
๋ฉ์์ง์ ์คํธ๋ฆผ, ๋ฉ์์ง ํ์ ์ดํด์ ๋น๊ต
ํ๋ ๋ถ์ฐ ์์คํ ๊ณผ MSA์์ ์์ฃผ ๋ฑ์ฅํ๋ ๊ฐ๋ ์ธ ๋ฉ์์ง, ๋ฉ์์ง ํ, ๊ทธ๋ฆฌ๊ณ ์ด๋ฒคํธ ์คํธ๋ฆผ์ ๋ํด ์์๋ณด์.
์ด๋ค์ ๋ฐ์ดํฐ์ ์ด๋ฒคํธ๋ฅผ ์์คํ ๊ฐ์ ์ ๋ฌํ๋ ์ค์ํ ๋ฉ์ปค๋์ฆ์ด๋ค.
1. ๋ฉ์์ง๋ ๋ฌด์์ธ๊ฐ?
๋ฉ์์ง๋ ์์คํ ๊ฐ ์ ๋ฌ๋๋ ๋ฐ์ดํฐ์ ์์ ๋ฐ์ดํฐ์ด๋ค. ์๋ฅผ ๋ค์ด, ์ฃผ๋ฌธ ์ ๋ณด, ์๋ฆผ, ์ผ์ ๋ฐ์ดํฐ ๋ฑ์ด ๋ชจ๋ ๋ฉ์์ง๊ฐ ๋ ์ ์๋ค. ๋ณดํต ๊ฒ์์๊ฐ ๋ฉ์์ง๋ฅผ ์์ฑํ๊ณ , ์๋น์๊ฐ ์ด๋ฅผ ๋ฐ์ ์ฒ๋ฆฌํ๋ค.
๋ฉ์์ง ์์ฒด๋ ๋ฐ์ดํฐ์ด๊ธฐ์ ์ ์ฅ์ด๋ ์ ์ก์ ์ง์ ๋ด๋นํ์ง๋ ์๋๋ค. ๋ฉ์์ง๋ ๋ ๋ฆฝ์ ์ธ ๋จ์์ด๋ฉฐ, ๋ฉ์์ง ๊ฐ์ ์ฐ์์ฑ์ด๋ ์์๊ฐ ๋ณด์ฅ๋์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
2. ๋ฉ์์ง ํ๋?
๋ฉ์์ง ํ๋ ๋ฉ์์ง๋ฅผ ์์ ํ๊ฒ ์ ์ฅํ๊ณ ์ ๋ฌํ๋ ์์คํ ์ด๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํ ๊ตฌ์กฐ๋ฅผ ๋ ๋ฉฐ, ๋ฉ์์ง๋ฅผ ๋ฃ์ ์์๋๋ก ์๋น์๊ฐ ํ๋์ฉ ๋ฐ์ ์ฒ๋ฆฌํ๋ค. ๋ฉ์์ง๋ฅผ ๋ฐ์ ์๋น์๋ ์ฒ๋ฆฌ ์๋ฃ ํ ํ์์ ๋ฉ์์ง๋ฅผ ์ญ์ ํ๋ค.
๋ฉ์์ง ํ์ ์ฃผ์ ํน์ง
- ๋น๋๊ธฐ ์ ์ก: ๋ฐํ์์ ์๋น์๊ฐ ๋์์ ๋์ํ์ง ์์๋ ๋ฉ์์ง ์ ๋ฌ์ด ๊ฐ๋ฅํ๋ค.
- ์ ์ ์ ์ถ(FIFO) ์ฒ๋ฆฌ: ๋ฉ์์ง๋ ๋ค์ด์จ ์์๋๋ก ์ฒ๋ฆฌ๋์ด ๋ฉ์์ง ์์๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค.
- ๋ถํ ์ํ ๋ฐ ๋ฒํผ๋ง: ๊ฐ์์ค๋ฌ์ด ๋ฉ์์ง ์ฆ๊ฐ ์ ํ๊ฐ ๋ฉ์์ง๋ฅผ ์ ์ฅํด ์๋น์๊ฐ ์ฒ์ฒํ ์ฒ๋ฆฌํ ์ ์๊ฒ ํ๋ค.
- ํ์ฅ์ฑ: ์ฌ๋ฌ ๋
ธ๋๋ก ๋ถ์ฐ ๋ณต์ ๊ฐ๋ฅํ๋ฉฐ ์ํ ํ์ฅ์ด ๊ฐ๋ฅํ๋ค.
- ๋ถ์ฐ ํ๊ฒฝ์์ ๋ฉ์์ง ํ๋ ๋ ธ๋ ๋ณต์ ๋ฅผ ํตํด ๋ฉ์์ง ๋ด๊ตฌ์ฑ์ ๋ณด์ฅํ๋ค.
- ์ ์ด๋ ํ ๋ฒ ์ ๋ฌ(at-least-once delivery): ๋ฉ์์ง๋ ์ต์ ํ ๋ฒ ์๋น์์๊ฒ ์ ๋ฌ๋๋ค. ์ค๋ณต ๊ฐ๋ฅ์ฑ์ ๋๋นํด ์๋น์์์ ์ค๋ณต ์ฒ๋ฆฌ ๋ฐฉ์ง๊ฐ ํ์ํ๋ค.
- AWS SQS ๊ฐ์ ์๋น์ค๋ ํ์ค ํ(FIFO ์์ ๋ฏธ๋ณด์ฅ)์ FIFO ํ(์์ ๋ณด์ฅ)๋ฅผ ์ ๊ณต
์ ์คํ(Stack)์ด ์๋๋ผ ํ(Queue)๋ฅผ ์ฌ์ฉํ๋๊ฐ?
์คํ์ LIFO๊ตฌ์กฐ๋ผ ๊ฐ์ฅ ๋ง์ง๋ง์ ๋ค์ด์จ ๋ฉ์์ง๊ฐ ๋จผ์ ์ฒ๋ฆฌ๋๋ค. ์ด ๊ฒฝ์ฐ ๋ฉ์์ง ์ฒ๋ฆฌ ์์๊ฐ ๋ค๋ฐ๋์ด ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ํด์น ์ ์๋ค.
3. ์คํธ๋ฆผ์ด๋?
์คํธ๋ฆผ์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๋ง๋ค ๋ฐ์ดํฐ๋ฅผ ์๊ฐ ์์๋๋ก ๋์ ํด์ ์ ์ฅํ๋ ์ฐ์์ ์ธ ๋ฐ์ดํฐ ํ๋ฆ์ด๋ค. ์คํธ๋ฆผ์ ๋ฉ์์ง์ฒ๋ผ ์๋ฉธํ์ง ์๊ณ , ๋์ค์ ๋ค์ ์ฝ๊ฑฐ๋ ์ฌ์ฒ๋ฆฌํ ์ ์๋ค.
์คํธ๋ฆผ์ ํต์ฌ ํน์ง
- ์ง์์ ์ ์ฅ๊ณผ ์ฌ์ ๊ฐ๋ฅ: ์ด๋ฒคํธ ํ์คํ ๋ฆฌ๊ฐ ๋ก๊ทธ์ฒ๋ผ ์์ฌ ์ธ์ ๋ ์ฌ์ํ๊ฑฐ๋ ๊ณผ๊ฑฐ ์ํ๋ฅผ ์ฌ๊ตฌ์ฑํ ์ ์๋ค.
- ์ฌ๋ฌ ์๋น์ ๋์ ์ฒ๋ฆฌ: ๊ฐ ์๋น์๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์คํธ๋ฆผ์ ์ด๋ฒคํธ๋ฅผ ์ฝ๊ณ ์ฒ๋ฆฌํ ์ ์๋ค.
- ์ค์๊ฐ ์ฒ๋ฆฌ ๋ฐ ๋ถ์์ ๊ฐ์ : ์ง์์ ์ธ ๋ฐ์ดํฐ ํ๋ฆ์ ์ค์๊ฐ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ๋ณต์กํ ์ด๋ฒคํธ ์ถ์ ์ ์ ๋ฆฌํ๋ค.
- ์์ ๋ณด์ฅ: ์ด๋ฒคํธ ์๊ฐ ์์๊ฐ ๋ณด์ฅ๋์ด ์ํ ๋ณํ ํ๋ฆ ์ถ์ ์ ์ ํฉํ๋ค.
์คํธ๋ฆผ์ด ๋ฉ์์ง ๋จ์ ๋ณด์
- ๋ฉ์์ง๋ ์๋น ํ ์ญ์ ๋์ด ๊ณผ๊ฑฐ ๋ฐ์ดํฐ ์ถ์ ์ด ์ด๋ ต์ง๋ง, ์คํธ๋ฆผ์ ๋ฐ์ดํฐ๋ฅผ ๊ณ์ ๋์ ํด ๋ณด์กดํ๋ค.
- ์คํธ๋ฆผ์ ์ด๋ฒคํธ ์์์ ๋ ผ๋ฆฌ์ ์ฐ๊ด์ฑ์ ์ ์งํ๋ฉด์ ์ฌ๋ฌ ์๋น์๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ์ ์๋ค.
- ์คํธ๋ฆผ์ ์ค์๊ฐ ์ฒ๋ฆฌ๋ฟ ์๋๋ผ, ๊ณผ๊ฑฐ ์ด๋ฒคํธ ์ฌ์์ด ๊ฐ๋ฅํด ๋ณต์กํ ์ด๋ฒคํธ ๋ถ์๊ณผ ์ํ ์ถ์ ์ด ์ฝ๋ค.
๋ฐ๋ผ์ ์คํธ๋ฆผ์ ๋จ์ํ ๋ฉ์์ง ์ ๋ฌ์ ๋์ด ์๊ฐ์ ๋ฐ๋ฅธ ์ด๋ฒคํธ ๊ธฐ๋ก๊ณผ ์ง์์ ๋ฐ์ดํฐ ํ๋ฆ ๊ด๋ฆฌ๊ฐ ํ์ํ ์์คํ ์์ ๋ฉ์์ง์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๋ ํ์ฅ๋ ๊ฐ๋ ์ด๋ผ ํ ์ ์๋ค.
์ ๋ฆฌํ๋ฉด
- ๋ฉ์์ง๋ ๋ ๋ฆฝ์ ์ธ ๋ฐ์ดํฐ ๋จ์ ๊ทธ ์์ฒด์ด๋ฉฐ, ๋ฉ์์ง ํ๋ ์ด๋ฅผ ์ ์ฅํ๊ณ ์ ๋ฌํ๋ ์์คํ ์ด๋ค.
- ๋ฉ์์ง ํ๋ ์ฃผ๋ก ์์ ์ฒ๋ฆฌ, ์๋ฆผ, ๋น๋๊ธฐ ํธ์ถ์ ์ ํฉํ๋ฉฐ, ๋ฉ์์ง๋ ์๋น๋๋ฉด ์ญ์ ๋๋ค.
- ์คํธ๋ฆผ์ ์ด๋ฒคํธ๊ฐ ์ฐ์์ ์ผ๋ก ์ ์ฅ๋๊ณ ์ฌ์ฒ๋ฆฌ ๋ฐ ์ค์๊ฐ ๋ถ์์ด ํ์ํ ๊ฒฝ์ฐ์ ์ฐ์ธ๋ค.
- ์คํธ๋ฆผ์ ๋ฉ์์ง์ ๋จ์ ์ ๋ณด์ํ๋ฉฐ, ํนํ ์๊ฐ์ ๋ฐ๋ฅธ ์ด๋ฒคํธ ์ด๋ ฅ ๊ด๋ฆฌ์ ๋ณต์กํ ์ํ ์ถ์ ์ ํจ๊ณผ์ ์ด๋ค.
์ถ๊ฐ๋ก ํ์๋ ๋ฐ๋๋ ํฐ ํ๊ฐ ์๋ค.
- ์์งํ ์ ์๋ ์ด๋ฒคํธ๋ ๋ค์ ๋ผ์ฐํ ํด์ ๋ฐ๋๋ ํฐ ํ๋ผ๋ ๋ณ๋ ํ์ ์ ์ฅํ๋ค.
- ์ด๋ฅผ ์ด์ฉํ์ฌ ์๋ฌ ๋ฐ์ ์ด์ ๋ฅผ ํ์ธํ๊ณ , ์์ ํ์ ํ๋ฅผ ๊ฐ์ ๊ฐ๋ฅ
์ด๋ฒคํธ ์คํธ๋ฆฌ๋ฐ ํ๋ซํผ๊ณผ ๋ฉ์์ง ํ ์ฐจ์ด
- ๋ฉ์์ง ํ๋ ํน์ ๋ฉ์์ง๋ฅผ ์๋น์์๊ฒ ์ ํํ ์ ๋ฌํ๋ ๋ฐ ์ด์ ์ ๋ ๋ฏธ๋ค์จ์ด๋ก, ๋ฉ์์ง๋ฅผ ์๋นํ๋ฉด ํ์์ ์ญ์ ํ๋ค.
- ์ด๋ฒคํธ ์คํธ๋ฆฌ๋ฐ ํ๋ซํผ์ ์ ๋ ฌ๋ ๋ ์ฝ๋ ๋ก๊ทธ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ๊ณผ๊ฑฐ ์ด๋ฒคํธ๋ฅผ ์ฌ์ํ ์ ์์ผ๋ฉฐ, ์ฌ๋ฌ ์๋น์๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋ค.
- ์ด๋ฒคํธ ์คํธ๋ฆฌ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ ์ ์งํ๋ฉฐ, ์๊ฐ ์์๋๋ก ์ด๋ฒคํธ ํ๋ฆ์ ๋ค๋ฃจ๋ฏ๋ก ๋ณต์กํ ์ํ ์ถ์ ๋ฐ ์ค์๊ฐ ๋ถ์์ ์ ํฉํ๋ค.
ํ ํฝ๊ณผ ์คํธ๋ฆผ ํํฐ์
- ํ ํฝ: ์ด๋ฒคํธ๊ฐ ์คํธ๋ฆฌ๋ฐ๋๋ ๋ฐ์ดํฐ ๋จ์. ์๋ฅผ ๋ค์ด ์ด์๊ฑฐ๋ํ์ง ์์คํ ์์ "์ด์๊ฑฐ๋" ์ ๋ณด๋ฅผ ๋ด์ ํ ํฝ์ด ์๋ค.
- ์คํธ๋ฆผ ํํฐ์ : ํ๋์ ํ ํฝ ๋ด ๋ฐ์ดํฐ๊ฐ ํํฐ์ ํค์ ๋ฐ๋ผ ์ฌ๋ฌ ํํฐ์ ์ผ๋ก ๋๋์ด์ง. ๊ฐ ํํฐ์ ์ ๋ ๋ฆฝ์ ์ธ ์๋ธ ์คํธ๋ฆผ์ด๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ ์ ์ฅํ๋ค.
- ํํฐ์ ์ ํตํด ๋ณ๋ ฌ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ์ฌ, ์ฌ๋ฌ ์๋น์๊ฐ ๋์์ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
- ๋ํ, ํํฐ์ ๋๋ถ์ ํ์ฅ์ฑ์ด ๋ฐ์ด๋๊ณ , ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋์ด ํฐ ํ๊ฒฝ์์๋ ์์คํ ๋ถํ ๋ถ์ฐ๊ณผ ์์ ์ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
ํซ์คํ ๋ฌธ์ ์ ํํฐ์ ํค
- ํํฐ์ ํค๊ฐ ํน์ ๊ฐ์ ์ง์ค๋๋ฉด ๋ช๋ช ํํฐ์ ์๋ง ๋ฉ์์ง๊ฐ ์ ๋ฆฌ๋ฉด์ ๋ฐ์ดํฐ ๋ถ๊ท ํ์ด ๋ฐ์ํ๋ค.
- ์ด๋ฐ ๋ฐ์ดํฐ ๋ถ๊ท ํ์ด ๋ฐ๋ก ํซ์คํ ๋ฌธ์ ๋ก, ์ผ๋ถ ํํฐ์ ์ ๊ณผ๋ํ ๋ถํ๊ฐ ์๊ฒจ ์ฒ๋ฆฌ ์ง์ฐ, ๋ ธ๋ ๊ณผ๋ถํ, ์์ ๋ญ๋น ๋ฑ์ ๋ฌธ์ ๋ฅผ ์ผ์ผํจ๋ค.
- ์ด๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด ํํฐ์ ํค ์ค๊ณ ์ ๊ณ ๋ฅด๊ฒ ๋ถ์ฐ๋๋๋ก ํค๋ฅผ ์ ํํ๋ ๊ฒ์ด ํ์์ ์ด๋ค.
๋ถ์ฐํ ์์คํ ์ผ๋ก์ ์ด๋ฒคํธ ์คํธ๋ฆฌ๋ฐ ํ๋ซํผ์ ์ฅ์
- ์คํธ๋ฆผ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ๋ ธ๋์ ๋ถ์ฐ ์ ์ฅ๋์ด ๋ด๊ฒฐํจ์ฑ(Fault Tolerance)๊ณผ ๋ณต๊ตฌ๋ ฅ(Recovery)์ด ํ๋ฅญํ๋ค.
- ๋ ธ๋ ์ฅ์ ๋ฐ์ ์์๋ ๋ค๋ฅธ ๋ ธ๋์์ ์คํธ๋ฆผ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํด ์๋น์ค ์ง์์ด ๊ฐ๋ฅํ๋ค.
- ํ์ฅ์ฑ์ด ๋ฐ์ด๋ ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ์ฒ๋ฆฌ์ ์ ํฉํ๋ค.
+ ์ฟ ๋ฒ๋คํฐ์ค์์์ Taint์ Toleration
- Taint: ๋ ธ๋์ ์ค์ ํ๋ ํน์ฑ์ผ๋ก, ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์๋ ํ๋๊ฐ ํด๋น ๋ ธ๋์ ์ค์ผ์ค๋ง๋์ง ์๋๋ก ๊ฑฐ๋ถํ๋ ์ญํ
- Toleration: ํ๋์ ์ค์ ํ๋ ํน์ฑ์ผ๋ก, ๋ ธ๋์ taint๋ฅผ ํ์ฉํด ๊ทธ ๋ ธ๋์ ์ค์ผ์ค๋ง๋ ์ ์๋๋ก ํ๋ค.
- -> ํน์ ๋ ธ๋๋ฅผ ์ฅ์ ์ฒ๋ฆฌ, ๋ฆฌ์์ค ๊ฒฉ๋ฆฌ ๋๋ ํน์ ์ํฌ๋ก๋ ์ ์ฉ์ผ๋ก ์ค์ ํ ์ ์๋ค.
์๊ฐ์ ํ ์ข ๋ฅ๊ฐ ์๋๋ค. ์ด๋ฒคํธ ์๊ฐ, ์์ง์๊ฐ, ์ฒ๋ฆฌ ์๊ฐ
1. ์ด๋ฒคํธ ์๊ฐ(Event Time)
- ์์ฒ ์์คํ ์์ ์ด๋ฒคํธ๊ฐ ์ค์ ๋ก ๋ฐ์ํ ์์
- ์๋ฅผ ๋ค์ด ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํด๋ฆญํ๊ฑฐ๋ ๊ฑฐ๋๊ฐ ๋ฐ์ํ ์ ํํ ์๊ฐ์ด๋ค.
2. ์์ง ์๊ฐ(Ingestion Time)
- ์ด๋ฒคํธ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ์๋ก ์์ง๋์ด ๋ค์ด์จ ์์
- ๋คํธ์ํฌ ์ง์ฐ, ์ฒ๋ฆฌ ์ง์ฐ ๋ฑ์ผ๋ก ์ธํด ์ด๋ฒคํธ ์๊ฐ๊ณผ ์์ง ์๊ฐ์๋ ์ฐจ์ด๊ฐ ์์ ์ ์๋ค.
3. ์ฒ๋ฆฌ ์๊ฐ(Processing Time)
- ์คํธ๋ฆผ ์ฒ๋ฆฌ ์์ง์ด๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์คํ ์์ ์ค์ ์ด๋ฒคํธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์๊ฐ
- ์์คํ ์ฑ๋ฅ๊ณผ ์ฒ๋ฆฌ ์๋๋ฅผ ํ๊ฐํ๊ฑฐ๋, ์์ ์ง์ฐ ์๊ฐ์ ์ธก์ ํ ๋ ์ค์ํ๋ค.
- ์ฒ๋ฆฌ ์๊ฐ์ ์์คํ ์ ํ์ฌ ์๊ฐ๊ณผ ๋ฐ์ ํ๋ฉฐ, ์ด๋ฒคํธ ์๊ฐ๊ณผ๋ ๋ฌด๊ดํ ์ ์๋ค.
์ด ์ธ ๊ฐ์ง ์๊ฐ์ด ์ค์ํ ์ด์
- ๋ฐ์ดํฐ ์์คํ ์์๋ ์ด๋ฒคํธ ์๊ฐ์ด ๊ฐ์ฅ ์ค์ํ์ง๋ง, ๋คํธ์ํฌ ์ง์ฐ์ด๋ ์ฅ์ ๋ก ์ธํด ์ด๋ฒคํธ๊ฐ ๋์ค์ ์์ง๋ ์ ์๋ค.
- ์ด๋ฅผ ๊ณ ๋ คํด ์คํธ๋ฆผ ์ฒ๋ฆฌ ์์คํ ์ ์์ง ์๊ฐ๊ณผ ์ฒ๋ฆฌ ์๊ฐ์ ํจ๊ป ๊ด๋ฆฌํด์ผ ํ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ข ๋ฅ๊ฐ ๋ง๋ค. ์ด๋, ์ด๋ค ๊ธฐ์ค์ผ๋ก DB๋ฅผ ์ ํํด์ผ ํ๋๊ฐ?
๋ฐ์ดํฐ ์ ํ๊ณผ ์ํฌ๋ก๋๊ฐ ๋ค์ํด์ง๋ฉด์ ์ ํฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํ๋ ๊ธฐ์ค์ด ์ค์ํด์ก๋ค.
๊ธฐ์กด RDBMS์์ NoSQL๋ก์ ์ ํ ๊ณ ๋ฏผ์ด ๋ง์์ง๋ ์ด์ ์, NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข ๋ฅ๋ณ ํน์ง๊ณผ ํ์ฉ ์์ ์ ์๋์ ๊ฐ์ด ์ ๋ฆฌํ๋ค.
RDBMS์์ NoSQL๋ก ๋ณ๊ฒฝํ๋ ์ด์
- RDBMS๋ ์ ํํ๋ ์คํค๋ง์ ๋ณต์กํ ์กฐ์ธ, ACID ํธ๋์ญ์ ์ ์ง์ํ์ง๋ง, ํฐ ๋ถํ, ๋์ฉ๋, ๋น ๋ฅธ ํ์ฅ์ฑ, ์คํค๋ง ์ ์ฐ์ฑ์ด ํ์ํ ์ํฌ๋ก๋์์ ํ๊ณ๊ฐ ๋ํ๋๋ค.
- ์ด๋ด ๋, NoSQL๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ์ฌ ์ฑ๋ฅ, ํ์ฅ์ฑ, ๊ฐ๋ฐ ๋ฏผ์ฒฉ์ฑ์ ํ๋ณดํ๋ ์ ๋ต์ด ํ์ํ๋ค.
NoSQL๋ก ํฌ๊ธฐํ๋ ๊ฒ๊ณผ ์ป๋ ๊ฒ
| ํฌ๊ธฐํ๋ ๊ฒ | ์ป๋ ๊ฒ |
| ๊ฐํ ์ผ๊ด์ฑ(ACID) | ํ์ฅ์ฑ๊ณผ ์ฑ๋ฅ ํฅ์ |
| ๋ณต์กํ JOIN ์ง์ | ์ ์ฐํ ์คํค๋ง |
| ์๊ฒฉํ ์คํค๋ง ๊ณ ์ | ๋น ๋ฅธ ์คํค๋ง ๋ณ๊ฒฝ ๊ฐ๋ฅ |
4๊ฐ์ง NoSQL ์ข ๋ฅ๋ณ๋ก ์ด๋จ๋ ์ฌ์ฉ์ ๊ณ ๋ฏผํด์ผ ํ๋์ง ์์๋ณด์.
1. Key-Value DB
- ์: Redis
- ํน์ง: ํค๋ก ์ด๊ณ ์ ์กฐํ ๊ฐ๋ฅ, ์ธ๋ฉ๋ชจ๋ฆฌ ํน์ฑ์ผ๋ก ๋น ๋ฅธ ๋์์ฑ ์ฒ๋ฆฌ์ ์ ํฉ
- ๋จ์ : ๋ฐ์ดํฐ ํ๋ฐ์ฑ, ๋ณต๊ตฌ ์ํด ๋์คํฌ ์ ์ฅ๊ณผ ๋ค์ค ๋ ธ๋ ๋ถ์ฐ ํ์
- ์ฌ์ฉ์ฒ: ์ธ์ ์ ์ฅ, ์บ์, ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฑ
2. ๋ํ๋จผํธ ์ ์ฅ์
- ์: MongoDB
- ํน์ง: JSON ํํ ๋ฌธ์ ์ ์ฅ, ์คํค๋ง ์ ์ฐ, ์ปฌ๋ ์ ๋จ์ ๊ด๋ฆฌ
- ๋จ์ : ์กฐ์ธ ๋ฏธ์ง์ -> ์ ๊ทํ ์ด๋ ค์์ผ๋ก ๋ฐ์ดํฐ ์ค๋ณต ๋ฐ ๋น์ผ๊ด์ฑ ์ํ, ACID ์ ํ
- ์์
์ ํ์ค์บ์ด ํ์ํ ์ ์์ผ๋ฉฐ, CDC(๋ณ๊ฒฝ ๋ฐ์ดํฐ ์บก์ฒ) ์ ๋ต์ผ๋ก ์ด๋ฒคํธ ์คํธ๋ฆผ ํ์ฉํด ๋ฐ์ดํฐ ์ ๋ขฐ์ฑ ๋ณด์
- ์ธ๋ฑ์ค๊ฐ ๋ชจ๋ ์ฟผ๋ฆฌ ์กฐ๊ฑด์ ์ ์ฉ๋์ง ์๊ฑฐ๋, ๋ฐฐ์ด/์ค์ฒฉ ๊ตฌ์กฐ ๋ฑ ๋ณต์กํ ๋ํ๋จผํธ ํ๋ ์กฐ๊ฑด์ด ๋ง์ผ๋ฉด ์ธ๋ฑ์ค ์ฌ์ฉ์ด ์ด๋ ค์์ง๋ค.
- ์ธ๋ฑ์ค๊ฐ ์๋ ํ๋๋ ๋ณต์กํ ์ฟผ๋ฆฌ๋ ์ ์ฒด ์ปฌ๋ ์ ์ ๋ชจ๋ ๋ํ๋จผํธ๋ฅผ ํ์ด์ผ ํ๋ฏ๋ก full scan์ด ๋ฐ์ํ๋ค.
- ํ์ฉ์ฒ: ์ฝํ ์ธ ๊ด๋ฆฌ, ๋ก๊ทธ ์ ์ฅ, ๋น์ ํ ๋ฐ์ดํฐ ๊ด๋ฆฌ
- CDC๋ก ์ด๋ป๊ฒ ๋ณด์๋๋?
- ์ด๋ฅผ ํตํด ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ง ์ถ์ ํ์ฌ ๋ณ๋ ์ด๋ฒคํธ ์คํธ๋ฆผ์ผ๋ก ์ฒ๋ฆฌํ๋ฏ๋ก, ์ ์ฒด ์ปฌ๋ ์ ์ ๋ฐ๋ณต ์กฐํํ๋ ํ์ค์บ ๋ถ๋ด์ ์ค์ธ๋ค.
- ์ฆ, ๋ํ๋จผํธ ์ ์ฅ์์ ํ์ค์บ ๋ถ๋ด์ ์ค์ด๊ณ , ๋ณ๊ฒฝ ๋ฐ์ดํฐ์ ์ง์คํ ํจ์จ์ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
- CDC ๊ธฐ๋ฐ ์ด๋ฒคํธ ์คํธ๋ฆผ์ ์ค์๊ฐ ๋ถ์, ๋๊ธฐํ, ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ์ ํ์ฉ๋์ด ๋ฐ์ดํฐ ์ ๋ขฐ์ฑ๊ณผ ํจ์จ์ฑ์ ๊ฐ์ ํ๋ค.
- CDC๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ด๋ฒคํธ(์์ฑ, ์์ , ์ญ์ )๋ฅผ ์ค์๊ฐ ์คํธ๋ฆผ ํํ๋ก ์บก์ฒํ๋ค.
3. ์์ด๋ ์ปฌ๋ผ DB
- ์: Cassandra
- ํน์ง: ๋น ๋ฅธ ์ฐ๊ธฐ ์ฑ๋ฅ๊ณผ ๋๊ท๋ชจ ๋ถ์ฐ์ฒ๋ฆฌ, 1๊ฐ์ ์ธ๋ฑ์ค๋ง ์ง์
- ๋จ์ : ๋ณต์กํ ์ฟผ๋ฆฌ ๋ฐ ํธ๋์ญ์ ์ด๋ ค์, ์ธ๋ฑ์ค ์ธ ๋ฐ์ดํฐ ์ก์ธ์ค ์ ํ์ค์บ ๋๋ CDC๋ฅผ ์ด์ฉํ ์ด๋ฒคํธ ์บก์ฒ ํ์
- ํ์ฉ์ฒ: ๋์ฉ๋ ๋ฐ์ดํฐ ์ ์ฅ, ์ ์์๊ฑฐ๋, ํํ ํฌ ํธ๋์ญ์ ์ฒ๋ฆฌ
4. ๊ทธ๋ํ DB
- ์: Neo4j
- ํน์ง: ๋ ธ๋์ ์ฃ์ง ๊ตฌ์กฐ๋ก ๋ณต์กํ ๊ด๊ณ ํ์์ ์ต์ , ํน์ ์ฟผ๋ฆฌ ์ธ์ด(SPARQL, GRAPHQL, Cypher ๋ฑ) ์ง์
- ๋ํ๋จผํธ ์ ์ฅ์์ ๊ด๊ณ ํ์ ํ๊ณ ๋ณด์
- ๋ํ๋จผํธ ์ ์ฅ์๋ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฌธ์ ๋จ์๋ก ์ ์ฅํ๋ฉฐ, ์กฐ์ธ(Join) ๊ธฐ๋ฅ์ด ์์ด ๋ค์์ ์ฐ๊ด๋ ๋ฐ์ดํฐ๋ฅผ ํจ๊ป ์กฐํํ๊ธฐ ์ด๋ ต๋ค.
- ๊ด๊ณ ํํ์ด ์ ํ์ ์ด๊ณ , ์ค์๊ฐ์ผ๋ก ๋ณต์กํ ๊ด๊ณ๋ฅผ ํ์ํ๊ฑฐ๋ ์ํํ๋ ๋ฐ ๋นํจ์จ์ ์ด๋ค.
- ๋ฐ๋ผ์ ๋ค์ค ๋ ๋ฒจ ์ฐ๊ฒฐ, ๋ค๋๋ค ๊ด๊ณ ๋ฑ ๋ณต์กํ ๋คํธ์ํฌ ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ด๋ ต๋ค.
- ๊ทธ๋ํ DB๊ฐ ์ด๋ป๊ฒ ๋ณด์ํ๋๊ฐ?
- ๊ทธ๋ํ DB๋ ๋ ธ๋์ ์ฃ์ง๋ก ๋ฐ์ดํฐ๋ฅผ ํํํ์ฌ, ๋ณต์กํ ๊ด๊ณ์ ์ฐ๊ฒฐ์ ์์ฐ์ค๋ฝ๊ฒ ๋ชจ๋ธ๋งํ๋ค.
- ๊ทธ ๊ฒฐ๊ณผ, SNS ์น๊ตฌ ๊ด๊ณ, ์ถ์ฒ ์์คํ , ์ฌ๊ธฐ ํ์ง ๋ฑ ๊ด๊ณ ๊ธฐ๋ฐ ์ฟผ๋ฆฌ๋ฅผ ํจ์จ์ ์ด๊ณ ๋น ๋ฅด๊ฒ ์ํํ ์ ์๋ค.
- ๋ํ๋จผํธ ์ ์ฅ์์์ ๋นํจ์จ์ ์ธ ๋ค์ค ์กฐ์ธ, ์ค์ฒฉ ๋ฌธ์ ํ์ ๋ฌธ์ ๋ฅผ ๊ทธ๋ํ DB๋ ์ฐ๊ฒฐ ํ์์ผ๋ก ํด๊ฒฐํ๋ค.
- ํ์ฉ์ฒ: SNS, ์ถ์ฒ ์์คํ , ๋ณต์กํ ๋คํธ์ํฌ ๋ถ์
- ๊ฒ์ DB: ํ ์คํธ ๊ฒ์, ๋ก๊ทธ ๋ถ์์ ์ต์ ํ. ์ธ๋ฑ์ฑ์ผ๋ก ์ฟผ๋ฆฌ ์ฑ๋ฅ ํฅ์, Elasticsearch
- ์๊ณ์ด DB: ์ฃผ๊ฐ, ๊ธฐ์ ๋ฑ ์๊ณ์ด ๋ฐ์ดํฐ์์ ๋๋์ ์ฐ๊ธฐ ์์ ๊ณผ ์ค์๊ฐ ๋ถ์์ ์ ํฉ. Apache Druid
๊ธฐ์กด RDBMS์์ ์ฐจ์ด
- ๊ธฐ์กด์๋ ์๊ณ์ด ๋ฐ์ดํฐ์ ํ ์คํธ ๋ก๊ทธ ๋ฑ์ RDBMS์ ์ ์ฅํด์์ง๋ง, ๋น ๋ฐ์ดํฐ ์๋๊ฐ ๋๋ฉด์ ํน์ ๋ชฉ์ DB๊ฐ ํ์ํด์ง
- RDBMS๋ ์ ํํ๋ ํ ์ด๋ธ๊ณผ ์๊ฒฉํ ์คํค๋ง๋ฅผ ์ฌ์ฉํ๋ฉฐ, ๋ณต์กํ ์กฐ์ธ๊ณผ ํธ๋์ญ์ ๊ด๋ฆฌ์ ๊ฐ์
- Elasticsearch์ ์๊ณ์ด DB๋ ๋น์ ํ ๋ฐ์ดํฐ, ๋์ฉ๋ ๋ฐ์ดํฐ, ๋น ๋ฅธ ๊ฒ์๊ณผ ๋ถ์์ ํนํ๋์ด ์์ด ๋น ๋ฐ์ดํฐ ํ๊ฒฝ์ ์ ํฉ
API ์ข ๋ฅ
- REST API: ๋ฌด์ํ(stateless)๊ฐ ํน์ง์ผ๋ก, ๊ฐ๊ฐ์ ์์ฒญ์ด ๋
๋ฆฝ์ ์ด๊ณ ์๋ฒ์ ์ํ๋ฅผ ์ ์ฅํ์ง ์์. HTTP ๋ฉ์๋ ๊ธฐ๋ฐ
- ์ฆ, ํ ๋ฒ์ ์์ฒญ์ด ๋๋๋ฉด ์๋ฒ๋ ๊ทธ ์์ฒญ๊ณผ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์๊ณ ๋ชจ๋ ๋ฒ๋ฆฐ๋ค.
- ์์ฒญ ์ ํ์ํ ์ ๋ณด๊ฐ ์์ฒญ ๋ฉ์์ง ์์ ๋ค ๋ค์ด์๊ณ , ์๋ฒ๋ ํด๋น ์์ฒญ๋ง ๋ณด๊ณ ์ฒ๋ฆฌํ๋ ๊ฒ์ด๋ค.
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ ์ํ๋ฅผ ์ ์ฅํ์ง ์๊ธฐ ๋๋ฌธ์ ์ด์ ์์ฒญ์ ์ํฅ ์์ด ๊ฐ ์์ฒญ์ด ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ค.
- ๋ฌด์ํ์ธ์ด์ : ํด๋ผ์ด์ธํธ-์๋ฒ ๊ฐ์ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ์ง ์๊ณ ๊ฐ ์์ฒญ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ฒ ํจ -> ํ์ฅ์ฑ, ์ฑ๋ฅ, ์ฅ์ ํ์ฉ์ฑ, ๋จ์์ฑ ๊ฐ์
- ์์ฒญ์ ์ฌ๋ฌ ์๋ฒ ์ธ์คํด์ค์ ์์ ๋กญ๊ฒ ๋ถ์ฐํ ์ ์์ด ์ฝ๊ฒ ํ์ฅํ ์ ์๋ค.
- ๊ฐ ์์ฒญ์ด ์์ฒญ์ ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์์ด ์๋ฒ๋ ์ธ์ ์ํ ๊ด๋ฆฌ๋ ์ํ ์กฐํ ์ค๋ฒํค๋ ์์ด ๋น ๋ฅด๊ฒ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค.
- GraphQL: ์ฟผ๋ฆฌ๊ฐ ํน์ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ก ์ ํ๋๋ REST API์ ๋ฌ๋ฆฌ, ๋จ์ผ ์์ฒญ์ผ๋ก ์ฌ๋ฌ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๊ฒ์ํ ์ ์๊ฒ ํ๋ค. ๋ ์ ์ฐํ ์ฟผ๋ฆฌ๋ฅผ ์งค ์ ์๋ ๊ฒ.
- ์นํ : ์ด๋ฒคํธ ๋ฐ์ ์ ์ง์ ๋ URL๋ก ์๋ ํธ์ถ๋๋ ์ญ๋ฐฉํฅ API ๋ฐฉ์. GitHub ์ก์ ์์ ์ฌ์ฉํด๋ดค๋ค.
- RPC, gRPC: ์๊ฒฉ ํ๋ก์์ ํธ์ถ(remote procedure call) ๋ฐฉ์์ผ๋ก, ๋ถ์ฐ ์์คํ
์์ ๋น ๋ฅธ ํต์ ๊ณผ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉ
- gRPC๋ RPC๋ฅผ HTTP/2์ ํ๋กํ ์ฝ ๋ฒํผ๋ผ๋ ์ด์ง ์ง๋ ฌํ ๊ธฐ์ ์ ํ์ฉํด ๊ตฌํํ ๊ฒ
- ์ด์ง ์ง๋ ฌํ: JSON ๊ฐ์ ํ ์คํธ ํ์ ๋์ ํ๋กํ ์ฝ ๋ฒํผ๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ์๊ณ ์ง๋ ฌํ/์ญ์ง๋ ฌํ ์๋๊ฐ ๋น ๋ฅด๋ค.
๋ฐ์ดํฐ ์คํ ๋ฆฌ์ง ์์คํ ๊ณผ ๊ด๋ฆฌ
๋ฐ์ดํฐ ์ ์ฅ
๋ฐ์ดํฐ ์ ์ฅ์ ๋ฐ์ดํฐ ๋ถ์, ๋ณํ, ์๋น์ ํต์ฌ ๋จ๊ณ์ด๊ธฐ ๋๋ฌธ์ ์ค์ํ๋ฉฐ, ๊ฐ ๋จ๊ณ๋ง๋ค ์ ์ฅ ์ ๋ต๊ณผ ์์คํ ์ ์ ํํ๋ ๊ฒ์ด ์ฑ๋ฅ๊ณผ ์์ ์ฑ์ ํฐ ์ํฅ์ ๋ฏธ์น๋ค. ์ด๋ฅผ ์ํด ์ฌ๋ฌ ์ ์ฅ ๋ฐฉ์๊ณผ ์ถ์ํ ๊ณ์ธต์ด ์กด์ฌํ๋ค.
์คํ ๋ฆฌ์ง ์ถ์ํ
- ๋ฐ์ดํฐ ๋ ์ดํฌ: ์์ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋๋ก ์ ์ฅํ๋ฉฐ, ๊ตฌ์กฐํ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ๋๋์ผ๋ก ์ ์ฅํ๋ ๋ฐ ์ ํฉ
- ๋ฐ์ดํฐ ๋ ์ดํฌํ์ฐ์ค: ๋ฐ์ดํฐ ๋ ์ดํฌ์ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์ ์ฅ์ ์ ๊ฒฐํฉํ ํ๋ซํผ
- ๋ฐ์ดํฐ ํ๋ซํผ: ๋ค์ํ ๋ฐ์ดํฐ ์ ์ฅ์์ ์ฒ๋ฆฌ ์์ง์ ํฌ๊ดํ๋ ํตํฉ ํ๊ฒฝ.
- ํด๋ผ์ฐ๋ ๋ฐ์ดํฐ์จ์ดํ์ฐ์ค: ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค๋ก, ํ์ฅ์ฑ๊ณผ ์ ์ฐ์ฑ์ ๋ณด์ฅํ๋ฉฐ ๋ถ์๊ณผ ๋ณด๊ณ ์ ์ ํฉํ๋ค.
https://koreatstm.tistory.com/309#1.%20Data%20Warehouse-1
๋ฐ์ดํฐ ์์ง๋์ด๋ง
๋น ๋ฐ์ดํฐ๋? ๋น ๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ๋ฅผ ํตํด ๊ฐ์น๋ฅผ ์ฐฝ์ถํ๋ ๊ฒ์ด ํต์ฌ ๋น ๋ฐ์ดํฐ์ 3๊ฐ์ง ๊ด์ (3V)Volume: ๋ฐ์ดํฐ์ ์์ด ๋ฐฉ๋ํจVelocity: ๋ฐ์ดํฐ๊ฐ ์์ฑ๋๊ณ ์ฒ๋ฆฌ๋๋ ์๋๊ฐ ๋น ๋ฆVariety: ๋ฐ์ดํฐ์ ํํ
koreatstm.tistory.com
์คํ ๋ฆฌ์ง ์์คํ
- ํ๋ก ๋ถ์ฐ ํ์ผ ์์คํ (HDFS): ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ ์ ์ฅํ๋ ์คํ์์ค ํ๋ ์์ํฌ
- ์บ์/๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ์คํ ๋ฆฌ์ง: ๋น ๋ฅธ ๋ฐ์ดํฐ ์ ๊ทผ์ ์ํด RAM์ ํ์ฉ, ์: Redis, Memcached
- RDBMS: ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ํธ๋์ญ์ ์ฒ๋ฆฌ์ ๊ฐํจ
- ๊ฐ์ฒด ์คํ ๋ฆฌ์ง: ์ฅ๊ธฐ ์ ์ฅ, ํ์ฅ์ฑ ์ข์, ์: Amazon S3
- ์คํธ๋ฆฌ๋ฐ ์คํ ๋ฆฌ์ง: ์ค์๊ฐ ๋ฐ์ดํฐ ํ๋ฆ์ ์ ์ฅ ๋ฐ ์ฒ๋ฆฌ, ์: Kafka
๋ฐ์ดํฐ ์ง๋ ฌํ
- ๋ฐ์ดํฐ ์์ฒด๋ ๋คํธ์ํฌ ์ ์ก, ๋์คํฌ ์ ์ฅ ์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ง๋ ฌํ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
- ํ
์คํธ ๊ธฐ๋ฐ ์ง๋ ฌํ (JSON, XML, CSV)
- ์ฌ๋์ด ์ฝ๊ณ ์ฐ๊ธฐ ์ฌ์
- ํฌ๊ธฐ๊ฐ ์๋์ ์ผ๋ก ํฌ๊ณ , ํ์ฑ ์๋๊ฐ ๋๋ฆด ์ ์์
- ์ธ๋ฉ๋ชจ๋ฆฌ ์ง๋ ฌํ
- ๋น ๋ฅธ ์ฒ๋ฆฌ์ ์ ๋ฌ์ ์ํด ๋ฉ๋ชจ๋ฆฌ ๋ด์์ ์ง๋ ฌํํ๋ ๋ฐฉ์์ ์ฌ์ฉํด ์ฑ๋ฅ ํฅ์
- ๋ฐ์ด๋๋ฆฌ ํํ๋ก ์ง๋ ฌํ๋์ด ์๋๊ฐ ๋น ๋ฆ, ํฌ๊ธฐ๋ ์์
- Airflow ๊ฐ์ ์ํฌํ๋ก์ฐ ๋๊ตฌ์์ ์์ ์ํ๋ ์ค๊ฐ ๊ฒฐ๊ณผ ์ ๋ฌ์ ํ์ฉ
- pickleํ์ผ์ด ์ฌ๊ธฐ์ ํด๋น
๋ฐ์ดํฐ ์คํ ๋ฆฌ์ง ์์คํ
๋จ์ผ๋จธ์ vs ๋ถ์ฐ ์คํ ๋ฆฌ์ง
- ๋จ์ผ ๋จธ์ ์คํ ๋ฆฌ์ง: ํ๋์ ์๋ฒ์ ์ ์ฅํ๋ ๋ฐฉ์. ์๋๋ ๋น ๋ฅด์ง๋ง ๋จ์ผ ์ฅ์ ์ (Single Point of Failure)์ด ์์ด ๋ด๊ฒฐํจ์ฑ์ด ๋ฎ๋ค.
- ๋ถ์ฐ ์คํ ๋ฆฌ์ง: ์ฌ๋ฌ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐํด์ ์ ์ฅ -> ํ ๊ณณ์ ์ฅ์ ๊ฐ ์๊ฒจ๋ ์๋น์ค๊ฐ ์ ์ง๋๋๋ก ์ค๊ณ. ๊ณ ๊ฐ์ฉ์ฑ๊ณผ ํ์ฅ์ฑ
์ผ๊ด์ฑ ๋ชจ๋ธ
- ๊ฐ๋ ฅ ์ผ๊ด์ฑ: ๋ชจ๋ ๋ ธ๋์์ ๋์์ ์ต์ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์๋๋ก ๋ณด์ฅ. ์ฑ๋ฅ์ด๋ ๊ฐ์ฉ์ฑ ๋ฌธ์ ๊ฐ๋ฅ
- ์ต์ข ์ผ๊ด์ฑ: ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด ๋ชจ๋ ๋ ธ๋์ ๋ฐ์ดํฐ๊ฐ ์ผ๊ด๋๋๋ก ๋ณด์ฅํ์ง๋ง, ์ผ์์ ์ผ๋ก๋ ๋ฐ์ดํฐ๊ฐ ์ผ์นํ์ง ์์ ์ ์๋ค. ๊ฐ์ฉ์ฑ, ํ์ฅ์ฑ ์ข๋ค.
ํ์ผ ์คํ ๋ฆฌ์ง vs ๊ฐ์ฒด ์คํ ๋ฆฌ์ง vs ๋ธ๋ก ์คํ ๋ฆฌ์ง
- ํ์ผ ์คํ ๋ฆฌ์ง: ๋๋ ํฐ๋ฆฌ์ ํ์ผ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ถ ์ ํต์ ์ธ ์ ์ฅ ๋ฐฉ์. NAS(Network Attached Storage)๊ฐ ๋ํ์ ์ด๋ฉฐ ํ์ผ ๋จ์ ์ ๊ทผ์ ์ง์
- ๊ฐ์ฒด ์คํ ๋ฆฌ์ง: ํ์ผ, ์ด๋ฏธ์ง, ๋์์ ๋ฑ ๋ชจ๋ ํํ์ ํฌ๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด ๋จ์๋ก ์ ์ฅ
- ๊ฐ ๊ฐ์ฒด๋ ๊ณ ์ ํ ํค-๊ฐ ์์ผ๋ก ๊ด๋ฆฌ๋๋ฉฐ, ๋ฐ์ดํฐ์ ํจ๊ป ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํจ๊ป ๊ด๋ฆฌ
- ์ ์ฅ๋ ๊ฐ์ฒด๋ ๋ถ๋ณ(immutable) ๋ฐ์ดํฐ๋ก ์ทจ๊ธ๋์ด ๋ณ๊ฒฝ ๋์ ์ ๊ฐ์ฒด๋ก ๋์ฒดํ๋ ๋ฐฉ์
- ํ์ฅ์ฑ์ด ๋ฐ์ด๋๊ณ , AWS S3, ๋์ฉ๋ ๋น์ ํ ๋ฐ์ดํฐ ์ ์ฅ์ ์ ํฉ
- ๋ธ๋ก ์คํ ๋ฆฌ์ง: ๋์คํฌ ๋ธ๋ก ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก, SAN(Storage Area Network)์ด ๋ํ์ . ์ผ๋ฐ์ ์ผ๋ก OS๊ฐ ๋ก์ปฌ ๋์คํฌ์ฒ๋ผ ์ธ์ํ๋ฉฐ, ๊ณ ์ฑ๋ฅ์ด ์๊ตฌ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ์ ์ฌ์ฉ๋๋ค.
ํด๋ผ์ฐ๋ ๋ด ๋ธ๋ก ์คํ ๋ฆฌ์ง ์: AWS EBS
- EBS (Elastic Block Store): AWS์ ๊ฐ์ํ๋ ๋ธ๋ก ์คํ ๋ฆฌ์ง ์๋น์ค๋ก EC2 ์ธ์คํด์ค์ ๋ณ๋๋ก ์ ์ฅ๋์ง๋ง, ๋์ผ ๊ฐ์ฉ ์์ญ(AZ)์ ์กด์ฌํด ๋ฎ์ ์ง์ฐ๊ณผ ๋์ ์ฑ๋ฅ์ ์ ๊ณต
- EBS ๋ณผ๋ฅจ์ ์ฌ๋ฌ ํธ์คํธ์ ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํด ๋ด๊ตฌ์ฑ๊ณผ ๊ฐ์ฉ์ฑ์ ๋์ธ๋ค.
- ๋จ, ๊ฐ์ฉ ์์ญ(AZ) ์ ์ฒด์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด EBS ๋ณผ๋ฅจ ๋ณต์์ ๋ถ๊ฐ๋ฅ
EC2 ์ธ์คํด์ค ์คํ ์ด
- EC2 ์ธ์คํด์ค ์คํ ์ด๋ EC2 ์ธ์คํด์ค ์์ฒด์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๋ก์ปฌ ์คํ ๋ฆฌ์ง
- ์ธ์คํด์ค๊ฐ ์ข ๋ฃ๋๊ฑฐ๋ ์ฌ์์๋๋ฉด ์ธ์คํด์ค ์คํ ์ด์ ๋ฐ์ดํฐ๋ ๋ชจ๋ ์ฌ๋ผ์ง๋ค.
- ๋น ๋ฅธ I/O ์ฑ๋ฅ์ด ํ์ํ ๋ ์ฌ์ฉํ์ง๋ง, ์๊ตฌ ์ ์ฅ์ฉ์ผ๋ก๋ ์ ํฉํ์ง ์๋ค.
EC2์๋ EBS๋ผ๋ ๋ณ๋ ๊ด๋ฆฌ๋๋ ๋์ ๋ด๊ตฌ์ฑ ๋ธ๋ก ์คํ ๋ฆฌ์ง๊ฐ ์๊ณ , ์ธ์คํด์ค ์คํ ์ด๋ ์์ ๋ก์ปฌ ์คํ ๋ฆฌ์ง๋ผ๋ ์ฐจ์ด๊ฐ ์๋ค.
- ์ธ์คํด์ค ์คํ ์ด๋ EC2 ์ธ์คํด์ค(์ปดํจํฐ)์ ๋ด์ฅ ๋์คํฌ๋ก ๋น ๋ฅด์ง๋ง ๋ด๊ตฌ์ฑ์ ๋ถ์กฑํ ์์ ์ ์ฅ ๊ณต๊ฐ
- EBS๋ ์ธ๋ถ ๋คํธ์ํฌ๋ก ์ฐ๊ฒฐ๋ ์๊ตฌ์ ์ด๊ณ ๋ ๋ฆฝ์ ์ธ ์ ์ฅ์ฅ์น๋ก, ๋ฐ์ดํฐ ์์์ฑ๊ณผ ๋ณต์๋ ฅ์ ์ ๊ณตํ๋ ์ ์ฅ๊ณต๊ฐ
์บ์ ์์คํ
- Memcached์ Redis๊ฐ ๋ํ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ์บ์ ์๋ฃจ์
- Memcached๋ ๋จ์ํ ํค-๊ฐ ์ ์ฅ์ ์ด์ , ๋น ๋ฅธ ์ฝ๊ธฐ/์ฐ๊ธฐ์ ์ ํฉ
- Redis๋ ํค-๊ฐ ์ ์ฅ ์ธ์๋ ๋ค์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ(๋ฆฌ์คํธ, ์ , ์ ๋ ฌ๋ ์ ๋ฑ)๋ฅผ ์ง์ํ๋ฉฐ, ์ง์์ฑ ์ ์ฅ๊ณผ ๋ณต์ ๊ธฐ๋ฅ๋ ์ ๊ณต
์คํธ๋ฆฌ๋ฐ ์คํ ๋ฆฌ์ง
- ์คํธ๋ฆฌ๋ฐ ๋ฐ์ดํฐ๋ ์ผ๋ฐ์ ์ธ ๋ฐฐ์น ๋ฐ์ดํฐ์ ๋ฌ๋ฆฌ, ์์ฐจ์ ์ด๊ณ ์ค์๊ฐ ์ฒ๋ฆฌ๊ฐ ํต์ฌ
- ํต์ฌ ๊ฐ๋ ์ค ํ๋์ธ ๋ฆฌํ๋ ์ด๋ ์คํธ๋ฆฌ๋ฐ ์์คํ ์ ์ ์ฅ๋ ๊ณผ๊ฑฐ ๋ฐ์ดํฐ๋ฅผ ํน์ ๋ฒ์๊น์ง ๋ค์ ์ฝ๊ฑฐ๋ ์ฌ์ฒ๋ฆฌํ ์ ์๋ ๊ธฐ๋ฅ
- ์ด๋ฅผ ํตํด ์ฅ์ ๋ณต๊ตฌ, ์ฌ์ฒ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ์ ํน์ ์์ ์ํ ์ฌ๊ตฌ์ฑ์ด ๊ฐ๋ฅํด์ง๋ค.
์ฐ๊ธฐ ์คํค๋ง (Write Schema)
- OLTP, ์ ํต์ ์ธ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์์ ์ฃผ๋ก ์ฌ์ฉ
- ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๋ ์๊ฒฉํ ํ์คํ์ ๊ตฌ์กฐ๋ฅผ ๋ฏธ๋ฆฌ ์ ์ (schema-on-write)
- ๋ฐ์ดํฐ ์ฝ์ ์ ์คํค๋ง ๊ฒ์ฆ๊ณผ ์ ํํ๊ฐ ์ด๋ฃจ์ด์ ธ ๋ฐ์ดํฐ ํ์ง๊ณผ ์ผ๊ด์ฑ์ ๋ณด์ฅ
- ํ์ง๋ง ์คํค๋ง ๋ณ๊ฒฝ์ด ์ด๋ ต๊ณ ์ ์ฐ์ฑ์ด ๋ฎ์
์ฝ๊ธฐ ์คํค๋ง (Read Schema)
- OLAP, ๋ฐ์ดํฐ ๋ ์ดํฌ ๋ฑ์์ ์ฃผ๋ก ์ฌ์ฉ
- ์ ์ฅ ์์๋ ์คํค๋ง๋ฅผ ์๊ฒฉํ ์ ์ฉํ์ง ์๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ๋ถ์ํ ๋ ์คํค๋ง๋ฅผ ๋์ ์ผ๋ก ์ ์ฉ (schema-on-read)
- ์ฝ๊ธฐ ์์ ์์ ํ์ํ ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณํํ์ฌ ์ ์ฐํ ์ฟผ๋ฆฌ์ ๋ถ์์ด ๊ฐ๋ฅ
- ๋ค์ํ ๋น์ ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ ๋ฆฌํจ
์ ์ปดํจํ ๊ณผ ์คํ ๋ฆฌ์ง๋ฅผ ๋ถ๋ฆฌ ํด์ผ ํ๋๊ฐ?
- ์ปดํจํ (์ฒ๋ฆฌ) ์์๊ณผ ์คํ ๋ฆฌ์ง(๋ฐ์ดํฐ ์ ์ฅ) ์์์ ๋ถ๋ฆฌํ๋ฉด ์์ ํ์ฉ ํจ์จ์ฑ์ด ๋์์ง๋ค.
- ์ปดํจํ ์ฉ๋์ ์ฒ๋ฆฌ๋ ์ฆ๊ฐ์ ๋ง๊ฒ ํ๋ ฅ์ ์ผ๋ก ์กฐ์ ๊ฐ๋ฅํ์ง๋ง, ์คํ ๋ฆฌ์ง๋ ๋์ฉ๋ ๋ฐ์ดํฐ ์ ์ฅ์ ํนํ๋์ด ๋น์ฉ์ด ์ ๊ฐ๋๋ค.
- ๋ง์ฝ ์ปดํจํ ๊ณผ ์คํ ๋ฆฌ์ง๊ฐ ๊ฒฐํฉ๋๋ฉด ์ปดํจํ ์์์ ๋ฐ์ดํฐ๋ฅผ ํจ๊ป ์ ์ฅํ๋ฏ๋ก, ์ปดํจํ ํ์ฅ ์๋ง๋ค ์คํ ๋ฆฌ์ง๋ ํจ๊ป ์ฆ์ค๋์ด ๋นํจ์จ์ ์ด๊ณ ๋ณต์กํด์ง๋ค.
- EC2 ๊ฐ์ ์ปดํจํ ์์์ ํ์ํ ๋๋ง ๋๋ฆฌ๊ณ , ๋ฐ์ดํฐ๋ S3 ๊ฐ์ ๋ ๋ฆฝ์ ์ธ ์คํ ๋ฆฌ์ง์ ์ ์ฅ๋์ด ๋น์ฉ๊ณผ ์ฑ๋ฅ์ ๋ถ๋ฆฌ ๊ด๋ฆฌ ๊ฐ๋ฅ
- ์ปดํจํ ์ฅ์ ์์๋ ๋ฐ์ดํฐ๋ ์์ ํ๊ฒ ์ ์ง๋๋ฉฐ, ์ปดํจํ ๊ณผ ์คํ ๋ฆฌ์ง๋ฅผ ๊ฐ๊ฐ ์ต์ ํํ๊ณ ํ์ฅํ ์ ์์ด ์ด์์ ์ ์ฐ์ฑ๊ณผ ์์ ์ฑ ์ฆ๊ฐ
๋ฐ์ดํฐ ๋ถ๋ฅ
๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํซ ์คํ ๋ฆฌ์ง์ ์ ์ฅํ๋ฉด ์ต๊ณ ์ ์ฑ๋ฅ์ ๋ด์ง๋ง ๋น์ฉ์ด ๊ฐ๋นํ๊ธฐ ์ด๋ ต๊ณ , ๋ฐ๋๋ก ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ์คํ ๋ฆฌ์ง์ ๋๋ฉด ๋น์ฉ์ ์ ๊ฐํ์ง๋ง ์ฑ๋ฅ ์ ํ๊ฐ ํฌ๋ค. -> trade-off๋ฅผ ๊ณ ๋ ค
- ํซ ๋ฐ์ดํฐ (Hot Data): ์์ฃผ ์ ๊ทผ๋๊ณ , ์ฆ์ ์ฌ์ฉํด์ผ ํ๋ ๋ฐ์ดํฐ
- ๋น ๋ฅธ ์ ๊ทผ์ฑ๊ณผ ๋ฎ์ ์ง์ฐ ์๊ฐ์ด ํ์
- ๊ณ ์ฑ๋ฅ ์คํ ๋ฆฌ์ง(์: SSD, ๋ฉ๋ชจ๋ฆฌ) ์ฌ์ฉํ์ง๋ง ๋น์ฉ์ด ๋งค์ฐ ๋์
- ์ ๋ฐ์ดํฐ (Warm Data): ์ค๊ฐ ์ ๋ ๋น๋์ ์ ๊ทผ์ ๊ฐ์ง๋ ๋ฐ์ดํฐ
- ๋น์ฉ๊ณผ ์ฑ๋ฅ์ ๊ท ํ์ ๋ง์ถ ์ ์ฅ์์ ์ ์ฅ
- ๋น ๋ฅธ ์กฐํ๋ ์๋๋๋ผ๋ ์ ๋นํ ์๋๊ฐ ํ์
- ์ฝ๋ ๋ฐ์ดํฐ (Cold Data): ๋๋ฌผ๊ฒ ์ ๊ทผํ๋ ์ฅ๊ธฐ ๋ณด๊ด์ฉ ๋ฐ์ดํฐ
- ์ ์ฅ ๋น์ฉ์ด ๋ฎ์ ์ฅ๊ธฐ ๋ณด๊ด์ฉ ์คํ ๋ฆฌ์ง ์ฌ์ฉ(์: ํ ์ดํ, ์ ๊ฐํ HDD, ํด๋ผ์ฐ๋ ์์นด์ด๋ธ)
- ์ ๊ทผ ์๋๋ ๋๋ฆฌ์ง๋ง ๋น์ฉ ์ ๊ฐ์ ์ด์
์ฑ๊ธ ํ ๋ํธ vs ๋ฉํฐ ํ ๋ํธ ๋ฐ์ดํฐ ์ ์ฅ
์ฑ๊ธ ํ ๋ํธ (Single Tenant)
- ๊ฐ ํ ๋ํธ๊ฐ ์ ์ฉ ์คํ ๋ฆฌ์ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๊ฒฝ์ ๊ฐ์ง๋ค.
- ๋ฐ์ดํฐ ์คํค๋ง, ๋ฒํท, ์ธํ๋ผ๊ฐ ๋ ๋ฆฝ์ ์ด์ด์ ํ ๋ํธ๋ณ ๋ง์ถค ์ค์ ๊ณผ ๋ณด์์ด ์ฝ๋ค.
- ์ธํ๋ผ ์ค๋ณต ๋ฐ ๊ด๋ฆฌ ๋น์ฉ ์ฆ๊ฐ, ํ ๋ํธ ๊ฐ ๋ฐ์ดํฐ ํตํฉ ๋ฐ ๋ถ์์ด ์ด๋ ต๋ค.
๋ฉํฐ ํ ๋ํธ (Multi Tenant)
- ๋จ์ผ ์คํ ๋ฆฌ์ง ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ์ฌ๋ฌ ํ ๋ํธ ๋ฐ์ดํฐ๊ฐ ๊ณต์กดํ๋ฉฐ, ๋์ผํ ์ธํ๋ผ์ ๊ตฌ์กฐ๋ฅผ ๊ณต์
- ์ธํ๋ผ ๋น์ฉ ์ ๊ฐ๊ณผ ํจ์จ์ ์ธ ๋ฆฌ์์ค ํ์ฉ์ด ๊ฐ๋ฅํ๊ณ ์ค์ผ์ผ์ด ์ฝ๋ค.
- ๊ทธ๋ฌ๋ ๊ฐ ํ ๋ํธ ๋ฐ์ดํฐ์ ๋ถ๋ฆฌ์ ๋ณด์, ๊ทธ๋ฆฌ๊ณ ์คํค๋ง ์ ํ ๋ฑ ๊ด๋ฆฌ์์ ์ด๋ ค์ ์กด์ฌ
-> ๋ณด์ ์๊ตฌ์ฌํญ, ๋น์ฉ ํจ์จ์ฑ, ๊ด๋ฆฌ ํธ์์ฑ, ๋ฐ์ดํฐ ํตํฉ ํ์์ฑ ๋ฑ์ ๊ณ ๋ คํด ์ ํ
์๋ฅผ ๋ค์ด, ๋ฏผ๊ฐํ ๊ธ์ต ๋ฐ์ดํฐ๋ ์ฑ๊ธ ํ ๋ํธ๋ฅผ ์ ํธ / SaaS ์๋น์ค ๋๋ ๊ณ ๊ฐ ๋์์ ๋ฉํฐ ํ ๋ํธ๊ฐ ํจ์จ์
์ฑ๊ธ ํ ๋ํธ๋ ๊ฐ ํ ๋ํธ๊ฐ ์ ์ฉ ์คํ ๋ฆฌ์ง์ ๋ ๋ฆฝ ์คํค๋ง๋ก ๋ถ๋ฆฌ๋์ด ์์ด ํ ๋ํธ๋ณ ํต์ ๊ฐ ์ฌ์ฐ๋, ์ธํ๋ผ ์ค๋ณต๊ณผ ํตํฉ ๋ถ์ ์ด๋ ค์์ด ์๋ค.
๋ฉํฐ ํ ๋ํธ๋ ๋จ์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด ์ฌ๋ฌ ํ ๋ํธ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด ๋น์ฉ๊ณผ ์ด์ ํจ์จ์ด ๋์ง๋ง, ๋ฐ์ดํฐ ๋ถ๋ฆฌ, ๋ณด์, ์คํค๋ง ์ ์ฝ ๊ด๋ฆฌ๊ฐ ํ์
'๐ฆญ AI&Big Data > Big Data' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ์คํ ๋ฆฌ์ง (1) | 2025.12.08 |
|---|---|
| ์นดํ์นด (0) | 2025.12.06 |
| Airflow(4) (4) | 2025.07.17 |
| ๋ฐ์ดํฐ ์์ง๋์ด๋ง (2) | 2025.07.06 |
| Airflow(3) (0) | 2025.06.30 |