Terraform variables.tf로 코드 반복 줄이기

2023. 10. 24. 21:38·ETC
목차
  1. 1. 왜 불편하게 살았는가?
  2. 2. variables.tf를 사용하여 개선

1. 왜 불편하게 살았는가?

할 일들은 많고 시간은 한정되어 있다. 그렇기 때문에 나의 리소스를 어떻게 할당해서 사용하느냐는 너무너무 중요한 문제임을 느끼고 있다. 또한, 회사의 규모와 문화에 따라 특정 직무가 수행하는 "일반적인 일"이 달라지기도 하고 추가로 다른 직무의 일도 하기도 한다.

나에게 Terraform 코드를 관리하는 일이 조금 그러했다. 담당하는 MS에 필요한 데이터독 Integration, Monitor, Metric 등의 리소스를 관리해야 했다. 이를 잘 관리하기 위해선 HCL 언어에 대한 이해도 필요하고 CI / CD도 필요하고 PR 정책 등도 필요하겠지만 많은 시간을 투자하지 않았다.

이게 허용이 되는 기준은 "운영상의 문제가 없는 한" 이라고 생각한다. 운영상의 문제가 있을 것이라 판단된다면 도움을 요청하거나 시간을 투자해야 한다.

프로세스 및 코드를 개선하지 않는다면 그만큼 더 꼼꼼하고 분명하게 확인 후에 진행해야 한다. 정확한 프로세스를 만들어둔다면 그 프로세스를 만들기까지는 오래 걸릴지라도 이후 운영상의 리소스 소모가 줄어들 것이다. 개인의 커리어가 쌓여감에 따라 새로운 기술을 받아들이는 속도도 빨라질 것이기에 잘 고려해서 판단해야 할 것이다.

2. variables.tf를 사용하여 개선

데이터독 metric을 Terraform으로 생성하기 위해 datadog_logs_metric 리소스를 사용한다.

resource "datadog_logs_metric" "metric_a" {
name = "test.metric_a"
compute {
aggregation_type = "distribution"
path = "@a"
}
filter {
query = "service:test"
}
}

위 코드를 통해 생성된 test.metric_a 는 test라는 APM의 로그들을 조회해서 a를 수집 및 집계한다.

여기서 또 하나의 metric이 추가된다면 그냥 하나 더 정의했다.

resource "datadog_logs_metric" "metric_b" {
name = "test.metric_b"
compute {
aggregation_type = "distribution"
path = "@b"
}
filter {
query = "service:test"
}
}

이제 test.metric_a 가 생성되었다.

이렇게 하나, 둘 20개가 넘는 metric이 필요했다.

눈으로 내가 작성한 코드에 필요한 메트릭이 있는지 꼼꼼히 확인하는 게 힘들어졌다.

Terraform에선 variables.tf에 필요한 변수들을 정의할 수 있었다. 변수를 정의한 뒤 .tfvars 파일에 동적으로 이 변수에 값을 할당할 수 있는데, 나는 단순히 variables.tf에 있는 변수 정의 시 default 값에 필요한 값들을 넣기로 하였다.

# variables.tf
variable "model_request" {
type = list(string)
default = [
"a",
"b",
"c"
]
}

이제 이 변수를 사용하여서 a, b, c 3개의 메트릭을 한 번에 정의해 보자.

resource "datadog_logs_metric" "model_request" {
count = length(var.model_request)
name = "test.metric_${var.model_request[count.index]}"
compute {
aggregation_type = "distribution"
path = "@${var.model_request[count.index]}"
}
filter {
query = "service:test"
}
}
  1. 1. 왜 불편하게 살았는가?
  2. 2. variables.tf를 사용하여 개선
'ETC' 카테고리의 다른 글
  • PlantUML 기초 사용법 (feat. vscode)
  • [핵심만 콕! 쿠버네티스] Chapter 2. 쿠버네티스 소개
  • [핵심만 콕! 쿠버네티스] Chapter 1. 도커 기초
  • [Mac] 터미널에서 손쉽게 Github 인증하기
ssuwani
ssuwani
  • ssuwani
    Oops!!
    ssuwani
  • 전체
    오늘
    어제
    • 분류 전체보기 (69)
      • MLOps (19)
      • 데이터 엔지니어링 (4)
      • Kubernetes (5)
      • Kafka (10)
      • 📚책 (3)
      • 라즈베리파이 (1)
      • ETC (8)
      • Python (6)
      • 언어모델 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Github Actions
    RDD
    Docker
    gcp
    Prometheus
    LangChain
    auto tagging
    Confluent Cloud
    FastAPI
    BentoML
    Airflow
    LLM
    Kubernetes
    Kubeflow
    producer
    consumer
    fluentbit
    Python
    datadrift
    Schema Registry
    evidently ai
    asyncronous
    mlflow
    redis
    태그2
    topic
    MLOps
    Kafka
    Spark
    태그1
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
ssuwani
Terraform variables.tf로 코드 반복 줄이기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.