AWS Unicorn Day ์ธ์ ์ ๋ฆฌ - Amazon Redshift๋ฅผ ํ์ฉํ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ
AWS Unicorn Day๋ฅผ ๋ค๋ ์์ ์ธ์๊น๊ฒ ๋ณด์๋ ์ธ์ ์ค ํ๋๋ฅผ ํ์๋ค์๊ฒ ๊ณต์ ํ๊ธฐ ์ํด ์ ๋ฆฌํด๋ณด์์ต๋๋ค. ๋ฐ์ดํฐ ๋ถ์ ์๊ตฌ์ฌํญ์ด ๊ธ์ฆํ๋ ์ํฉ์์ ์ด๋ป๊ฒ ํ์ฅ ๊ฐ๋ฅํ ๋ถ์ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ๋์ง์ ๋ํ ์ค์ ์ฌ๋ก์ ๋๋ค.
1. ๋ฐฐ๊ฒฝ: ๋ฐ์ดํฐ ๋ถ์ ์๊ตฌ ์ฆ๊ฐ
1.1 ๋น์ฆ๋์ค ํ๊ฒฝ ๋ณํ
๋น์ฆ๋์ค ์ฑ์ฅ๊ณผ ํจ๊ป ๋ฐ์ดํฐ ๊ธฐ๋ฐ ์์ฌ๊ฒฐ์ ์ ํ์์ฑ์ด ๊ธ๊ฒฉํ ์ฆ๊ฐํ์ต๋๋ค. ๊ธฐ์กด์ ์ง๊ด ์ค์ฌ ์์ฌ๊ฒฐ์ ์์ ๋ฐ์ดํฐ ๊ธฐ๋ฐ ์ ํ์ด ํ์๊ฐ ๋์๊ณ , ๋ค์๊ณผ ๊ฐ์ ๋ถ์ ์์๊ฐ ํญ์ฆํ์ต๋๋ค:
- KPI ๋ชจ๋ํฐ๋ง ๋ฐ ์ฑ๊ณผ ์ธก์
- ์ฌ์ฉ์ ํ๋ ๋ถ์ ๋ฐ ํจํด ํ์
- ๋น์ฆ๋์ค ํธ๋ ๋ ๋ถ์ ๋ฐ ์์ธก
์ ๋ฌธ์ ๊ฐ ๋์๋๊ฐ? ๋ฐ์ดํฐ ์์ ์ฆ๊ฐ์ ๋นํด ๊ธฐ์กด ์ธํ๋ผ๋ ํ์ฅ์ฑ๊ณผ ์ฑ๋ฅ ๋ฉด์์ ํ๊ณ๊ฐ ๋ช ํํ๊ณ , ์ด๋ก ์ธํด ์์ฌ๊ฒฐ์ ์๋๊ฐ ์ ํ๋์์ต๋๋ค.
2. ๊ธฐ์กด ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ํ๊ณ์
2.1 ๊ฐ๋ฐ์ ์์กด๋ ๋ฌธ์
๊ธฐ์กด ์์คํ ์ ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ๋ชจ๋ ๋ฐ์ดํฐ ์์ฒญ์ด ๊ฐ๋ฐ์๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ค๋ ์ ์ด์์ต๋๋ค:
- "๋ฐ์ดํฐ ์ข ๋ฝ์์ฃผ์ธ์"๋ผ๋ ๋น์ ํ/์ผํ์ฑ ์์ฒญ ๋ฐ๋ณต
- ์์์ + ์์ ๊ธฐ๋ฐ ํ์ ์ผ๋ก ์๋ํ ๋ถ์กฑ
- ๊ฐ๋ฐ์ ๋ฆฌ์์ค ์ง์์ ์๋ชจ
์ด ๋ฐฉ์์ ๋ฌธ์ ์ : ๋ฐ์ดํฐ ๋ถ์์ ์๋์ ์์จ์ฑ์ด ํ์ ํ ๋จ์ด์ง๋ฉฐ, ๊ฐ๋ฐํ์ ํต์ฌ ์ ๋ฌด์ ์ง์คํ ์ ์๊ฒ ๋ฉ๋๋ค.
3. 1์ฐจ ์๋: Reader DB + Redash
3.1 ์ด๊ธฐ ์ ๊ทผ๋ฒ
๊ฐ๋จํ ์๊ฐํ์ ์ฟผ๋ฆฌ ์๊ตฌ์ฌํญ์ ํด๊ฒฐํ๊ธฐ ์ํด Read Replica์ Redash๋ฅผ ๋์ ํ์ต๋๋ค.
3.2 ํ๊ณ์ ๋ฐ๊ฒฌ
- ์ฑ๋ฅ ์ ํ: ๋ณต์กํ ์ฟผ๋ฆฌ ์คํ ์ ์ด์ DB Read Replica์ ๋ถํ ๋ฐ์
- ํ์ฅ์ฑ ๋ถ์กฑ: ๋ถ์ ์๊ตฌ์ฌํญ์ด ๋ณต์กํด์ง์๋ก ์ฑ๋ฅ ๋ฌธ์ ์ฌํ
- ๋ฆฌ์์ค ์๋ชจ ์ง์: ์ฌ์ ํ ๊ฐ๋ฐ์ ๊ฐ์ ์ด ํ์ํ ์ํฉ ๋ฐ์
์ ์ด ๋ฐฉ๋ฒ์ด ํ๊ณ์๋๊ฐ? OLTP ์ต์ ํ๋ ๊ตฌ์กฐ์์ OLAP ์ฑ๊ฒฉ์ ๋ถ์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ๊ฒ์ ๊ทผ๋ณธ์ ์ผ๋ก ๋นํจ์จ์ ์ด์์ต๋๋ค.
4. 2์ฐจ ์๋: ๋ถ์์ฉ ๋ ๋ฆฝ DB + FDW
4.1 FDW(Foreign Data Wrapper) ๋์
PostgreSQL์ FDW ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์ธ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ก์ปฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ฒ๋ผ ์ ๊ทผํ ์ ์๊ฒ ๊ตฌ์ฑํ์ต๋๋ค.
FDW์ ์ฅ์ : ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ํฌ๋ก์ค ์ฟผ๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ ธ ๋ฐ์ดํฐ ํตํฉ ๋ถ์์ด ์ฉ์ดํด์ก์ต๋๋ค.
4.2 ์๋ก์ด ๋ฌธ์ ์ ๋ค
- pg_dump + restore ๋ฐฉ์์ ์ํ์ฑ: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฒด ๋คํ ๊ณผ์ ์์ ์คํจ ์ํ๊ณผ ์ด์ ์ํฅ ๋ฐ์
- ์ค์๊ฐ์ฑ ๋ถ์กฑ: ์ค๋ ์ท ๊ธฐ๋ฐ ๋ฐฉ์์ผ๋ก ์ค์๊ฐ ๋ถ์ ์์๋ฅผ ์ถฉ์กฑํ์ง ๋ชปํจ
- ์ฑ๋ฅ ํ๊ณ ์ง์: ์ฌ์ ํ ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์๋ ํ๊ณ
๊ทผ๋ณธ์ ๋ฌธ์ : OLTP ๊ตฌ์กฐ ๊ธฐ๋ฐ์ ์ ๊ทผ๋ฒ์ผ๋ก๋ ๋ถ์ ์ํฌ๋ก๋๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค๋ ๊ฒ์ ํ์ธํ์ต๋๋ค.
5. ์ต์ข ํด๊ฒฐ์ฑ : Amazon Redshift ๋์
5.1 Redshift ์ ํ ์ด์
์ฌ๋ฌ ํด๋ผ์ฐ๋ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค ์ค Amazon Redshift๋ฅผ ์ ํํ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๋น ๋ฅธ ์ฐ๋: ๊ธฐ์กด AWS ์ธํ๋ผ์์ seamlessํ ํตํฉ
- ๋น์ฉ ํจ์จ์ฑ: BigQuery, Snowflake ๋๋น ์ฐ์ํ ๊ฐ๊ฒฉ ๊ฒฝ์๋ ฅ
- ์์ ๊ด๋ฆฌํ: ์ธํ๋ผ ์ด์ ๋ถ๋ด์ AWS๊ฐ ๋ด๋น
์ ์ด ์ ํ์ด ํจ๊ณผ์ ์ธ๊ฐ? OLAP ์ ์ฉ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค๋ก ๋์ฉ๋ ๋ฐ์ดํฐ ๋ถ์์ ์ต์ ํ๋์ด ์์ผ๋ฉฐ, ๋ณ๋ ฌ ์ฒ๋ฆฌ ๊ธฐ๋ฐ์ผ๋ก ์ฑ๋ฅ์ ๋ณด์ฅํฉ๋๋ค.
5.2 Amazon Redshift ํน์ง
- ์์ ๊ด๋ฆฌํ OLAP ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค: ๋ณต์กํ ์ฟผ๋ฆฌ์ ๋ค์ฐจ์ ๋ถ์์ ์ต์ ํ
- PostgreSQL ๊ธฐ๋ฐ SQL ์ง์: ๊ธฐ์กด SQL ์คํฌ์ ๊ทธ๋๋ก ํ์ฉ ๊ฐ๋ฅ
- ๋ณ๋ ฌ ์ฒ๋ฆฌ: ๋์ฉ๋ ๋ฐ์ดํฐ ๋ถ์์ ์ํ ๋ถ์ฐ ์ํคํ ์ฒ
- ์ ์ฐํ ์๊ธ์ : ์๋ฒ๋ฆฌ์ค ๋๋ ํด๋ฌ์คํฐ ๊ธฐ๋ฐ ์ ํ ๊ฐ๋ฅ
6. ์ํคํ ์ฒ ๊ตฌ์ฑ ๋ฐ ์ํฌํ๋ก์ฐ
6.1 ์ ์ฒด ํ์ดํ๋ผ์ธ ๊ตฌ์กฐ
์๋ํ๋ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑํ์ต๋๋ค:
1๋จ๊ณ: ์ด๋ฒคํธ ํธ๋ฆฌ๊ฑฐ (Amazon EventBridge)
- ์ ํด์ง ์ฃผ๊ธฐ๋ก ์ด๋ฒคํธ ์๋ ๋ฐ์
- AWS Step Functions ์ํฌํ๋ก์ฐ๋ฅผ ํธ๋ฆฌ๊ฑฐ
ํจ๊ณผ: ์๋ ๊ฐ์ ์์ด ์ ๊ธฐ์ ์ธ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ๊ฐ ๋ณด์ฅ๋ฉ๋๋ค.
2๋จ๊ณ: ์ค๋ ์ท ์์ฑ ๋ฐ ์ ๋ก๋ (Lambda)
- RDS์์ ์ต์ snapshot ํ์ธ
- Snapshot์ .parquet ํฌ๋งท์ผ๋ก ๋ณํ
- Amazon S3์ ์ ๋ก๋
์ Parquet ํฌ๋งท์ธ๊ฐ? ์ปฌ๋ผํ ์ ์ฅ ๋ฐฉ์์ผ๋ก ์์ถ๋ฅ ์ด ๋๊ณ ๋ถ์ ์ฟผ๋ฆฌ ์ฑ๋ฅ์ด ์ฐ์ํฉ๋๋ค.
3๋จ๊ณ: ๋ฐ์ดํฐ ์ฒ๋ฆฌ (AWS Batch + ECS)
- Lambda๊ฐ AWS Batch์ ์์ ์ ์ถ
- ECS Cluster์์ Docker ์ปจํ ์ด๋ ์คํ:
- RDS ์คํค๋ง ์ถ์ถ
- S3์ parquet ํ์ผ์ Redshift๋ก COPY
- ๋ฐ์ดํฐ ์ ํฉ์ฑ ๊ฒ์ฆ
Batch ์ฌ์ฉ ์ด์ : Lambda์ 15๋ถ ์๊ฐ ์ ํ์ ์ฐํํ๊ณ , ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ต์ ํ๋ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค.
4๋จ๊ณ: Amazon Redshift ์ ์ฌ
- COPY ๋ช ๋ น์ด๋ก S3 ๋ฐ์ดํฐ๋ฅผ Redshift์ ์ ์ฌ
- ์์ฝ์ด ์ฒ๋ฆฌ, ํ์ ๋งคํ, ์ค๋ฅ ๋ก๊น ์๋ํ
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฆ ํฌํจ
5๋จ๊ณ: ์๊ฐํ (Redash)
- ์ต์ข ๋ถ์ ํ ์ด๋ธ์ Redash์ ์ฐ๊ฒฐ
- ๋น๊ฐ๋ฐ์๋ ์ ํ ์๋น์ค ๋ถ์ ๊ฐ๋ฅ
6.2 ๊ตฌํ ์ ๊ณ ๋ ค์ฌํญ
์๋ํ๋ ํ์ดํ๋ผ์ธ ๊ตฌ์ฑ:
- Python ์คํฌ๋ฆฝํธ ํฌํจ Docker ์ด๋ฏธ์ง ์ ์
- AWS Batch๊ฐ ECR ์ด๋ฏธ์ง ๊ธฐ๋ฐ์ผ๋ก ์ปจํ ์ด๋ ์คํ
๋ฐ์ดํฐ ์ ์ฌ ์ ํด๊ฒฐํด์ผ ํ ์ด์๋ค:
- Redshift ๋นํธํ ํ์ ์ฒ๋ฆฌ
- ์ปฌ๋ผ ์ต๋ ๊ธธ์ด ์ ์ฝ ํด๊ฒฐ
- PostgreSQL ์์ฝ์ด์ Redshift ์์ฝ์ด ์ฐจ์ด ์ฒ๋ฆฌ
- ์คํค๋ง ์ ์ถ ๊ณผ์ ์์ ๋ฐ์ํ๋ ํ์ ๋ถ์ผ์น ์ค๋ฅ
7. ๋์ ํจ๊ณผ
7.1 ์ฑ๋ฅ ๊ฐ์
ํญ๋ชฉ | ๋์ ์ | ๋์ ํ | ๊ฐ์ ํจ๊ณผ |
---|---|---|---|
์ฟผ๋ฆฌ ์ฑ๋ฅ | ํ๊ท 4๋ถ ์์ | 6์ด๋ก ๋จ์ถ | 40๋ฐฐ ์ฑ๋ฅ ํฅ์ |
์ด์ ๋ถ๋ด | ์๋ DB ๋ณต๊ตฌ ๋ฐ ์ ์ง | ์์ ์๋ํ | ์ด์ ๋ฆฌ์์ค ํด๋ฐฉ |
๋ฐ์ดํฐ ์ ๋ขฐ๋ | ์์์ ์ค์ฌ, ์ค๋ฅ ๊ฐ๋ฅ์ฑ | ์๋ํ ๊ธฐ๋ฐ | ์ ๋ขฐ๋ ๋ํญ ์ฆ๊ฐ |
7.2 ์ด์ ํจ์จ์ฑ
- ๊ฐ๋ฐ์ ๋ฆฌ์์ค: ๋ถ์ ์์ฒญ๋ง๋ค ๊ฐ๋ฐ ๊ฐ์ โ Redash ์ ํ ์๋น์ค๋ก ์ ํ
- ๋น์ฉ ์ต์ ํ: ์ฌ์ฉ๋ ๊ธฐ๋ฐ ์๊ธ์ ๋ก ํจ์จ์ ๋น์ฉ ๊ด๋ฆฌ
- ํ์ฅ์ฑ: ์ค์๊ฐ ๋ถ์ ํ์ฅ ๊ฐ๋ฅ์ฑ ํ๋ณด
์ ์ด๋ฐ ๊ฐ์ ์ด ๊ฐ๋ฅํ๋๊ฐ? OLAP ์ ์ฉ ์ํคํ ์ฒ์ ์์ ์๋ํ๋ ํ์ดํ๋ผ์ธ์ผ๋ก ์ธํด ์ฑ๋ฅ๊ณผ ์ด์ ํจ์จ์ฑ์ ๋์์ ํ๋ณดํ ์ ์์์ต๋๋ค.
8. ํฅํ ๊ฐ์ ๊ณํ
8.1 ์ฆ๋ถ ์ ์ฌ ์ฒ๋ฆฌ
ํ์ฌ ๋ฐฉ์์ ํ๊ณ: ์ ์ฒด ์ญ์ ํ ์ฌ์ ์ฌ ๋ฐฉ์์ผ๋ก ๋นํจ์จ์
๊ฐ์ ๋ฐฉ์: ํ์์คํฌํ ๊ธฐ๋ฐ ์ฆ๋ถ ์ฒ๋ฆฌ๋ก ์ ํํ์ฌ ์ฒ๋ฆฌ ์๊ฐ ๋จ์ถ ๋ฐ ๋ฆฌ์์ค ์ ์ฝ
8.2 Aurora Zero-ETL ๊ฒํ
๋์ ๋ชฉ์ : ์ค์๊ฐ ๋ฐ์ดํฐ ๋ถ์ ์์์ ๋์
ํจ๊ณผ: ETL ๊ณผ์ ์์ด Aurora์์ Redshift๋ก ์๋ ์ฐ๋ํ์ฌ ์ค์๊ฐ์ฑ ํ๋ณด
8.3 Amazon QuickSight ๋์ ๊ฒํ
๋ชฉํ: ๊ฐ๋ฐ์๋ฟ๋ง ์๋๋ผ ๋น์ฆ๋์ค ์ฌ์ฉ์๋ฅผ ์ํ ์ ํ BI ํ๊ฒฝ ์ ๊ณต
๊ธฐ๋ ํจ๊ณผ: ๋ฐ์ดํฐ ๋ฏผ์ฃผํ๋ฅผ ํตํ ์กฐ์ง ์ ์ฒด์ ๋ฐ์ดํฐ ํ์ฉ๋ ํฅ์
9. ํต์ฌ ํ์ต ์ฌํญ
9.1 ์ํคํ ์ฒ ์ ํ์ ์ค์์ฑ
OLTP์ OLAP ์ํฌ๋ก๋์ ์ฐจ์ด๋ฅผ ๋ช ํํ ์ดํดํ๊ณ , ๋ชฉ์ ์ ๋ง๋ ์ํคํ ์ฒ๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ฑ๊ณต์ ํต์ฌ์ด์์ต๋๋ค.
9.2 ์๋ํ์ ๊ฐ์น
์๋ ํ๋ก์ธ์ค๋ฅผ ์์ ์๋ํํจ์ผ๋ก์จ ์ด์ ๋ถ๋ด์ ์ ๊ฑฐํ๊ณ ๋ฐ์ดํฐ ์ ๋ขฐ์ฑ์ ํ๋ณดํ ์ ์์์ต๋๋ค.
9.3 ์ ์ง์ ๊ฐ์ ์ ๊ทผ๋ฒ
ํ ๋ฒ์ ์๋ฒฝํ ์๋ฃจ์ ์ ๊ตฌ์ถํ๊ธฐ๋ณด๋ค๋ ๋ฌธ์ ์ ์ ํ์ ํ๊ณ ์ ์ง์ ์ผ๋ก ๊ฐ์ ํด๋๊ฐ๋ ์ ๊ทผ์ด ํจ๊ณผ์ ์ด์์ต๋๋ค.
์ฐธ๊ณ ์๋ฃ
์์ฝ
- ๋น์ฆ๋์ค ์ฑ์ฅ์ผ๋ก ์ธํ ๋ฐ์ดํฐ ๋ถ์ ์์ ๊ธ์ฆ์ ๋์ํ๊ธฐ ์ํด ๊ธฐ์กด OLTP ๊ธฐ๋ฐ ๋ถ์์์ OLAP ์ ์ฉ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค๋ก ์ ํํ์ต๋๋ค.
- Amazon Redshift์ ์์ ์๋ํ๋ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ์ ํตํด ์ฟผ๋ฆฌ ์ฑ๋ฅ์ 40๋ฐฐ ๊ฐ์ (4๋ถโ6์ด)ํ๊ณ ๊ฐ๋ฐ์ ์์กด๋๋ฅผ ์ ๊ฑฐํ์ต๋๋ค.
- EventBridge-Lambda-Batch-ECS ๊ธฐ๋ฐ์ ์๋ฒ๋ฆฌ์ค ์ํคํ ์ฒ๋ก ์ด์ ๋ถ๋ด ์๋ ์์ ์ ์ธ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ํ๋ณดํ์ต๋๋ค.
- Aurora Zero-ETL๊ณผ QuickSight ๋์ ์ ํตํด ์ค์๊ฐ ๋ถ์๊ณผ ์ ํ BI ํ๊ฒฝ์ผ๋ก ํ์ฅํ ๊ณํ์ ๋๋ค.