[๋์ฌ๋ค] Analytics on AWS
Analytics on AWS
์ด ์ํฌ์ต์ AWS Analytics ํฌํธํด๋ฆฌ์ค์ ์ผ๋ถ์ธ ๋ค์ํ ๋ถ์ ์๋น์ค์ ์ต์ํด ์ง ์ ์๋๋ก ์ค๊ณ ๋์์ต๋๋ค.
AWS์์ ๋ถ์ ํ๋ซํผ์ ๊ตฌ์ถํ๋ ๋ค์ํ ๋ชจ๋ ์ค ์ผ๋ถ๋ฅผ ์ดํด ๋ด ๋๋ค.
AWS Glue, Amazon Athena, Amazon EMR, Amazon QuickSight, AWS Lambda ๋ฐ Amazon Redshift์ ๊ฐ์
์ฌ๋ฌ ๋ถ์ ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์์ง, ์ ์ฅ, ๋ณํ, ์๋นํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋๋ค.
- ์๋ฒ๋ฆฌ์ค ๋ฐ์ดํฐ ๋ ์ดํฌ ์ํคํ ์ฒ ์ค๊ณ
- Amazon S3๋ฅผ ์คํ ๋ฆฌ์ง๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ Data Lake๋ก ์์งํ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ
- ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ๋ฐ์ดํฐ์ Amazon Kinesis ์ฌ์ฉ
- ์ค์๊ฐ ๋ฐ์ดํฐ ๋ถ์์ ์ํด Amazon Kinesis Data Analytics ์ฌ์ฉ
- AWS Glue๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ธํธ ์๋ ๋ถ๋ฅ
- ๋ฐ์ดํฐ ๋ณํ
- AWS Glue ๋ํํ ์ธ์ ์ ์ฌ์ฉํด AWS Glue Studio์ Jupyter ๋ ธํธ๋ถ์์ ๋ํํ ETL ์คํฌ๋ฆฝํธ ์คํ
- Glue Studio๋ฅผ ์ฌ์ฉํ์ฌ AWS Glue์์ ETL ์์ ์ ์คํํ๊ณ ๋ชจ๋ํฐ๋ง
- Glue DataBrew๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ค๋น
- EMR์ ์ฌ์ฉํ์ฌ Spark ๋ณํ ์์ ์คํ
- Glue์์ Amazon Redshift๋ก ๋ฐ์ดํฐ ์ ์ฌ
- Amazon Redshift ๋ชจ๋ฒ ์ค๊ณ ์ฌ๋ก ์๊ฐ
- Amazon Athena๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํ๊ณ Amazon QuickSight๋ฅผ ์ฌ์ฉํ์ฌ ์๊ฐํ
Ingest & Real Time Analysis (์์ง & ์ค์๊ฐ ๋ถ์)
์์ง ๋ฐ ์ ์ฅ
Kinesis ๋ฐ์ดํฐ ์์ฑ๊ธฐ ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฑฐ์ ์ค์๊ฐ์ผ๋ก Dummy ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ณ ,
์ด๋ฅผ Kinesis Firehose delivery stream์ ์ฌ์ฉํ์ฌ Amazon S3๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๊ฒ์ ๋๋ค.
๋ํ ์ผ๋ถ ์ฐธ์กฐ ๋ฐ์ดํฐ๋ฅผ Amazon S3 ๋ฒํท์ ์ง์ ๋ณต์ฌ ํ ๊ฒ์ ๋๋ค.
Store + Catalog + Transform (์ ์ฅ + ์นดํ๋ก๊ทธ + ๋ณํ)
์นดํ๋ก๊ทธ ๋ฐ์ดํฐ
AWS Glue Data Catalog์ ๋ฐ์ดํฐ์ธํธ๋ฅผ ๋ฑ๋กํฉ๋๋ค.
Glue Crawlers์ ๋์์ผ๋ก ๋ฉํ ๋ฐ์ดํฐ ์บก์ฒ๋ฅผ ์๋ํ ํ ๊ฒ์ ๋๋ค.
์นดํ๋ก๊ทธ ์ํฐํฐ๊ฐ ์์ฑ๋๋ฉด Amazon Athena์์ ๋ฐ์ดํฐ์ raw ํฌ๋งท์ ๋ฐ์ดํฐ์ ๋ํด ์ฟผ๋ฆฌ๋ฅผ ์์ํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์นดํ๋ก๊ทธํ ํ์ผ๋ฏ๋ก AWS Glue ETL์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๋ ๋ค์ ๋จ๊ณ๋ฅผ ์งํํ๊ฒ ์ต๋๋ค!
AWS Glue๋ก ๋ฐ์ดํฐ ๋ณํ(๋ํํ ์ธ์ )
AWS Glue ๋ํํ ์ธ์ (Interactive sessions)์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ
๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ S3์ ๋ณํ๋ ๋ ์ด์ด๋ก ์ ์ฅํ๊ฒ ์ต๋๋ค.
๋ฐ์ดํฐ ๋ณํ์ ์งํํ๊ธฐ ์ํด AWS Glue ์ธํฐ๋ํฐ๋ธ ์ธ์ ์ผ๋ก ๊ตฌ๋๋๋ Glue Studio์ Jupyter ๋ ธํธ๋ถ์ ์ฌ์ฉํ ๊ฒ์ ๋๋ค.
์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๊ธฐ์ Amazon Athena๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํ ์ ์์ต๋๋ค.
๋ํ AWS Glue ๋๋ Amazon EMR์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ๋ก ๋ณํ/์ง๊ณํ ์๋ ์์ต๋๋ค.
EMR์ ๋ค์ ๋ชจ๋์ ์ ํ ์ฌํญ์ ๋๋ค. ์ํ๋ค๋ฉด ์ด ๋ชจ๋์ ๊ฑด๋๋ฐ๊ณ Analyze with Athena์ ์งํํ ์ ์์ต๋๋ค.
AWS Glue Studio๋ก ๋ฐ์ดํฐ ๋ณํ(๊ทธ๋ํฝ ์ธํฐํ์ด์ค)
AWS Glue์์ ETL (์ถ์ถ, ๋ณํ ๋ฐ ๋ก๋) ์์ ์ ์ฝ๊ฒ ์์ฑ, ์คํ ๋ฐ ๋ชจ๋ํฐ๋ง ํ ์ ์๋
๊ทธ๋ํฝ ์ธํฐํ์ด์ค์ธ AWS Glue Data Studio๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Glue Studio๋ ๋ฌด์์ธ๊ฐ?
AWS Glue Studio๋ AWS Glue์์ ์ถ์ถ, ๋ณํ ๋ฐ ๋ก๋(ETL) ์์ ์ ์ฝ๊ฒ ์์ฑ, ์คํ ๋ฐ ๋ชจ๋ํฐ๋ง ํ ์ ์๋ ์๋ก์ด ๊ทธ๋ํฝ ์ธํฐํ์ด์ค ์ ๋๋ค. ๋ฐ์ดํฐ ๋ณํ ์ํฌํ๋ก์ฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ๊ตฌ์ฑํ๊ณ AWS Glue์ Apache Spark ๊ธฐ๋ฐ ์๋ฒ๋ฆฌ์ค ETL ์์ง์์ ์ํํ๊ฒ ์คํํ ์ ์์ต๋๋ค.
AWS Glue DataBrew๋ก ๋ฐ์ดํฐ ๋ณํ
๋ฐ์ดํฐ ๋ถ์๊ฐ์ ๋ฐ์ดํฐ ๊ณผํ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฆฌํ๊ณ ์ ๊ทํํ์ฌ
๋ถ์ ๋ฐ ๊ธฐ๊ณ ํ์ต์ ์ค๋น ํ ์ ์๊ฒ ํด์ฃผ๋ ์๊ฐ์ ๋ฐ์ดํฐ ์ค๋น ๋๊ตฌ์ธ AWS Glue DataBrew๋ฅผ ์ค์ตํฉ๋๋ค.
AWS Glue DataBrew๋?
AWS Glue DataBrew๋ ๋ฐ์ดํฐ ๋ถ์๊ฐ์ ๋ฐ์ดํฐ ๊ณผํ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฆฌํ๊ณ ์ ๊ทํํ์ฌ ๋ถ์ ๋ฐ ๊ธฐ๊ณ ํ์ต์ ์ค๋น ํ ์ ์๋๋ก ํด์ฃผ๋ ์๋ก์ด ์๊ฐ์ ๋ฐ์ดํฐ ์ค๋น ๋๊ตฌ์ ๋๋ค. 250๊ฐ ์ด์์ ์ฌ์ ๊ตฌ์ถ ๋ ๋ณํ(transformation) ์ค ์ํ๋ ๊ธฐ๋ฅ์ ์ ํํ์ฌ ์ฝ๋๋ฅผ ์์ฑํ ํ์์์ด ๋ฐ์ดํฐ ์ค๋น ์์ ์ ์๋ํ ํ ์ ์์ต๋๋ค. ์ด์ ํญ๋ชฉ ํํฐ๋ง, ๋ฐ์ดํฐ๋ฅผ ํ์ค ํ์์ผ๋ก ๋ณํ, ์๋ชป๋ ๊ฐ ์์ ๋ฐ ๊ธฐํ ์์ ์ ์๋ํ ํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ๊ฐ ์ค๋น๋๋ฉด ์ฆ์ ๋ถ์ ๋ฐ ๊ธฐ๊ณ ํ์ต ํ๋ก์ ํธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฌ์ฉํ๋งํผ๋ง ์ง๋ถํ๋ฉด ๋์ฌ ์ฌ์ ์ฝ์ ์ ์์ต๋๋ค.
EMR๋ก ๋ฐ์ดํฐ ๋ณํ
์ ํ์ ์ธ ๋ชจ๋์ ๋๋ค.
์ด ๋ชจ๋์์๋ Amazon EMR์ ์ฌ์ฉํ์ฌ pyspark ์์ ์ ์ ์ถํ์ฌ
raw ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ผ๋ถ ๋ณํ + ์ง๊ณ๋ฅผ ์ํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ S3์ ์ ์ฅํฉ๋๋ค.
์ด์ ๋ค์ ๋ชจ๋์์ Amazon Athena๋ฅผ ์ฌ์ฉํ์ฌ EMR ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ฟผ๋ฆฌ ํ ์ ์์ต๋๋ค.
Analyze (๋ถ์)
Athena๋ก ๋ถ์
์ง๊ธ๊น์ง Amazon S3์ ๋ช ๊ฐ์ง ๋ฐ์ดํฐ์ธํธ๋ฅผ ์ ์ฅํ๊ณ ์ด๋ฅผ AWS Glue ๋ฐ์ดํฐ ์นดํ๋ก๊ทธ์ ์นดํ๋ก๊ทธํ ํ์ต๋๋ค. Amazon Athena๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ค SQL ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํ์ ํ ์ ์์ต๋๋ค.
์ ์ฌํ Athena ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ๋ก ํ์ ํ ์ ์์ต๋๋ค.
๋ค์ ๋ชจ๋์์๋ Athena๋ฅผ ๋ค์ ์ฌ์ฉํ์ฌ Amazon Quicksight์์ ๋์๋ณด๋/์๊ฐํ๋ฅผ ๊ตฌ์ถํฉ๋๋ค.
Kinesis Data Analytics๋ก ๋ถ์
์ด์ ์น์ ์์๋ Amazon Athena๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๋ ๋ฐฉ๋ฒ์ ์ดํด ๋ณด์์ต๋๋ค.
์ด ์น์ ์์๋ Amazon Kinesis Data Analytics ๋ฅผ ์ฌ์ฉํ์ฌ ์คํธ๋ฆฌ๋ฐ ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ถ์ํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ด ๋๋ค.
๋ ๊ฑฐ์ SQL ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ๊ฑฐ๋ ๊ถ์ฅ๋๋ ์ต์ ์ Studio ๋ ธํธ๋ถ์ ์ฌ์ฉํ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ํํ ์ ์์ต๋๋ค.
์ด ์ํฌ์ต์์๋ Studio ๋ ธํธ๋ถ์ ์ฌ์ฉํ๊ณ SQL ๊ธฐ๋ฐ Kinesis Analytics ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํฉ๋๋ค.
์ด ๋ชจ๋์์๋ Kinesis Data Generator์์ ์คํธ๋ฆฌ๋ฐ ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ธฐ ์ํด Kinesis Data Stream์ ์์ฑํ๊ณ ,
Kinesis Data Stream์ ๋ํ ์คํค๋ง์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ Glue ํ ์ด๋ธ,
์คํธ๋ฆฌ๋ฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ๋ถ์ํ๋ Kinesis Analytics Studio ๋ ธํธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ์ต๋๋ค.
๋ค์์ผ๋ก Amazon Quicksight๋ฅผ ์ฌ์ฉํ์ฌ ์๊ฐํ/๋์๋ณด๋๋ฅผ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ์ดํด ๋ณด๊ฒ ์ต๋๋ค.
Quicksight์์ ์๊ฐํ
Amazon Quicksight๋ฅผ ์ฌ์ฉํ์ฌ S3์ ์์ง, ์ ์ฅ๋ ๋ฐ์ดํฐ์ ๋ํด ๋ช ๊ฐ์ง ์๊ฐํ๋ฅผ ๊ตฌ์ถํ ๊ฒ์ ๋๋ค.
์ง๊ธ๊น์ง ์ฐ๋ฆฌ๋ Kinesis firehose๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์์ง S3์ ์ ์ฅํ๊ณ ,
AWS Glue ๋ฐ์ดํฐ ์นดํ๋ก๊ทธ์ ํ ์ด๋ธ์ ์นดํ๋ก๊ทธํ ํ๊ณ ,
Glue ETL/EMR์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ณํ Athena์ Quicksight๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌ ๋ฐ ์๊ฐํ ํ ์ ์์์ต๋๋ค.
์ด๊ฒ์ ์๋ฒ๋ฆฌ์ค ๋ถ์ ๋ฐฐํฌ ๋ชจ๋ธ์์ ์์ค์ ๋น์ฆ๋์ค ๋์๋ณด๋ ์ฌ์ด์ end to end ์ํคํ ์ฒ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋ค์ ๋ ๋ชจ๋์์๋ Lambda์ Redshift๋ฅผ ์๊ฐํ๊ณ
๋ถ์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ ์ถ๊ฐ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑ์ํค๊ธฐ ์ํด ์ํคํ ์ฒ์ ์ถ๊ฐ ๊ฐ์ ์ฌํญ์ ๋ค๋ฃน๋๋ค.
Lambda์ ํจ๊ป ์ ๊ณต
๋งค์ฐ ๊ตฌ์ฒด์ ์ธ ์ฌ์ฉ ์ฌ๋ก ์์ ๋ก Lambda ํจ์๋ฅผ ์์ฑ ํ ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์์ฑํ ๋๋ค ํจ์๋ Athena๊ฐ S3์ processsed data์์
Hits ๋ณ Top 5 Popular Songs๋ฅผ ์ฟผ๋ฆฌํ๊ณ ๊ฐ์ ธ ์ค๋ ์ฝ๋๋ฅผ ํธ์คํ ํฉ๋๋ค.
์ด์ ๋๋ค ํจ์๋ฅผ ์ฒ์๋ถํฐ ๋ง๋ค๊ณ ํ ์คํธ ํ์ต๋๋ค.
๋ค์ ๋ชจ๋์์๋ ๋ง์ง๋ง ์ฃผ์ ์ธ Amazon Redshift์์ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค ๊ตฌ์ถ์ ๋ํด ๋ค๋ฃน๋๋ค.
Redshift์ ์ฐฝ๊ณ
Amazon Redshift ํด๋ฌ์คํฐ๋ฅผ ์ค์ ํ๊ณ AWS Glue๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ Amazon Redshift๋ก ๋ก๋ํฉ๋๋ค.
Redshift์์ ๋ฐ์ดํฐ๋ฅผ ์์ฑ, ํ ์ด๋ธ์ ๋ก๋ํ๊ณ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ๊ฒ์ ๋ํด
๋ช ๊ฐ์ง ์ค๊ณ ๊ณ ๋ ค ์ฌํญ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํด ๋ฐฐ์ธ ๊ฒ์ ๋๋ค.
Clean up
AWS์์ ์ ๊ณตํ๊ณ ์๋ ์ํฌ์ต ๋ด์ฉ์ ์์ฝํ์ต๋๋ค.