Skip to content

vataops/Smart-Farm-IoT-data-pipeline-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

TeamA : ์Šค๋งˆํŠธํŒœ IoT ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ

์š”๊ตฌ์‚ฌํ•ญ

  • ๋†์žฅ์ฃผ๋Š” ์‹ค์‹œ๊ฐ„ ์„ผ์„œ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • IoT ๋””๋ฐ”์ด์Šค์—๋Š” ์˜จ๋„, ์Šต๋„ ๋ฐ ์ด์‚ฐํ™”ํƒ„์†Œ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘/์ƒ์„ฑํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ˆ˜์ง‘/์ƒ์„ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ๋ถ€ํ„ฐ ๋ฐœ์ƒํ•œ ๋กœ๊ทธ๊ฐ€ ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์„ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋กœ๊ทธ ์ €์žฅ์†Œ์— ์ „์†ก๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋กœ๊ทธ๋Š” ์กฐ๊ฑด์— ๋งž๊ฒŒ ์ฟผ๋ฆฌํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ์‹œ๊ณ„์—ด ๊ธฐ๋ฐ˜์˜ ์ •๋ณด๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ: ์ง€๋‚œ 7์ผ๊ฐ„ ์˜จ๋„ ์ถ”์ด)
  • ์„œ๋น„์Šค ๊ฐ„์˜ ์—ฐ๊ฒฐ์€ ์„œ๋ฒ„๋ฆฌ์Šค ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ตฌํ˜„์‚ฌํ•ญ

์Šค๋งˆํŠธํŒœ์˜ ์˜จ์‹ค๋งˆ๋‹ค ์„ค์น˜๋˜์–ด ์žˆ๋Š” IoT ๋””๋ฐ”์ด์Šค์— ์„ค์น˜๋œ ์˜จ๋„, ์Šต๋„ ๋ฐ ์ด์‚ฐํ™”ํƒ„์†Œ ์„ผ์„œ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , ์ด๋ฅผ ์ค€์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์„ ์ด์šฉํ•ด ๋กœ๊ทธ ์ €์žฅ์†Œ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

๋†์žฅ์ฃผ๋Š” ์ด๋Ÿฌํ•œ ์„ผ์„œ ์ •๋ณด๋ฅผ ์ค€์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๊ณ , ๋กœ๊ทธ ์ €์žฅ์†Œ์— ์ €์žฅ๋œ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‹œ๊ณ„์—ด ๊ธฐ๋ฐ˜์˜ ์ •๋ณด ๋˜ํ•œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ค€์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ ์ˆ˜์ง‘: ์ตœ์†Œ 1๋ถ„ ๋‹จ์œ„๋กœ ๋กœ๊ทธ ์ €์žฅ์†Œ์— ์ „์†ก์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ๋”ฐ๋กœ ๋ชจ์•„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด์ƒ ๋ฐ์ดํ„ฐ ๋ฐœ์ƒ ์‹œ, Discord๋กœ ์•Œ๋ฆผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

์ˆ˜์ง‘/์ƒ์„ฑ Application์„ ๋Œ€์‹ ํ•ด, Architecture ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชฉ์ฐจ

  • ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ ์ง„์ž…
  • ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”, Monitoring
  • Discord ์•Œ๋ฆผ ์ „์†ก
  • ๊ฐ€์ƒ์˜ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ ์ „์†ก
  • Terraform ์˜ README.md ํŒŒ์ผ ์ฐธ์กฐ
  • Resource ์„ ์ • ์ด์œ 

Architecture Image

final-architecture

