7. Terraform을 사용하여 Kinesis 데이터를 CloudWatch에 스트리밍

발행: (2026년 2월 7일 오후 02:56 GMT+9)
6 분 소요
원문: Dev.to

Source: Dev.to

번역할 텍스트를 제공해 주시면, 원본 포맷과 코드 블록, URL 등을 그대로 유지하면서 한국어로 번역해 드리겠습니다.

실험실 정보

모니터링 팀은 스트리밍 인프라에 대한 가시성을 향상시키고자 합니다. Amazon Kinesis와 CloudWatch를 사용하여 쓰기 처리량이 프로비저닝된 한도를 초과하면 즉시 알림이 트리거되도록 솔루션을 구현하십시오.

작업 (Terraform 사용):

  1. Kinesis 데이터 스트림 생성

    • 이름: xfusion-kinesis-stream
    • 샤드 수: 1
  2. 모니터링 활성화

    • 샤드 수준 메트릭을 활성화하여 인제스트 및 처리량 오류를 추적합니다.
  3. CloudWatch 알람 생성

    • 이름: xfusion-kinesis-alarm
    • WriteProvisionedThroughputExceeded 메트릭을 모니터링합니다.
    • 메트릭이 1 이상의 임계값을 초과하면 트리거됩니다.
  4. 알림 보장

    • 알람을 구성하여 프로비저닝된 한도를 초과하는 쓰기 처리량 문제를 감지합니다.
  5. Terraform 파일

    • main.tf – Kinesis 스트림 및 CloudWatch 알람을 프로비저닝합니다.
    • outputs.tf – 스트림 및 알람 이름을 출력합니다.

실습 솔루션

main.tf

# Kinesis Data Stream
resource "aws_kinesis_stream" "xfusion_kinesis" {
  name        = "xfusion-kinesis-stream"
  shard_count = 1

  shard_level_metrics = [
    "IncomingBytes",
    "IncomingRecords",
    "WriteProvisionedThroughputExceeded"
  ]
}

# CloudWatch Alarm for write throughput exceeded
resource "aws_cloudwatch_metric_alarm" "xfusion_kinesis_alarm" {
  alarm_name          = "xfusion-kinesis-alarm"
  comparison_operator = "GreaterThanThreshold"
  evaluation_periods  = 1
  metric_name         = "WriteProvisionedThroughputExceeded"
  namespace           = "AWS/Kinesis"
  period              = 60
  statistic           = "Sum"
  threshold           = 1

  dimensions = {
    StreamName = aws_kinesis_stream.xfusion_kinesis.name
  }

  alarm_description = "Alarm when Kinesis write throughput exceeds provisioned limits"
}

outputs.tf

output "kke_kinesis_stream_name" {
  value = aws_kinesis_stream.xfusion_kinesis.name
}

output "kke_kinesis_alarm_name" {
  value = aws_cloudwatch_metric_alarm.xfusion_kinesis_alarm.alarm_name
}

Terraform 명령 (필수)

terraform init
terraform validate
terraform apply
# type "yes" when prompted

Kinesis 스트림 다이어그램

단계별 설명 (왜 & 무엇이 일어나는가)

Amazon Kinesis란?

스트리밍 데이터를 수신하는 데이터 파이프이며, 예시:

  • 애플리케이션 로그
  • 클릭스트림 데이터
  • IoT 이벤트

Shard란?

고속도로의 차선과 같습니다. 각 샤드에는 쓰기 제한이 있으며, 이를 초과하면 오류가 발생합니다. 이 실습에서는 shard_count = 1이 하나의 차선을 생성합니다.

Shard‑Level Metrics를 활성화하는 이유

shard_level_metrics = [
  "IncomingBytes",
  "IncomingRecords",
  "WriteProvisionedThroughputExceeded"
]

샤드 내부에 대한 상세 가시성을 제공합니다. 이를 활성화하지 않으면 CloudWatch가 샤드 수준 문제를 감지하지 못해 알람이 효과를 발휘하지 못합니다.

WriteProvisionedThroughputExceeded 메트릭

프로듀서가 샤드가 수용할 수 있는 속도보다 빠르게 데이터를 전송하고 있음을 나타내며, 쓰기 거부, 잠재적 데이터 손실 및 재시도가 발생합니다.

CloudWatch 알람의 목적

메트릭 모니터링을 실행 가능한 알림으로 변환합니다. 알람 구성:

  • comparison_operator = "GreaterThanThreshold"
  • threshold = 1
  • evaluation_periods = 1
  • period = 60 (초)
  • statistic = "Sum"

의미: 매분마다 쓰기‑처리량 오류 수를 합산하고, 합계가 1을 초과하면 즉시 알람을 트리거합니다.

Dimensions를 사용하는 이유

dimensions = {
  StreamName = aws_kinesis_stream.xfusion_kinesis.name
}

계정에 존재하는 모든 Kinesis 스트림이 아니라 오직 이 특정 스트림만을 감시하도록 보장합니다.

terraform apply 실행 시 일어나는 일

  1. Terraform이 Kinesis 스트림을 생성합니다.
  2. 샤드‑레벨 메트릭이 활성화됩니다.
  3. Terraform이 CloudWatch 알람을 생성합니다.
  4. 알람이 즉시 모니터링을 시작합니다.
  5. Terraform이 리소스를 상태 파일에 저장합니다.
  6. 출력 값(kke_kinesis_stream_name, kke_kinesis_alarm_name)이 표시됩니다.

피해야 할 흔한 실수

  • shard_level_metrics 활성화를 놓치는 경우.
  • 잘못된 메트릭 네임스페이스를 사용하는 경우.
  • StreamName 차원을 누락하는 경우.
  • 알람 임계값을 잘못 설정하는 경우.
  • main.tfoutputs.tf 외에 불필요한 .tf 파일을 추가하는 경우.

리소스 및 다음 단계

크레딧

  • 랩 콘텐츠는 KodeKloud에서 가져왔습니다.
0 조회
Back to Blog

관련 글

더 보기 »

UX/UI 타이포그래피

Typography란 무엇을 의미할까요? - 어떤 font를 사용할지 - 어느 위치에서 얼마나 크게 할지 - 얼마나 굵게 할지 - 행 간격 - ...

이번 주 상위 7개 추천 DEV 게시물

이번 주 Top 7에 오신 것을 환영합니다. DEV 편집팀이 지난 주에 가장 좋아한 게시물을 직접 선정했습니다. 선정된 모든 저자분들께 축하드립니다.