๐ ํด๋น ํฌ์คํ ์ YouTube GeekNews ์ฑ๋์ ๋ฐ์ดํฐ ์ธํ๋ผ ๊ฐ์ ๋ด์ฉ์ ๊ธฐ๋ฐํด ์ ๊ฐ ์ฌ๊ตฌ์ฑํ์ฌ ์์ฑํจ์ ์๋ ค๋๋ฆฝ๋๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ ์ ๋ฒ ํฌ์คํ ์์ ์์๋ณธ ๋ฐ์ดํฐ ์ธํ๋ผ ๊ตฌ์กฐ์ ์ฒซ ๋ฒ์งธ ๊ตฌ์ฑ์์ Sources์ ์ด์ด ๋ค์ ๋จ๊ณ์ธ Ingestion & Transformation์ ์์๋ณด๋ ค ํ๋ค.
Ingestion & Transformation
ํํ ๋งํ๋ ETL ๋๊ตฌ๋ค์ด ์ด๋ฒ ๋จ๊ณ์ ํด๋นํ๋ ๊ฒ๋ค์ด๋ค. ์ฆ, Sources ๋ก๋ถํฐ ์ป์ ๋ง์ ๋ฐ์ดํฐ๋ค์ ์ถ์ถ, ๋ณํํ๋ ๋จ๊ณ์ด๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ ์ ๊ทธ๋ฆผ์์ ๋นจ๊ฐ์ ๋ค๋ชจ์นธ ์์ ์๋ Connectors, Data Modeling, Workflow Manager์ ๋ํด ์์๋ณด๋ ค๊ณ ํ๋ค.
1. Connectors
์ ๊ทธ๋ฆผ์์ Connectors๊ฐ ๊ฐ๋ฅดํค๋ ํ์ดํ๋ฅผ ์ ์ดํด๋ณด๋ฉด ์ ์ ์๋ฏ์ด, Sources์์ ๋ฐ์ํ ๋ฐ์ดํฐ๋ค์ SnowFlake, ๊ตฌ๊ธ์ BigQuery, AWS์ RedShift์ ๊ฐ์ Data Warehouse๋ Data Lake(AWS S3, ํ๋ก์ HDFS, Parquet ๋ฑ)๋ก ์ ๋ฌํ๋ ์ญํ ์ ํ๋ค.
์ ๊ทธ๋ฆผ์์ ์ธ๊ธ๋ Connectors์ ์์ ํ๋ซํผ๋ค์ ๋ํด ๊ฐ๋จํ ์๊ฐํ๊ณ ๋์ด๊ฐ์.
- Fivetran : ์์ค๋ค์ ๋ฐ์ดํฐ๋ค์ Normalization ํ๊ณ SQL ๋ณํ์ ์ทจํด ๋ถ์์ด ๊ฐ๋ฅํ ์คํค๋ง(ํ ์ด๋ธ)๋ก ๋ณํํด์ค๋ค. ํด๋น ํ๋ซํผ์์ Transform(๋ณํ)ํ๋ ์ฐ์ฐ ๋น์ฉ๋ณด๋ค ์๋์ ์ผ๋ก ์ ๋ ดํ Load(์ ์ฌ)๋ฅผ ๋จผ์ ์ํํ๋ ELT ๊ตฌ์กฐ๋ฅผ ์ํํ๋ค.
- Stitch : Fivetran๊ณผ ๋น์ทํ ์ญํ ์ ํ๋ค. ๋จ, ETL๋ฟ๋ง ์๋๋ผ ๋ถ์ ๋๊ตฌ๋ ์ฐ๊ฒฐ๊น์ง ํด์ฃผ๋ ํ๋ซํผ์ด๋ค.
- MATILLION : ์ 2๊ฐ์ ๋น์ทํ ์ญํ ์ ํ๋ค. ์ฃผ๋ชฉํ ๋งํ ์ ์ Data Loader ๊ธฐ๋ฅ์ ๋ชจ๋์๊ฒ ๋ฌด๋ฃ๋ก ์ ๊ณตํ๋๋ฐ, ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถ, ์ ์ฌ๊น์ง ํ๋ ๊ฒ์ ๋ฌด๋ฃ๋ก ์ ๊ณตํ๋ ๊ฒ์ด๋ค.(๊ฝ์ง๋ ์ธ์ ๋ ์ง๋ฆฌ๋ค...)
- Panoply : ์ด๋ ์ข ํ๋ ํ๋ซํผ์ด๋ค. ์๋ฅผ ๋ค์ด, ๋ณดํต์ AWS Redshift๋ผ๋ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์์ค์ ๋ฐ์ดํฐ๋ฅผ ETLํ๋ ๋๊ตฌ๋ฅผ ๋ณ๋๋ก ์ฌ์ฉํด์ผ ํ์ง๋ง Panoply๋ ์ด 2๊ฐ๋ฅผ ํ๊บผ๋ฒ์ ํ ์ ์๊ฒ ์ ๊ณตํด์ค๋ค. ๋ณดํต ํฌ๊ธฐ๊ฐ ์์ ํ์ฌ๋ค์ด ์ฃผ๋ก ์ฌ์ฉํ๋ค๊ณ ํ๋ค.
2. Data Modeling
์ฐธ๊ณ ๋ก Data Modeling์ ์ ๊ทธ๋ฆผ์์ Sources ๋ถ๋ถ๊ณผ ์ฐ๊ฒฐ๋์ด ์์ง๋ ์๋ค. ๋จ์ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์ ๋ฐ์ดํฐ ๋ ์ดํฌ์ ์ฐ๊ฒฐ์ด ๋์ด ์๋ค. ๋์ฒด Data Modeling ์ ๋ฌด์จ ์ญํ ์ ํ๋ ๊ฑธ๊น?
๋ณดํต ์ค๋ฌด์์ ๋ฐ์ดํฐ ๋ถ์๊ฐ๋ค์ ETL๊ณผ ๊ฐ์ ๋ฐ์ดํฐ ์์ง๋์ด๋ง ์ ๋ฌด๋ฅผ ์ ํ์ง ์๋๋ค. ๊ทธ๋ฐ๋ฐ Data Modeling ๊ด๋ จ ํ๋ซํผ๋ค์ ๋ฐ์ดํฐ ๋ถ์๊ฐ๋ ๋ฐ์ดํฐ ์์ง๋์ด๋ง ์ ๋ฌด๋ฅผ ํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ฒ๋ค์ด๋ค. ์์ ํ๋ซํผ์ผ๋ก๋ dbt, LookML ๋ฑ์ด ์๋ค.
3. Workflow Manager
์์ค์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค, ๋ฐ์ดํฐ ๋ ์ดํฌ๋ก ์ฎ๊ธฐ๋๋ฐ, ์ด ์ฎ๊ธฐ๋ ๊ณผ์ ์ ์ํฌํ๋ก์ฐ ๋จ์๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์์ฆ ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก Airflow๊ฐ ์๋ค. ๊ฐ๋จํ Airflow๊ฐ ์ด๋ค ํน์ง์ด ์๊ณ ์ด๋ค ๊ณผ์ ์ผ๋ก ๋์ํ๋์ง์ ๋ํด ์์๋ณด์.
์์ดํ๋ก์ฐ๋ ํฌ๊ฒ 3๊ฐ์ง ํน์ง์ ๊ฐ๋๋ค.
- Task Scheduling : ํน์ task๋ฅผ ์ธ์ ์ฒ๋ฆฌํ ์ง๋ฅผ ์ ํจ
- Distributed Executing : ๋ง์ task๋ค์ ๋ถ์ฐ์ผ๋ก ํจ์จ์ ์ธ ์ฒ๋ฆฌ๋ฅผ ํจ
- Dependency Management : ์๋ฅผ ๋ค์ด, ์ด๋ค ์์ ๊ณผ์ ์ด ๋๋๊ธฐ ์ ์๋ ๋ค์ ๊ณผ์ ์ด ์ ๋ ์์๋ ์ ์๋๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ด๋ค.
- DAG(Directed Acyclic Graph) ํน์ฑ
4๊ฐ์ง ํน์ง ์ค 3๋ฒ์งธ ์์กด์ฑ ๊ด๋ฆฌ(Dependency Management)์ ๋ํด ๋์ํํด์ ์ดํด๋ณด์.
์์ค๋ค์ 4๊ฐ์ง๊ฐ ์กด์ฌํ๋ค. Transform1 ์ด๋ผ๊ณ ๋์ด์๋ task๋ ๊ด๊ณ ๋ฐ์ดํฐ๋ผ๋ ์์ค ๋ถ๋ถ ๋ก์ง์ด ์ํ๋๋ฉด ์คํ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฐ๋ฐ Transform2๋ ์ฐ๊ฒฐ๋์ด ์๋ ์์ค๊ฐ 3๊ฐ์ง์ด๋ค. ๋ฌด์กฐ๊ฑด A,B,C task๋ค์ด ๋ค ์๋ฃ ๋์ด์ผ Transform2๊ฐ ์ํ๋์ด์ผ ํ๋ค. A,B์ ์์ค๊น์ง๋ง task๊ฐ ์ํ๋๊ณ Transform2๊ฐ ์ํ๋๋ฉด ์๋๋ ๊ฒ์ด๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ์์กด์ฑ ๊ด๋ฆฌ์ด๋ค. ๋ฐ๋ผ์ Airflow๋ผ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํด A,B,C ์์ค๊น์ง ๋ค task๊ฐ ์ํ๋์ผ Transform2๊ฐ ์ํ๋๋๋ก ์ํฌํ๋ก์ฐ ๋จ์๋ก ๊ด๋ฆฌํด์ฃผ๋ ๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง ํน์ง์ธ DAG ํน์ฑ์ ์ดํด๋ณด์. DAG๋, ์ฝ๊ฒ ๋งํด์ loop๊ฐ์ ์ํ๋๋ ๊ตฌ์กฐ๊ฐ ์๋ ๊ทธ๋ํ๋ฅผ ์๋ฏธํ๋ค. DAG์ A์ธ Acyclic์ด '๋น์ํ'์ด๋ผ๋ ์๋ฏธ์ด๋ค. DAG์ ๋ํ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ๋ฐ๋ก ์ง๊ด์ ์ผ๋ก ์ดํด๊ฐ ๋ ๊ฒ์ด๋ค.
DAG๋ ์๊ณ ๋ฆฌ์ฆ ์ข ๋ฅ๋ก๋ ๋ถ๋ฆฐ๋ค. ์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ๊ฐ ๋ ธ๋์์ ์ถ๋ฐํ๊ฑฐ๋ ์์ ์ ๋ ธ๋๋ก ๋ค์ด์ค๋ Edge๋ ์์ด๋ ์๊ธฐ ์์ ์ผ๋ก ๋๋์์ค๋ Edge๊ฐ ์๋ค. ์ด๋ ๊ฒ ์์ ์ผ๋ก ๋์์ค๋ Edge ๊ทธ๋ํ๊ฐ ์์ด์ผ๋ง ํ๋ ๊ทธ๋ํ๊ฐ DAG์ด๋ค. Airflow๋ ์ํฌํ๋ก์ฐ๋ฅผ ๊ด๋ฆฌํ ๋ ์ด๋ ๊ฒ DAG ๊ตฌ์กฐ๋ง์ ์ ์งํด์ผ ํ๋ค. ๋ง์ง๋ง์ผ๋ก Airflow ์ด์ธ์ ์ํฌํ๋ก์ฐ๋ฅผ ๊ด๋ฆฌํ๋ ๋ค๋ฅธ ๋๊ตฌ๋ฅผ ์ดํด๋ณด๊ณ ๋ง๋ฌด๋ฆฌํ์.
- DAGSTER : Airflow๋ ๋น์ทํ๋ค. ๋ค๋ง ๋ฐ์ดํฐ Application์ ๋ง๋ค ์ ์๋๋ก ์ ๊ณตํ๋ค. ์ด๊ฒ๋ DAG ํน์ฑ์ ์ง๋๋ค. ๋ค๋ง Airflow๋ Task ๋จ์๋ก ๊ด๋ฆฌํ๋ Task-Driven ์ด์ง๋ง DAGSTER์ Data-Driven ์ด๋ค.
- Argo Airflow : Kubernetes์์ ๋์๊ฐ๋ ์ํฌํ๋ก์ฐ์ด๋ค.
- Prefect : Airflow๋ ๋งค์ฐ ์ ์ฌํ๋ค. ๋จ, Airflow๊ฐ ์ถ์๋ ์ดํ์ ๋์จ ๊ฒ์ด๋ผ์ ๊ทธ๋ฐ์ง Airflow๋ณด๋ค ์์ ๋๊ฐ๊ธฐ(?)์ํด์ ์ฌ์ฉ์ด ์ฝ๊ณ ๋ง์น "ํ๋ํ Airflow" ๊ฐ์ ๋๋์ด๋ผ๊ณ ํ๋ค.