์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘/์ €์žฅ

  1. ์ˆ˜์ง‘/์ƒ์„ฑ Application์œผ๋กœ๋ถ€ํ„ฐ ๋ฐœ์ƒํ•œ ๋กœ๊ทธ๊ฐ€ Kinesis Proxy ์—ญํ• ์„ ํ•˜๋Š” ApiGateway kinesis_api_gw๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ์ง„์ž…ํ•ฉ๋‹ˆ๋‹ค.
  2. ์ง„์ž…ํ•œ ๋กœ๊ทธ๋Š” Kinesis DataStream ์„ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ˆ˜์ง‘๋ฉ๋‹ˆ๋‹ค.
  3. Kinesis DataStream ์—์„œ ์ˆ˜์ง‘ํ•œ ๋กœ๊ทธ๋Š” S3๋กœ ์ €์žฅ๋˜๊ธฐ ์ „, Kinesis Data Firehose ๋ฅผ ์ด์šฉํ•˜์—ฌ ETL ์ž‘์—…์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
    • Kinesis Data Firehose๋Š” ์ตœ์†Œ 1๋ถ„ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
    • JSON -> parquet
    • ์ด๋•Œ, Kinesis Data Firehose๋Š” AWS Glue Data Catalog ์˜ Database Table์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.
      • Database Table์€ ์ˆ˜์ง‘๋œ ๋กœ๊ทธ์˜ ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ์ดํ›„, ๋กœ๊ทธ๋Š” ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์ธ S3 ์ธ sensor-log-bucket์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

Monitoring

  1. AWS Glue DataCatalog์˜ Crawler ๋Š” sensor-log-bucket ์— ์ €์žฅ๋œ ๋กœ๊ทธ๋ฅผ ๋ถˆ๋Ÿฌ์™€ Table ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    ์ตœ์ดˆ ํ•œ๋ฒˆ๋งŒ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  2. Amazon Athena ๊ฐ€ ์ƒ์„ฑ๋œ Table ์„ ์ฐธ์กฐํ•˜์—ฌ query๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  3. Monitoring Tool์ธ Grafana๋Š” Athena์™€ ์—ฐ๊ฒฐ๋˜์–ด ์‹œ๊ฐํ™”๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • Grafana ๋Š” Amazon EC2 ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ตฌ๋™๋ฉ๋‹ˆ๋‹ค.
    • Grafana๊ฐ€ ์„ค์น˜๋œ EC2์˜ Endpoint ๋Š” Route53์˜ ๋ ˆ์ฝ”๋“œ๋กœ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
  4. ๋†์žฅ์ฃผ๋Š” Route53 ์˜ ๋„๋ฉ”์ธ์œผ๋กœ ์ ‘์†ํ•˜๋ฉด ๋กœ๊ทธ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ƒ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

  1. ๋กœ๊ทธ ์ €์žฅ์†Œ sensor-log-bucket์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋ฉด AWS Lambda ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
    • ์ด๋•Œ, AWS Lambda๋Š” ์ด์ƒ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š” ์ง€, ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
      • ์ด์ƒ ๋ฐ์ดํ„ฐ์˜ ๊ธฐ์ค€

        ๊ธฐ์ค€ ์˜ˆ์‹œ ์ฝ”๋“œ
        ์„ผ์„œ์— ์ด์ƒ์ด ์žˆ๋Š” ๊ฐ€? error_code = "1"
        ๋น„์ •์ƒ์ ์ธ ์ˆ˜์น˜๊ฐ€ ๋ณด์ด๋Š” ๊ฐ€? temperature = "400"
  2. ์ด์ƒ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๋ฉด,
    • AWS Lambda์˜ ๋กœ์ง์œผ๋กœ ์ธํ•ด Discord Webhook์„ ํ†ตํ•ด ์•Œ๋ฆผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
    • ๊ทธ ํ›„, ์ด์ƒ ๋ฐ์ดํ„ฐ๋งŒ ์„ ๋ณ„ํ•˜์—ฌ S3์ธ spike-log-bucket์— ๋”ฐ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

