Summary
- Strimzi와 KRaft 기반 Kafka를 구성하고 Notiflex API를 Producer, Consumer로 연결해 이벤트 드리븐 처리 도입
- OpenTelemetry SDK와 Tempo를 연동해 HTTP 요청부터 Valkey, Kafka까지 이어지는 분산 트레이스 구성
- Kubernetes CronJob으로 /health를 주기적으로 호출하는 배치 작업 자동화
- 복잡해진 운영 절차를 command-guardrails/에 명시적인 실행 순서와 검증 기준으로 기록
Thoughts
- command-guardrails/로 위험명령시 사전 확인 > 실행 > 사후 검증의 절차를 명시적으로 반복사용가능
- prompt-guardrails 보다 가볍게 주제/이슈 위주로 설정하는 식으로 작은 시작 가능
8장. 고도화
- 서비스가 발전하며 아래 3가지 문제 발생
- 동기식 API 지연: api서버가 알림을 직접 처리하는 구조, 요청이 몰리면 응답 지연 및 타임아웃 발생
- 서비스간 가시성: 서비스가 많아지며 장애구간 확인의 어려움
- 수동 작업: 일일 통계, 알림 재처리등은 수동으로 진행
- 다음 3가지 구조를 추가하여 개선
- 이벤트 드리븐: kafka를 도입하여 비동기 메세지 처리
- 분산 트레이싱: Tempo를 사용하여 api 요청 간 성능 확인
- 배치작업: k8s native CronJob 활용
8.1 이벤트 드리븐: 카프카
- /id 요청을 처리한 API가 Kafka에 이벤트를 발행하고 Consumer가 비동기로 처리하는 구조 구성
8.1.1 클로드 코드에게 메시지 큐 물어보기
- cc에게
API 요청을 비동기로 처리하는 방식 탐색질문- 대용량 이벤트 스트림과 Consumer 확장, 재처리를 지원하는 Apache Kafka 추천
- Kubernetes에서는 Kafka, KafkaTopic CRD로 선언적 관리가 가능한 Strimzi Operator 조합 제안
API 요청을 비동기로 처리하는 방식 탐색

8.1.2 다른 도구는 없는지 비교해보기
- cc에게
Kafka외에 다른 메세지큐를 현재 환경 기반 비교요청- Kafka는 높은 처리량, 파티션, Consumer Group, 이벤트 보존에 강점이 있으나 운영 복잡도 존재
- RabbitMQ는 전통적 Queue 처리, NATS는 가벼운 통신, Redis Streams는 기존 Redis 활용에 적합
- GitOps 관리와 향후 이벤트 증가를 고려해 Strimzi Kafka와 KRaft 모드 추천
Kafka외에 다른 메세지큐를 현재 환경 기반 비교

8.1.3 카프카를 설치하고 이벤트 드리븐 구성하기
- cc에게
kafka 구성 시작요청- kafka Namespace에 Strimzi Operator를 설치하고 worker-pool에 배치
- operator 동작을 위한한 KafkaNodePool, Broker, Topic 추가
- Go 애플리케이션에 Kafka Producer/Consumer 추가
- 배포 후 /id 호출마다 notifications 토픽에 이벤트가 발행되고 Consumer 로그에 동일 ID가 나타나는지 확인
kafka 구성 시작

8.2 분산 트레이싱: 템포
- 하나의 요청이 API,Valkey,Kafka 등을 사용하게 되면서 장애 및 지연 구간 확인의 어려움
- 단일 요청이 각 구간을 거치는 시간과 실패 지점을 하나의 Trace로 연결
8.2.1 클로드 코드에게 분산 트레이싱 도구 물어보기
- cc에게
api 요청 지연의 추적방법질문- 요청시 지연과 실패를 추적하는 분산 트레이싱과 현재 환경에선 Grafana tempo 권장
api 요청 지연의 추적방법

8.2.2 다른 도구는 없는지 비교해보기
- cc에게
다른 트레이싱 도구와 tempo의 비교요청- Tempo는 Grafana와 바로 연동되고 Trace ID 중심 저장으로 현재 환경에 적합
- Jaeger는 기능이 풍부하지만 Collector, 스토리지 운영 요소 증가
- Zipkin은 단순하지만 OpenTelemetry 중심 구성과 확장성에서 제한되어 Tempo 추천
다른 트레이싱 도구와 tempo의 비교

8.2.3 템포 설치하고 트레이싱 설정하기
- cc에게
tempo 구성하고 tracing 설정요청- Tempo를 monitoring ns 의 ops-pool에 설치하고 OTLP gRPC 4317 수신 활성화/Gafana 등록
- Go 앱에 OpenTelemetry SDK와 OTLP gRPC Exporter를 추가하고 Tempo 주소 주입
- 배포 후 /id 요청에서 handle-id > valkey-incr > kafka-produce > http-response Span 확인
tempo 구성하고 tracing 설정

