๐Ÿ“Š AWS S3 + AWS Glue + Athena + Grafana โ€” ์—”๋“œโ€‘ํˆฌโ€‘์—”๋“œ ๋ถ„์„ ํ”„๋กœ์ ํŠธ

๋ฐœํ–‰: (2025๋…„ 12์›” 6์ผ ์˜ค์ „ 05:26 GMT+9)
5 min read
์›๋ฌธ: Dev.to

Source: Dev.to

๊ฐœ์š”

์ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” AWS ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์™„์ „ํ•œ ๋ถ„์„ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค:

  • S3์—์„œ CSV ํŒŒ์ผ ์ฝ๊ธฐ
  • AWS Glue๋ฅผ ์‚ฌ์šฉํ•ด ํ…Œ์ด๋ธ”๋กœ ๋ณ€ํ™˜
  • Amazon Athena๋กœ ๋ฐ์ดํ„ฐ ์ฟผ๋ฆฌ
  • Grafana์—์„œ ๊ฒฐ๊ณผ ์‹œ๊ฐํ™”

์ด ์›Œํฌํ”Œ๋กœ์šฐ๋Š” ํด๋ผ์šฐ๋“œ ๋ฐ DevOps ํ™˜๊ฒฝ์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ

(์—ฌ๊ธฐ์— ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ ์ด๋ฏธ์ง€ ์‚ฝ์ž…)

์‚ฌ์šฉ ์„œ๋น„์Šค

ServicePurpose
S3์›์‹œ CSV ํŒŒ์ผ ์ €์žฅ
Glue Crawler์Šคํ‚ค๋งˆ ๊ฐ์ง€ ๋ฐ Athena ํ…Œ์ด๋ธ” ์ƒ์„ฑ
Glue Data Catalogํ…Œ์ด๋ธ” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ
AthenaS3 ํŒŒ์ผ์— ๋Œ€ํ•œ SQL ์ฟผ๋ฆฌ ์‹คํ–‰
GrafanaAthena ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์‹œ๊ฐํ™”

๋‹จ๊ณ„ 1 โ€” CSV ๋ฐ์ดํ„ฐ๋ฅผ S3์— ์—…๋กœ๋“œ

S3 ๋ฒ„ํ‚ท์— ํด๋” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๊ณ  AWS CLI๋ฅผ ์‚ฌ์šฉํ•ด CSV ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ:

aws s3 cp ./data/ s3://my-bucket/raw-data/ --recursive

๋‹จ๊ณ„ 2 โ€” AWS Glue ํฌ๋กค๋Ÿฌ ์ƒ์„ฑ

๋‹ค์Œ๊ณผ ๊ฐ™์ด Glue ํฌ๋กค๋Ÿฌ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค:

  • CSV ํŒŒ์ผ์ด ์žˆ๋Š” S3 ํด๋” ์ง€์ •
  • CSV ์Šคํ‚ค๋งˆ๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ์ง€
  • AWS Glue Data Catalog์— ํ…Œ์ด๋ธ” ์ƒ์„ฑ

ํฌ๋กค๋Ÿฌ๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ํ•ญ๋ชฉ:

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„: s3_log_db
  • ํ…Œ์ด๋ธ” ์ด๋ฆ„: s3_athena_analytics_abhishek31

ํฌ๋กค๋ง์ด ์™„๋ฃŒ๋˜๋ฉด Data Catalog์—์„œ ์ƒ์„ฑ๋œ ์Šคํ‚ค๋งˆ๋ฅผ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

๋‹จ๊ณ„ 3 โ€” Athena์—์„œ ๋ฐ์ดํ„ฐ ์ฟผ๋ฆฌ

ํฌ๋กค๋Ÿฌ๊ฐ€ ๋งŒ๋“  ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด SQL ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ:

SELECT 
    series_reference,
    period,
    series_title_2,
    value
FROM s3_log_db.s3_athena_analytics_abhishek31
ORDER BY series_title_2 ASC;

์ด ์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์กฐํ™”๋˜๊ณ  ์ ‘๊ทผ ๊ฐ€๋Šฅํ•จ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ๊ณ„ 4 โ€” Grafana ๋ฐ์ดํ„ฐ ์†Œ์Šค ๊ตฌ์„ฑ

  1. Grafana์—์„œ ์ƒˆ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  Amazon Athena๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  2. ๋‹ค์Œ ์„ค์ •์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค:
    • AWS ๋ฆฌ์ „
    • ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์šฉ S3 ๋ฒ„ํ‚ท
    • ์›Œํฌ๊ทธ๋ฃน (ํ•ด๋‹น๋˜๋Š” ๊ฒฝ์šฐ)
  3. ์—ฐ๊ฒฐ์„ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค โ€“ ์„ฑ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹จ๊ณ„ 5 โ€” Grafana์—์„œ ๋Œ€์‹œ๋ณด๋“œ ๊ตฌ์ถ•

์›์‹œ SQL ์ฟผ๋ฆฌ(JSON ๊ฐ€์ ธ์˜ค๊ธฐ ์—†์ด)๋ฅผ ์‚ฌ์šฉํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‹œ๊ฐํ™”๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค:

  • ์—ฐ๋ น๋Œ€ ๋ถ„ํฌ ๋ง‰๋Œ€ ์ฐจํŠธ
  • ๊ธฐ๊ฐ„๋ณ„ ๊ฐ’์˜ ์‹œ๊ณ„์—ด ๋ถ„์„
  • ์„ฑ๋ณ„ ์ธ๊ตฌ ์ถ”์„ธ
  • ์—ฐ๋„๋ณ„ ์ด ์ธ๊ตฌ