Architecture Test

  1. AWS Lambda์ธ pseudo_sensor_log_lambda์˜ API Gateway์ธ pseudo_api_gw์˜ Endpoint ์— ์š”์ฒญ body ๋ฅผ ๋‹ด์•„, POST ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  2. pseudo_api_gw์— ์˜ํ•ด ์‹คํ–‰๋œ pseudo_sensor_log_lambda๋Š” ์š”์ฒญํ•œ body ์— ๋”ฐ๋ผ ๋กœ์ง์„ ์‹คํ–‰,
    • kinesis_api_gw์˜ Endpoint ๋กœ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

HTTP Request ์˜ˆ์‹œ

POST / 
Content-Type : application/json
{
    "count" : 12,
    "interval" : 10
}

Endpoint : pseudo_api_gw์˜ Endpoint

Name Type Description
count int ์ „์†กํ•  ๋ฐ์ดํ„ฐ์˜ ๊ฐฏ์ˆ˜
interval int ์ „์†กํ•  ๋ฐ์ดํ„ฐ์˜ ๊ฐ„๊ฒฉ (์ดˆ ๋‹จ์œ„)

์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ๋ฅผ ๋ณด๋‚ด์–ด ํ…Œ์ŠคํŠธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด?

ํ•ด๋‹น repository์˜ test.py ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ

$ python test.py
$ python3 test.py

์œ„์˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์•„ํ‚คํ…์ฒ˜๋ฅผ ์–ด๋–ป๊ฒŒ ์‹คํ–‰ํ•˜๋‚˜์š”?

์œ„์˜ ์ด๋ฏธ์ง€๋ฅผ ํด๋ฆญํ•˜๋ฉด Terraform README.md๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

Resource