8.3 배치 자동화: 크론잡
- 사람이 반복 실행하던 상태 확인(헬스체크)을 Kubernetes 스케줄러가 주기적으로 수행하도록 자동화
8.3.1 클로드 코드에게 주기적 작업 방법 물어보기
- cc에게
API health check 자동화 방법질문- 추가 Controller가 필요 없고 GitOps로 관리 가능한 단순 단일 작업은 CronJob 제안
- 복잡한 DAG는 Argo Workflows, 데이터 파이프라인은 Airflow가 적합
API health check 자동화 방법

8.3.2 크론잡 생성하기
- cc에게
서비스 헬스체크하는 k8s 크론잡 구현요청- 5분마다 실행하고 중복 실행을 금지하며 성공, 실패 이력을 각각 3개 보존
- curlimages/curl 컨테이너를 ops-pool에 배치해 내부 Service의 /health가 HTTP 200인지 확인
- CronJob을 적용한 뒤 즉시 생성한 테스트 Job의 완료 조건과 로그 검증
- 수동 테스트와 실제 스케줄 Job 모두 Health check passed (HTTP 200) 및 {“status”:”ok”} 확인
서비스 헬스체크하는 k8s 크론잡 구현

8.4 마무리: command-guardrails/로 위험 작업 절차 정리
- 복잡한 작업을 단순 금지하는 대신 실행 전 확인, 적용 순서, 검증, 롤백 절차를 저장소에 명문화
8.4.1 시스템이 복잡해지면
- App of Apps, 노드풀, 테넌트, Kafka, Tempo까지 연결되면서 한 명령의 영향 범위 확대
- KafkaTopic 삭제처럼 데이터 손실 가능성이 있는 작업은 경우에 따라 실제로 필요할 수도 있음
- 실행제어가 아닌, 작업순서/확인/실행의 과정을 규칙화
8.4.2 command-guardrails/ 작성
- cc에게 command-guardrails/로 위험 작업(카프카 토픽등 데이터 삭제, 크론잡 수동 실행, 테넌트 리소스 정리) 실행 절차를 정의 요청
- Kafka Topic 삭제 전 Consumer lag, 보존 데이터, Producer 사용 여부 확인 절차 작성
- 변경 대상, 사전 조건, 승인 지점, 실행 명령, 검증과 복구 방법을 한 문서에 연결
- 위험 명령 자체보다 안전하게 실행하기 위한 맥락과 순서를 저장소에서 버전 관리
command-guardrails/로 위험 작업(카프카 토픽등 데이터 삭제, 크론잡 수동 실행, 테넌트 리소스 정리) 실행 절차를 정의

8.4.3 7장 settings.local.json 체험과의 비교
- settings.local.json은 로컬 환경에서 명령 패턴을 허용, 승인, 차단하는 기술적 권한 제어
- command-guardrails/는 팀 전체가 공유하는 판단 기준과 단계별 운영 절차
- 권한 파일로 위험 실행을 막고 가드레일 문서로 필요한 작업을 올바르게 수행하는 상호 보완 관계
- /update-docs로 JOURNEY.md, ADR, claude-context/와 새 command-guardrails/ 반영
8.5 8장 가드레일 살펴보기
| 세부챕터 | 유형 | 참조 파일 | 역할 |
|---|---|---|---|
| 8.1 탐색/비교 | 탐색과 비교 | decision-guides/ch8/8.1-messaging.md | Kafka 추천 + RabbitMQ/NATS 비교 |
| 8.1 실행 | 실행 | prompt-guardrails/ch8/8.1-kafka.md | Strimzi 설치 + Producer/Consumer 구성 |
| 8.2 탐색/비교 | 탐색과 비교 | decision-guides/ch8/8.2-tracing.md | Tempo 추천 + Jaeger/Zipkin 비교 |
| 8.2 실행 | 실행 | prompt-guardrails/ch8/8.2-tempo.md | Tempo 설치 + OpenTelemetry SDK |
| 8.3 탐색 | 탐색 | decision-guides/ch8/8.3-cronjob.md | CronJob 소개 (라이트 가이드) |
| 8.3 실행 | 실행 | prompt-guardrails/ch8/8.3-cronjob.md | CronJob 생성 + 동작 확인 |
| 8장 마무리 | 실행 | prompt-guardrails/ch8/command-guardrails-example.md | command-guardrails/ 절차서 신설 (Kafka Topic 삭제 / CronJob 수동 실행 / 테넌트 Namespace 삭제) |
