본문 바로가기

전체 글153

EKS 노드가 안 늘어날 때 의심할 것 (3) - NodePool taint 불일치 이 글은1편 (vCPU 서비스 쿼터), 2편 (서브넷 IP 고갈)에 이어, 노드가 안 늘어나는 세 번째 범인 — NodePool taint와 파드 toleration의 불일치를 다룹니다신규 환경 구축 중 실제로 겪은 사건 기준입니다: 게임 서버 파드 6개가 30분 넘게 Pending인데, 전용 NodePool은 멀쩡히 존재하고 노드만 0대인 상태증상ArgoCD 앱 Degraded — 게임 서버 계열 파드 6개가 Pending 지속스케줄러 이벤트는 흔한 모습이었습니다0/33 nodes are available: 26 node(s) had untolerated taint(s),7 node(s) didn't match Pod's node affinity/selector그런데 Karpenter provision.. 2026. 8. 31.
Karpenter가 예고 없이 노드를 교체할 때 - Drift 동작과 NodeClass 사고 2건 Karpenter를 운영하면서 실제로 겪은 사고 2건을 정리합니다. 하나는 아무도 배포하지 않았는데 새벽에 노드가 전부 순차 교체된 사건이고, 다른 하나는 노드가 재시작된 뒤 신규 노드가 아예 생성되지 않던 사건입니다. 둘 다 원인은 Karpenter의 정상 동작 원리 안에 있었습니다.사건 1 - 새벽에 노드가 전부 순차 교체됨증상배포도, 스케일 이벤트도 없었는데 워커 노드들이 하나씩 삭제되고 새 노드로 교체됨서비스 순단은 없었지만 노드 이름과 인스턴스가 전부 바뀌어 있었음로그 확인Karpenter 로그를 보면 교체 사유가 명시되어 있습니다 — "reason":"drifted"{"level":"INFO","message":"disrupting nodeclaim(s) via replace, terminat.. 2026. 8. 26.
NAT Gateway 비용 절감 실전 - 일 150TB 트래픽을 100GB로 줄인 3단계 라이브 게임 서비스의 AWS 청구서에서 NAT Gateway 데이터 처리 비용이 비정상적으로 커진 것을 발견하고,트래픽 경로를 3단계로 손봐서 일 $9,000 수준이던 NAT 전송 비용을 $10 미만으로 줄인 기록입니다.AS-IS / TO-BE 트래픽 경로와 비용 변화NAT Gateway 요금 구조NAT Gateway는 두 가지 축으로 과금됩니다 (요금표)시간당 요금 — 떠 있기만 해도 나감 (도쿄 기준 $0.062/h)데이터 처리 요금 — NAT를 통과하는 트래픽 GB당 과금 (도쿄 기준 $0.062/GB)시간당 요금은 예측 가능하지만, 데이터 처리 요금은 경로 설계에 따라 폭발합니다GB당 $0.062 × 일 150TB ≒ 일 $9,300 — 실제로 벌어진 일입니다여기에 NAT Gateway가 다른 가.. 2026. 8. 16.
EKS DNS 안정화 - NodeLocal DNSCache 도입 검증기 배경 — 왜 DNS를 건드렸나게임 런칭을 앞둔 EKS 클러스터에서 DNS를 사전 튜닝하기로 했습니다. CoreDNS가 Fargate 위에 떠 있는 구성이었는데, 이 구조에는 세 가지 잠재 리스크가 있습니다네트워크 지연 — 모든 DNS 질의가 네트워크를 건너 Fargate 상의 CoreDNS까지 가야 함conntrack 경합 — 짧은 시간에 몰리는 DNS UDP 패킷이 노드의 conntrack 테이블 입력 과정에서 경합(race)을 일으켜 패킷 드랍 발생 가능. 애플리케이션에서 간헐적으로 보이는 "DNS 5초 지연"의 주범입니다 — 드랍된 UDP 질의는 resolver 타임아웃(기본 5초)만큼 기다렸다가 재시도되기 때문부하 집중 — 클러스터 전체 질의가 소수의 CoreDNS 파드에 몰려, CoreDNS 장.. 2026. 8. 16.
Claude Code 서브에이전트 설계 패턴 5가지 서브에이전트가 왜 필요한가Claude Code의 서브에이전트는 독립된 컨텍스트에서 실행되는 보조 에이전트입니다 (공식 문서)메인 세션에서 전부 처리하지 않고 위임하는 이유는 세 가지컨텍스트 분리 — 파일 수십 개를 읽는 작업을 위임하면 그 내용이 메인 대화를 채우지 않고, 결과 요약만 돌아옵니다병렬성 — 독립적인 작업 여러 개를 동시에 돌릴 수 있음권한 최소화 — 에이전트마다 쓸 수 있는 도구를 제한 가능. 리뷰어에게는 읽기 도구만 주는 식작성자와 검증자를 분리할 수 있다는 것이 실무에서 가장 큰 가치입니다 — 코드를 쓴 컨텍스트가 그 코드를 검증하면 같은 맹점을 공유하게 됩니다정의 파일 해부서브에이전트는 마크다운 파일 하나로 정의합니다. 프로젝트용은 .claude/agents/, 개인 전역용은 ~/.c.. 2026. 8. 16.
헤드리스 모드로 CI/CD에 Claude Code 넣기 헤드리스 모드란Claude Code는 대화형 터미널 도구지만, -p(--print) 플래그를 붙이면 비대화형으로 한 번 실행하고 종료합니다 (공식 문서)성공 시 exit code 0, 실패 시 non-zero — 스크립트에서 분기 가능stdin으로 파이프 입력을 받고 stdout으로 결과를 내보내므로, 일반 CLI 도구처럼 파이프라인에 끼워 넣을 수 있습니다# 빌드 로그를 파이프로 넣고 원인 분석을 파일로 받기cat build-error.txt | claude -p '이 빌드 에러의 근본 원인을 간결하게 설명해줘' > output.txtCI에서는 --bare를 함께 쓰는 것을 권장합니다 — 훅·플러그인·MCP 서버·CLAUDE.md 자동 로딩을 건너뛰어 어느 러너에서 돌려도 같은 결과가 나옵니다 (시작 .. 2026. 8. 16.
CLAUDE.md 설계 - 팀 컨텍스트를 코드처럼 관리하기 CLAUDE.md가 해결하는 것Claude Code는 세션마다 컨텍스트가 초기화됩니다 — 어제 설명한 빌드 명령, 코딩 컨벤션, 아키텍처를 오늘 또 설명해야 하는 구조CLAUDE.md는 세션 시작 시 자동으로 로드되는 지속 지침 파일입니다 (공식 문서)넣어야 할 것의 기준이 명확합니다Claude가 같은 실수를 두 번째 했을 때지난 세션에 타이핑했던 정정을 이번 세션에 또 타이핑하고 있을 때새 팀원이 생산성을 내는 데 필요한 그 설명메모리 계층과 로드 순서CLAUDE.md는 위치에 따라 스코프가 다르고, 넓은 스코프부터 순서대로 로드됩니다스코프위치용도관리 정책/Library/Application Support/ClaudeCode/CLAUDE.md (macOS) 등조직 전체 강제 — 개인 설정으로 제외 불가.. 2026. 8. 16.
Claude Code 훅(Hooks)으로 가드레일 만들기 - 위험 명령과 시크릿 차단 프롬프트 지시만으로는 부족하다"rm -rf 쓰지 마", "시크릿은 커밋하지 마" 같은 규칙을 CLAUDE.md에 적어두는 것만으로는 안심할 수 없습니다프롬프트 지시는 모델이 따르기를 기대하는 것이고, 긴 세션에서 컨텍스트가 밀리면 잊힐 수 있습니다훅(Hooks)은 다릅니다 — 도구 실행 전후에 끼어드는 코드 레벨 강제 장치라서, 모델이 뭐라고 판단하든 조건에 걸리면 무조건 차단됩니다 (공식 문서)실제로 AWS 액세스 키·Bearer 토큰 패턴이 파일에 쓰이기 전에 차단하는 훅을 팀에서 운영해봤는데, "규칙을 지켜달라"와 "지킬 수밖에 없다"의 차이는 큽니다PreToolUse 훅의 개입 지점 - 통과와 차단 두 갈래훅 이벤트 한눈에이벤트가 많지만 가드레일 용도로는 이 정도만 알면 됩니다이벤트발화 시점가드레.. 2026. 8. 16.
Claude Code 조직 거버넌스 (1) - managed-settings로 팀 정책 강제하기 왜 개인 설정만으로는 안 되는가Claude Code를 팀에 배포하면 곧바로 이런 질문이 나옵니다 — "위험한 명령은 어떻게 막지?", "아무 MCP 서버나 붙이면?", "비용 추적은 강제할 수 있나?"개인 설정(~/.claude/settings.json)에 규칙을 넣어달라고 안내하는 방식은 사용자가 언제든 지울 수 있어서 정책이 아니라 권고에 그칩니다Claude Code에는 이를 위한 별도 계층이 있습니다 — 관리형 설정(managed settings). 사용자·프로젝트 설정보다 항상 우선하고, 오버라이드가 불가능합니다 (공식 설정 문서)Bedrock 도입 가이드에서 다룬 환경변수 강제도 결국 이 파일로 배포합니다 — 그 글의 후속편입니다설정 계층 — 누가 이기는가우선순위 높은 순서:순위계층위치1관리형(.. 2026. 8. 16.
Claude Code를 Amazon Bedrock으로 쓰기 - 엔터프라이즈 도입 가이드 왜 Bedrock 경로인가Claude Code는 기본적으로 Anthropic에 직접 로그인해서 쓰지만, Amazon Bedrock을 경유해서 쓸 수도 있습니다 (공식 문서)기업 환경에서 Bedrock 경로가 매력적인 이유AWS 통합 청구 — 별도 Anthropic 계약·결제 수단 없이 기존 AWS 청구로 합산IAM/SSO 재사용 — 이미 쓰고 있는 AWS 자격증명 체계(SSO, IAM Role)로 인증. 개인별 API 키 발급·관리가 사라짐거버넌스 — IAM 정책·SCP·Bedrock Guardrails로 접근·사용을 조직 차원에서 통제알아둘 제약도 있습니다WebSearch 도구를 사용할 수 없음/logout 명령 없음 (인증이 AWS 자격증명 체계라서)Bedrock 경로의 인증·호출 구조와 거버넌스 레.. 2026. 8. 16.