์™œ ์ด ๋ฆฌ์†Œ์Šค๋ฅผ ์„ ์ •ํ–ˆ๋Š” ๊ฐ€?

  • ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, IoT sensor Application ๊ตฌํ˜„์˜ ์šฉ์ด์„ฑ, authorization token ๋“ฑ์„ ์‚ฌ์šฉํ•ด์„œ ๋ณด์•ˆ๋„ ์ข‹์Šต๋‹ˆ๋‹ค.
    • Kinesis Data Stream์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๋ฐ, ์ด ๋ฐฉ๋ฒ•์€ ๊ฐ™์€ ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์™ธ๋ถ€ ์„œ๋น„์Šค๊ฐ€ ์—ฐ๊ฒฐ๋˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— Python Boto3 ๋ชจ๋“ˆ๊ณผ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋“ฑ์˜ ๋ณต์žก๋„๊ณผ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด API Gateway๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Kinesis Proxy๋กœ ํ™œ์šฉํ•˜์—ฌ API Gateway Endpoint๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด Kinesis Data Stream์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋กœ ๋“ค์–ด๊ฐ€๋„๋ก ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜์—ฌ ํƒ„๋ ฅ์„ฑ์ด ์ข‹์Œ. Kinesis Data Firehose, Kinesis Data Analytics์™€ ๊ฐ™์€ ์„œ๋น„์Šค ํ™•์žฅ์„ฑ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • AWS Key Management Service ์„œ๋น„์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ Server-Side Encryption์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Kinesis Data Stream์€ ์ผ์ • ๊ธฐ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๊ตฌ์„ฑ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ์•„๋ž˜์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด Shard๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ™•์žฅ์„ฑ ๋˜ํ•œ ์ข‹๊ธฐ ๋•Œ๋ฌธ์— Kinesis Data Stream์„ ์„ ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • Kinesis Data Streams High-Level Architecture
  • ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋„๋ก ๋ฐ์ดํ„ฐ ์ƒ์‚ฐ์ž๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด ์ง€์ •ํ•œ ๋Œ€์ƒ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์ „์†ก ์ „์— Kinesis Data Firehose Firehose๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŒŒ์ผ ํ˜•์‹์„ JSON์—์„œ Apache Parquet ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฑ„ํƒํ–ˆ๋Š”๋ฐ, JSON์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์—†๋Š” ๋ฐ˜๋ฉด, Parquet์€ ํ•ด๋‹น ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๊ณ , Amazon Athena์—์„œ ์ฟผ๋ฆฌ ์šฉ๋Ÿ‰์— ๋”ฐ๋ผ ๊ณผ๊ธˆ์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์—ด ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ํ˜•์‹์ธ Parquet์œผ๋กœ ์„ ํƒํ•˜์—ฌ ๋น„์šฉ ์ ˆ๊ฐ์„ ๊ณ ๋ คํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • AWS Glue๋Š” ์™„์ „ ๊ด€๋ฆฌํ˜• ์ถ”์ถœ, ๋ณ€ํ™˜ ๋ฐ ๋กœ๋“œ(ETL) ์„œ๋น„์Šค๋กœ, ํšจ์œจ์ ์ธ ๋น„์šฉ์œผ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด ๋ฐ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ ๊ฐ„์— ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฅ˜, ์ •๋ฆฌ, ๋ณด๊ฐ•, ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  • Crawler๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž๋™์œผ๋กœ ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ ์ •๋ณด์™€ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๊ณ , ์ด๋ฅผ ๋‹ค๋ฅธ ์„œ๋น„์Šค์™€์˜ ๋„“์€ ํ™•์žฅ์„ฑ์œผ๋กœ Amazon Athena์™€๋„ ๋†’์€ ํ˜ธํ™˜์„ฑ์„ ์ž๋ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • AWS Glue๋Š” ์„œ๋ฒ„๋ฆฌ์Šค์ด๋ฏ€๋กœ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ด€๋ฆฌํ•  ์ธํ”„๋ผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • ์ด ์•„ํ‚คํ…์ฒ˜์—์„œ๋Š” Crawling์„ ํ•œ๋ฒˆ๋งŒ ํ•˜์—ฌ Table์„ ์ฐธ์กฐํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„์šฉ ํšจ์œจ์„ฑ๋„ ๊ณ ๋ คํ•˜์—ฌ ์„ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Athena๋Š” ์„œ๋ฒ„๋ฆฌ์Šค ์„œ๋น„์Šค์ด๋ฏ€๋กœ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ด€๋ฆฌํ•  ์ธํ”„๋ผ๊ฐ€ ์—†์œผ๋ฉฐ ์‹คํ–‰ํ•œ ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด์„œ๋งŒ ๋น„์šฉ์„ ์ง€๋ถˆํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. Athena๋Š” ์ž๋™์œผ๋กœ ํ™•์žฅ๋˜์–ด ์ฟผ๋ฆฌ๋ฅผ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ๊ณผ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ์—์„œ๋„ ๋น ๋ฅด๊ฒŒ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Amazon Athena๋Š” Amazon S3๋ฅผ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๊ฐ€์šฉ์„ฑ๊ณผ ๋‚ด๊ตฌ์„ฑ์ด ๋งค์šฐ ์šฐ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.
  • Grafana์—์„œ Athena Plugin์œผ๋กœ ์ธํ•ด ์—ฐ๊ฒฐ์„ฑ๊ณผ ํ˜ธํ™˜์„ฑ ๋˜ํ•œ ์ข‹์Šต๋‹ˆ๋‹ค.
  • S3 Select๋ผ๋Š” ์„œ๋น„์Šค๋„ ๊ณ ๋ คํ–ˆ์ง€๋งŒ, S3 Object ๋‹จ์œ„๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ด ์ด ์•„ํ‚คํ…์ฒ˜์™€๋Š” ๋งž์ง€ ์•Š์•„ ์„ ํƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  • ํ•˜๋“œ์›จ์–ด์— ์„ ํˆฌ์žํ•  ํ•„์š”๊ฐ€ ์—†์–ด ๋” ๋น ๋ฅด๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Amazon EC2์—์„œ๋Š” ํ™•์žฅ ๋˜๋Š” ์ถ•์†Œ๋ฅผ ํ†ตํ•ด ์š”๊ตฌ ์‚ฌํ•ญ ๋ณ€๊ฒฝ ๋˜๋Š” ์‚ฌ์šฉ๋Ÿ‰ ์ŠคํŒŒ์ดํฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์˜ˆ์ธกํ•  ํ•„์š”์„ฑ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.
  • Grafana๋ฅผ ๋กœ์ปฌํ™˜๊ฒฝ์ด ์•„๋‹Œ ํด๋ผ์šฐ๋“œ ์ƒ์—์„œ ๊ตฌ๋™ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
  • AWS managed grafana ์„œ๋น„์Šค๋„ ์žˆ๋Š”๋ฐ, ๋ผ์ด์„ผ์Šค ๋ฐœ๊ธ‰์—๋งŒ 9$์ธ ๋ฐ˜๋ฉด, EC2์˜ T2 Nano๋Š” ํ•œ๋‹ฌ์— 7$ ์˜ˆ์ƒ๋˜๊ธฐ ๋•Œ๋ฌธ์— EC2๋กœ ์„ ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ๊ฐ€์šฉ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚œ DNS(Domain Name System) ์›น ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.
  • Route 53์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๊ธฐ๋Šฅ,
    • ์ฆ‰, ๋„๋ฉ”์ธ ๋“ฑ๋ก, DNS ๋ผ์šฐํŒ…, ์ƒํƒœ ํ™•์ธ์„ ์กฐํ•ฉํ•˜์—ฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Grafana๋ฅผ EC2์—์„œ ๊ตฌ๋™ํ•˜๋„๋ก ์„ค๊ณ„ํ–ˆ๋Š”๋ฐ, ์ด๋ฅผ Client์˜ ์šฉ์ดํ•œ ์ ‘๊ทผ์„ฑ์„ ์œ„ํ•ด ์„ ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • Amazon Simple Storage Service(Amazon S3)๋Š” ๋†’์€ ํ™•์žฅ์„ฑ, ๋ฐ์ดํ„ฐ ๊ฐ€์šฉ์„ฑ, ๋ณด์•ˆ ๋ฐ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๊ฐ์ฒด ์Šคํ† ๋ฆฌ์ง€ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.
  • Intelligent-Tiering ๊ธฐ๋Šฅ์œผ๋กœ ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋“ค์„ ๊ฐ๊ฐ ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ์–ด, S3๋ฅผ ์„ ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • Lambda๋Š” ์„œ๋ฒ„๋ฅผ ํ”„๋กœ๋น„์ €๋‹ํ•˜๊ฑฐ๋‚˜ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๊ณ ๋„ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์ปดํ“จํŒ… ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.
  • Lambda๋Š” ํ•„์š” ์‹œ์—๋งŒ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ฉฐ, ์ผ์ผ ๋ช‡ ๊ฐœ์˜ ์š”์ฒญ์—์„œ ์ดˆ๋‹น ์ˆ˜์ฒœ ๊ฐœ์˜ ์š”์ฒญ๊นŒ์ง€ ์ž๋™์œผ๋กœ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•œ ์ปดํ“จํŒ… ์‹œ๊ฐ„๋งŒํผ๋งŒ ๋น„์šฉ์„ ์ง€๋ถˆํ•˜๊ณ , ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์„ ๋•Œ๋Š” ์š”๊ธˆ์ด ๋ถ€๊ณผ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Lambda API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Lambda ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜, Lambda๊ฐ€ ๋‹ค๋ฅธ AWS ์„œ๋น„์Šค์˜ ์ด๋ฒคํŠธ์— ์‘๋‹ตํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์˜คํ”ˆ์†Œ์Šค์ด๋ฉฐ, ์ธํ”„๋ผ ๊ด€๋ฆฌ ๋น„์šฉ๋„ EC2 T2 Nano๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ €๋ ดํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹ค์–‘ํ•œ ์‹œ๊ฐํ™” ์˜ต์…˜์ด ์žˆ๊ณ , Dashboard๋ฅผ Grafana CLI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ IaCํ™”๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •