분류 전체보기 1409

[Terraform] for - 요소 반복을 통한 값 생성

개요2026.01.20-[Terraform] yamldecode - YAML을 HCL로 파싱하기에서 yamldecode로 yaml 파일을 map 형식의 데이터를 파싱 했는데, 조건에 따른 필터링 등의 작업이 필요해졌다. 확인해 보니 for 문을 사용하면 되는 것으로 보여 문법을 알아보고자 한다. for테라폼에서 for 문은 복합 타입을 다른 복합 타입의 데이터로 변환할 수 있게 한다. 예시로 아래 코드의 경우 var.list가 문자열 목록일 때 대문자 문자열 tuple을 생성한다. var.list의 각 요소에 대해 반복되며, 각 요소를 s로 칭하고 upper를 수행한 tuple 값을 생성한다는 의미이다.[for s in var.list : upper(s)] 입력for 문의 입력은 in 키워드 뒤에 위치..

Terraform 10:18:53

[Terraform] count - 리소스 반복 생성

개요Terraform 코드를 작성하던 중 조건에 따라 리소스 생성 여부를 결정하고 싶다고 했더니 count 문법을 제안해 왔다. 제안은 채택하더라고 어떤 기능인지는 알고 사용해야 할 것 같아 내용을 정리한다. count기본적으로 리소스 블록은 하나의 인프라 개체를 구성한다. 다만 count 메타 인수를 사용하면 유사한 개체를 별도 블록으로 작성하지 않고 하나의 블록으로 작성할 수 있다. count 메타 인수는 data, ephemeral, module, resource, list에서 사용할 수 있다. 예로 들어 아래와 같은 data 블록이 있다고 하자.data "http" "user_1" { url = "https://jsonplaceholder.typicode.com/users/1" request..

Terraform 2026.01.30

[YAML] 명시적 데이터 타입 선언

개요YAML이라는 데이터 형식은 꾸준히 사용하고 있는데, 기본적인 문법만 익히고 사용하다 보니 한 번씩 모르던 문법이 튀어나오기 십상인 것 같다. 이번에는 YAML에 데이터 형식을 지정할 수 있다는 사실을 최근에 확인하여 내용을 정리한다. 데이터 타입YAML의 데이터 타입은 크게 Scalar, List, Mapping이라는 3가지 종류가 있다. ScalarScalar는 String, Integer, Boolean과 같이 한 가지 값으로 분류될 수 있는 데이터를 의미한다.items: 30price: 50overwrite: true ListYAML에서 리스트는 하이픈과 개행, 또는 대괄호와 쉼표를 사용하여 표현할 수 있다.list: - first - second - third # 또는list: [ fir..

[작업 기록] 서비스 이전 (Docker -> EKS)

배경현재 운영 중인 서비스에는 Kafka 브로커의 메시지를 처리하는 ETL Handler(Consumer)가 존재한다. 초기에는 트래픽이 많지 않아 단일 EC2 인스턴스 위에 Docker 컨테이너를 띄워 운영하는 것만으로 충분했다.하지만 서비스 규모가 커지며 문제가 발생했다. 패키지 저장소와 취약점 DB가 확대되면서 핸들러 수가 증가했고, 결국 단일 호스트의 물리적 리소스 한계에 부딪혔다. 빈번한 CPU 사용량 과다로 인스턴스가 죽는 현상이 잦아졌고, 이는 곧 단일 장애점(SPOF)이 되어 서비스 전체의 안정성을 위협했다.간단한 해결 방법은 인스턴스 타입 변경이지만, 이는 근본적인 해결책이 되지 못했다. 때문에 보다 안정적인 운영 환경인 EKS로의 이전을 꾀하게 되었다. 목표업무를 진행하기 전에 목표..

기타 2026.01.28

[Airflow] Connections에 옵션 추가

개요2025.08.25-[Airflow] Connections이란에서 Airflow와 외부 시스템 간의 연동을 위한 연결정보를 저장하는 Connection에 대해서 알아보았다. 평소에는 연결에 필요한 필수 정보 정도만 지정하고 사용하지만, 필요시에는 기타 추가적인 옵션도 지정할 필요가 있을 수 있다. 이번 글에서는 그런 부분에 대해 추가로 작성한다. extra이전 글에서 extra가 하는 역할이 무엇인가 싶었는데, 이 extra가 바로 추가적인 구성 정보를 지정하는 속성이었다. extra는 json 형식으로 지정하려는 속성의 키와 값을 넣어주면 된다.이 연결 정보는 URI 형식으로 확인할 수도 있는데 아래와 같은 형식이다.[ { "id": "5", "conn_id": "test", ..

Apache Airflow 2026.01.27

[Kafka] API로 커넥터 관리하기

개요2025.12.29-[Kafka] debezium 이란 에서 Kafka 클러스터에 Debezium을 얹어보았는데, 실제로 커넥터를 생성하고 관리하는 방법에 대해서 정리가 좀 필요한 것 같아서 기록해 둔다. Connectors 조회커넥터 목록은 Kafka Connect API 엔드포인트에 GET 요청을 보내면 된다.http://localhost:8083/connectors 아직 아무 커넥터를 만들지 않아 응답이 비어있다. Conenctors 생성Kafka Connect API 엔드포인트에 POST 요청을 보낸다. request body에 생성할 커넥터의 정보를 전달해야 한다.curl -i -X POST -H "Accept:application/json" -H "Content-Type:appli..

Apache Kafka 2026.01.26

[Terraform] HCL - 조건문

개요테라폼으로 인프라를 구성하던 중 조건에 따른 분기 처리가 필요하게 되었다. 이번 글에서는 테라폼에서 사용할 수 있는 조건문에 대해서 좀 정리해보려고 한다. if 대신 삼항연산자다른 프로그램 언어와 다르게 if 구문을 제공하지 않는다. 대신 조건식(Conditional Expressions)을 제공하고 있는데, 이는 테라폼이 절차가 아닌 상태를 정의하는 선언형 언어이기 때문이다. 'A를 만족하면 B를 실행해.'가 아닌 'A인 경우의 결괏값은 B야.'라는 관점으로 접근해야 한다.기본적으로 테라폼에서의 삼항연산자 문법은 아래와 같다.condition ? true_val : false_valcondition을 만족하면 true_val이 결과고 그렇지 않으면 false_val이 결과다. 이때 true_val..

Terraform 2026.01.23

[Airflow] git-sync - fatal: Unable to create '/git/.git/worktrees//index.lock': File exists.

개요출근하고 운영 중인 Airflow을 점검했더니 스케쥴러가 동작하지 않고 있었다. 이 Airflow는 AWS EKS 내에서 동작하고 있는데, 확인해 보니 스케쥴러 포드가 Init:CrashLoopBackOff 상태를 지속하고 있었다.원인을 확인하고 문제를 해결한 방법을 적어둔다. 원인 파악- Pods Event 확인먼저 포드의 이벤트를 확인하고자 describe를 했다.kubectl describe pods airflow-schedulergit-sync-init가 재시작한다는 정보를 얻을 수 있었다. git-sync-init 컨테이너가 원인일 가능성이 높아졌다. - 컨테이너 로그 확인git-sync-init의 동작 현황을 보고자 로그를 확인한다.kubectl logs airflow-scheduler..

Apache Airflow 2026.01.22

[Terraform] HTTP 요청하기

개요테라폼을 실행할 때 github에 업로드된 설정 파일을 읽으려고 한다. 적절한 방법이 있는지 찾아본다. HTTPHTTP Provider는 일반적인 HTTP 서버와 통신하기 위한 유틸리티다. Terraform의 기본적인 구성 중 하나로 별도 설정 없이 사용할 수 있다. 사용할 때는 아래와 같이 작성한다.terraform { required_providers { http = { source = "hashicorp/http" version = "3.5.0" } }}provider "http" { # Configuration options} http 데이터소스http 데이터소스는 지정한 URL로 HTTP GET 요청을 보내고, 그 응답에 대한 정보를 반환한다. URL은 ..

Terraform 2026.01.20

[Terraform] yamldecode - YAML을 HCL로 파싱하기

개요2026.01.19-[Terraform] HTTP 요청하기에서 http 서버로부터 YAML 형식의 데이터를 얻어왔는데, 이 값을 테라폼에서 이용할 수 있는 데이터 구조로 변환하여 테라폼 내에서 활용하고자 한다. 적절한 방법을 기록한다. yamldecodeyamldecode은 문자열을 yaml 하위 집합으로 파싱하고 그 값을 표현한다. 기본적인 사용은 yamldecode 함수에 yaml 형식의 데이터를 전달하는 것이다.output "hello" { value = yamldecode("hello: world")}만약 전달한 데이터가 파일이라면 아래와 같이 전달한다.locals { # config.yaml 파일을 읽어서 HCL 객체로 변환 app_config = yamldecode(file("${..

Terraform 2026.01.20