ํ”„๋กœ์ ํŠธ ํด๋” ๊ตฌ์กฐ

project/
โ”œโ”€ data/                # Raw CSV files
โ”œโ”€ glue/                # Crawler configuration (JSON/YAML)
โ”œโ”€ athena/              # Saved query files
โ””โ”€ grafana/             # Dashboard JSON exports (optional)

์ฃผ์š” ํ•™์Šต ๋‚ด์šฉ

  • AWS Glue๋ฅผ ์ด์šฉํ•œ ์ž๋™ ์Šคํ‚ค๋งˆ ๊ฐ์ง€๋Š” ๋ฐ์ดํ„ฐ ์˜จ๋ณด๋”ฉ์„ ๊ฐ„์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • Athena๋Š” S3์—์„œ ์ง์ ‘ ์„œ๋ฒ„๋ฆฌ์Šค์ด๋ฉฐ ๋น„์šฉ ํšจ์œจ์ ์ธ SQL ์ฟผ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • Grafana๋Š” Athena ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹œ๊ฐํ™”ํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

GitHub ์ €์žฅ์†Œ

https://github.com/abhikorde31/aws-s3-athena-grafana-analytics

๊ฒฐ๋ก 

์ด ํ”„๋กœ์ ํŠธ๋Š” AWS S3, Glue, Athena, Grafana๋ฅผ ์‚ฌ์šฉํ•ด ํ”„๋กœ๋•์…˜ ์ˆ˜์ค€์˜ ์„œ๋ฒ„๋ฆฌ์Šค ๋ถ„์„ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ AWS Lambda๋ฅผ ํ†ตํ•œ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ, Terraform์„ ์ด์šฉํ•œ ์ธํ”„๋ผ ์ฝ”๋“œํ™”, ๋˜๋Š” ์ถ”๊ฐ€ ์‹œ๊ฐํ™” ๋“ฑ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Back to Blog

๊ด€๋ จ ๊ธ€

๋” ๋ณด๊ธฐ ยป

ํ˜ผ๋ˆ์—์„œ ์ฝ”๋“œ๋กœ: ALPHALABS

๋ฐค์ƒˆ๋„๋ก ๋‚˜๋ฅผ ๊ดด๋กญํžŒ ๋ฌธ์ œ ๋‚˜๋Š” ๋ˆ„๊ตฌ๋‚˜ AI ํŠธ๋ ˆ์ด๋”ฉ ์—์ด์ „ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ , ์ „๋žต์„ ๋ฐฑํ…Œ์ŠคํŠธํ•˜๋ฉฐ, ์„ฑ๊ณผ๋ฅผ ์ž…์ฆํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค.

WordPress + Kiro

๊ฐœ์š”: WordPress์™€ Kiro AI IDE๋ฅผ ํ†ตํ•ฉํ•˜๋ฉด ์ฝ˜ํ…์ธ  ๊ด€๋ฆฌ์™€ ์—์ด์ „ํŠธ ๊ฐœ๋ฐœ์ด ๋งŒ๋‚˜๋Š” ํšจ์œจ์ ์ธ ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค. WordPress์˜โ€ฆ

๐ŸŽƒ 3์ฃผ ๋งŒ์— SaaS ํ”Œ๋žซํผ์„ ๊ตฌ์ถ•ํ•œ ๋ฐฉ๋ฒ•: Distrogent ์ด์•ผ๊ธฐ, ์šฐ๋ฆฌ Kiroween ํ•ด์ปคํ†ค ์ถœํ’ˆ์ž‘. Featuring Go, Kubernetes.

โ€˜Greatโ€™ ์•„์ด๋””์–ด ๐Ÿ’ก ํ•ด์ปคํ†ค์—์„œ ๋„ˆ๋ฌด ๋ณต์žกํ•œ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋งŒ๋“ค๊ธฐ๋กœ ๊ฒฐ์‹ฌํ•˜๋Š” ์ˆœ๊ฐ„์„ ์•„์‹œ๋‚˜์š”? Kiroween ํ•ด์ปคํ†ค์„ ์œ„ํ•ด, ์šฐ๋ฆฌ ํŒ€์€ โ€ฆ

๊ธ‰์—ฌ ๊ด€๋ฆฌ ๋ฐ ๊ธ‰์—ฌ ๋ถ„์„์—์„œ Excel ํ™œ์šฉ

์†Œ๊ฐœ ๋ชจ๋“  ๋น„์ฆˆ๋‹ˆ์Šค์—์„œ, ์†Œ๊ทœ๋ชจ ์ƒ์ ์ด๋“  ๋Œ€๊ธฐ์—…์ด๋“  ํ•œ ๊ฐ€์ง€๋Š” ๋ณ€ํ•จ์—†์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค: ์ง์›๋“ค์—๊ฒŒ ์ •ํ™•ํ•˜๊ณ  ์ œ๋•Œ ๊ธ‰์—ฌ๋ฅผ ์ง€๊ธ‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Payro...