#인프라

447 편의 글

CloudWatch 메트릭·알람 요금: 로그 다음으로 새는 곳
5 분 소요

CloudWatch 메트릭·알람 요금: 로그 다음으로 새는 곳

CloudWatch 청구서에서 Logs 다음 항목을 분해합니다. 월 $0.30씩 쌓이는 커스텀 메트릭과 디멘션 조합이 개수를 폭발시키는 원리, 알람·대시보드·API 호출(특히 GetMetricData)의 단가, 서드파티 관측 도구가 메트릭 API 요금을 만드는 구조, 임베디드 메트릭 포맷과 디멘션 설계로 개수를 줄이는 방법, 점검 순서까지 다룹니다.

AWS 로그 분석 선택: Logs Insights vs Athena vs OpenSearch
5 분 소요

AWS 로그 분석 선택: Logs Insights vs Athena vs OpenSearch

로그를 어디서 검색하고 분석할지 가르는 기준을 정리합니다. 이미 CloudWatch에 있는 로그를 그대로 조회하는 Logs Insights($0.005/스캔 GB), S3에 쌓아 두고 SQL로 묻는 Athena($5/스캔 TB)와 파티셔닝·압축이 요금을 가르는 구조, 상시 대시보드와 전문 검색이 필요할 때의 OpenSearch와 그 고정비, 세 층을 조합하는 실무 구성과 선택 순서까지 다룹니다.

Kinesis vs MSK vs SQS: 스트리밍과 큐 선택 기준
5 분 소요

Kinesis vs MSK vs SQS: 스트리밍과 큐 선택 기준

이벤트 데이터를 받는 세 서비스를 가르는 기준을 정리합니다. 소비 후 사라지는 큐와 다시 읽을 수 있는 스트림이라는 모델 차이, SQS 100만 건당 $0.40의 단순함, Kinesis의 프로비저닝드 샤드와 온디맨드 모드, MSK가 정당화되는 Kafka 생태계 요건, Express 브로커와 서버리스라는 MSK의 두 갈래, 규모와 팀 역량으로 가르는 선택 순서까지 다룹니다.

Spot 인스턴스 실전: 최대 90% 할인의 조건과 중단 대응 설계
5 분 소요

Spot 인스턴스 실전: 최대 90% 할인의 조건과 중단 대응 설계

Spot이 약정 없이 최대 90% 할인을 주는 대신 무엇을 요구하는지 정리합니다. 2분 중단 통지와 리밸런스 권고의 실제 동작, 중단 내성이 있는 워크로드와 없는 워크로드를 가르는 기준, price-capacity-optimized 할당 전략과 인스턴스 다양화가 중단 빈도를 줄이는 원리, Fargate Spot의 자리, RI·Savings Plans·Graviton과 조합해 비용 3축을 완성하는 설계까지 다룹니다.

테라폼 의존성 에러 총정리: Cycle, depends_on 오용, known after apply
5 분 소요

테라폼 의존성 에러 총정리: Cycle, depends_on 오용, known after apply

테라폼 의존성 그래프에서 나오는 세 갈래 문제를 한 번에 정리합니다. Error: Cycle의 대표 사례인 보안 그룹 상호 참조를 분리 리소스로 끊는 법과 terraform graph 진단, 암묵 의존이 기본이고 depends_on은 숨은 의존에만 써야 하는 이유와 남용의 부작용, count와 for_each 키에 계산 전 값이 들어가 나오는 Invalid count argument의 해법까지 다루겠습니다.

tfstate에 시크릿이 평문으로 저장됐을 때: 키 회전과 재발 방지
5 분 소요

tfstate에 시크릿이 평문으로 저장됐을 때: 키 회전과 재발 방지

tfstate가 sensitive 표시와 무관하게 값을 평문으로 담는 구조부터 정리합니다. 노출 범위를 판단하는 순서, state 정리보다 키 회전이 먼저인 이유, git에 state가 커밋된 경우의 히스토리 정리, 그리고 재발 방지로서의 ephemeral 리소스와 write-only 인수, S3 백엔드 암호화와 접근 통제, 시크릿을 애초에 state에 남기지 않는 설계까지 다루겠습니다.

terraform plan이 느릴 때: refresh 부하, 병렬도, 스택 분할 신호
4 분 소요

terraform plan이 느릴 때: refresh 부하, 병렬도, 스택 분할 신호

plan 소요 시간의 본체가 diff 계산이 아니라 리소스마다 API를 읽는 refresh라는 사실부터 정리합니다. 리소스 수와 API 왕복이 시간을 결정하는 구조, -refresh=false를 써도 되는 국면과 안 되는 국면, parallelism 조정이 rate limit과 부딪히는 지점, -target이 성능 도구가 아닌 이유, 그리고 근본 대책인 스택 분할로 넘어가야 하는 신호까지 다루겠습니다.

AWS provider 6.x 업그레이드: breaking change 진단과 안전한 전환 순서
5 분 소요

AWS provider 6.x 업그레이드: breaking change 진단과 안전한 전환 순서

AWS provider 메이저 업그레이드를 안전하게 넘는 절차를 정리합니다. CLI 업그레이드보다 파급이 큰 이유, 최신 5.x를 경유해 deprecation 경고를 소진하는 표준 수순, 6.0의 주요 변경(리소스 단위 region 인수, OpsWorks·SimpleDB 제거, 불리언 엄격화, Redshift 기본값 반전), 스키마 변경이 만드는 가짜 diff와 진짜 교체를 구분하는 plan 판독, 공유 모듈의 버전 하한이 만드는 함정까지 다루겠습니다.

테라폼 버전 업그레이드 절차: 호환성 약속, no-op 검증, 롤백 대비
5 분 소요

테라폼 버전 업그레이드 절차: 호환성 약속, no-op 검증, 롤백 대비

테라폼 CLI 버전을 올리는 안전한 절차를 정리합니다. 1.x 안에서는 구성과 워크플로 호환이 유지된다는 호환성 약속, CLI 업그레이드와 provider 업그레이드를 분리해야 하는 이유, 업그레이드 전후로 변경 없음 plan을 확인하는 검증법, 새 버전이 쓴 state를 구버전이 못 읽을 수 있어 필요한 롤백 대비, tfenv와 mise를 이용한 팀·CI 버전 통일까지 다루겠습니다.

terraform destroy가 실패할 때: DependencyViolation과 지워지지 않는 리소스
5 분 소요

terraform destroy가 실패할 때: DependencyViolation과 지워지지 않는 리소스

destroy 실패의 세 갈래를 구분해 정리합니다. 테라폼 밖에서 만든 리소스가 물고 있어 나오는 DependencyViolation의 진단 순서, 비어 있지 않은 S3 버킷과 force_destroy를 켜고 apply부터 해야 하는 이유, prevent_destroy와 deletion_protection처럼 일부러 걸어 둔 안전장치의 올바른 해제 절차, 삭제가 느린 리소스의 타임아웃, 부분 destroy 후 잔존물 정리까지 다루겠습니다.

terraform plan은 성공했는데 apply가 실패할 때: 원인과 부분 적용 복구
5 분 소요

terraform plan은 성공했는데 apply가 실패할 때: 원인과 부분 적용 복구

plan이 통과했는데 apply가 실패하는 이유를 구조부터 정리합니다. plan은 스키마와 참조만 검증하고 실제 API 검증은 apply에서 처음 일어난다는 비대칭, 권한 부족과 IAM 전파 지연, 서비스 쿼터, 전역 이름 충돌 같은 전형 원인 5가지, apply가 트랜잭션이 아니라서 생기는 부분 적용 상태를 안전하게 복구하는 절차, 이미 존재한다는 에러가 났을 때의 import 판단까지 다루겠습니다.

Route 53 라우팅 정책 비교: 8가지 정책 선택 기준
5 분 소요

Route 53 라우팅 정책 비교: 8가지 정책 선택 기준

Route 53의 8가지 라우팅 정책을 시나리오로 가르는 기준을 정리합니다. 단순·가중치·지연 시간·장애 조치·지리 위치·지리 근접·다중 값·IP 기반 각각의 용도, 정책에 따라 달라지는 쿼리 단가($0.40〜$0.80/100만 건)와 별칭 쿼리 무료의 효과, 헬스 체크 요금과 조합 원칙, 카나리아 배포·DR·멀티 리전이라는 대표 시나리오별 정답까지 다룹니다.