본문으로 건너뛰기

하네스 엔지니어링

확장 개념 (engineering-playbook 독자 콘텐츠)

온톨로지·하네스 엔지니어링은 AWS Labs AIDLC 공식 방법론 에 포함되지 않은, engineering-playbook 의 독자 확장 콘텐츠입니다. DDD + 2026년 Agentic AI 베스트 프랙티스를 반영해 엔터프라이즈 AI 신뢰성을 강화했습니다. 공식 AIDLC 적용 시 이 축은 선택적으로 도입 가능합니다.

"에이전트가 어려운 게 아니라, 하네스가 어렵다" — NxCode, 2026

개요

**하네스 엔지니어링(Harness Engineering)**은 AIDLC 신뢰성 듀얼 축의 두 번째 축으로, 온톨로지가 정의한 제약을 아키텍처적으로 검증하고 강제하는 구조입니다. 2026년 AI 개발의 핵심 교훈은 다음과 같습니다:

OpenAI Codex가 100만 줄의 코드를 생성할 때, 인간 엔지니어가 작성한 코드는 0줄이었습니다. 엔지니어의 역할은 코드를 쓰는 것이 아니라 하네스를 설계하는 것으로 전환되었습니다.

하네스의 역할:

  • 온톨로지가 정의한 제약을 아키텍처적으로 검증
  • 재시도 예산, 타임아웃, 출력 게이트, 서킷 브레이커 설계
  • 독립적 검증 보장 (코드 생성 에이전트 ≠ 검증 에이전트)
  • 검증 결과를 온톨로지 진화로 피드백

하네스 vs 가드레일

많은 팀이 "가드레일"과 "하네스"를 혼용하지만, 이 둘은 범위와 시점이 근본적으로 다릅니다.

구분가드레일(Guardrails)하네스(Harness)
범위런타임 입출력 필터링아키텍처 전체 설계
역할PII 마스킹, 프롬프트 인젝션 방어재시도 예산, 타임아웃, 출력 게이트, 서킷 브레이커
시점실행 중설계 시점부터
실패 모드개별 요청 차단시스템 전체 보호
예시Bedrock Guardrails, NeMo GuardrailsAIDLC Quality Gates, 독립 검증 에이전트

핵심 차이:

  • 가드레일은 "나쁜 입력을 막는 필터" — 예: 프롬프트 인젝션 탐지, PII 마스킹
  • 하네스는 "AI가 안전하게 동작하도록 제약하는 아키텍처" — 예: 재시도 847번 방지, 비용 폭주 차단

Fintech Runaway 사례: 하네스 없는 AI의 실패

실제 사례: $2,200 손실 사건

한 핀테크 스타트업의 AI 에이전트가 하나의 루프에서 847번의 API 재시도를 실행하여:

  • $2,200의 LLM API 비용 발생
  • 14개의 불완전한 이메일 고객에게 전송
  • 3시간 동안 서비스 정지 (수동 개입 필요)

원인 분석:

  • ❌ 모델 문제가 아님 (GPT-4를 사용)
  • ❌ 프롬프트 문제가 아님 (프롬프트는 명확했음)
  • 아키텍처적 실패 — 하네스 부재

부재한 하네스 패턴:

  1. 재시도 예산 없음 (무제한 재시도)
  2. 타임아웃 없음 (루프 무한 실행 가능)
  3. 출력 게이트 없음 (불완전 이메일 전송 차단 실패)
  4. 서킷 브레이커 없음 (847번 실패 후에도 계속 시도)
  5. 비용 제한 없음 ($2,200 청구 전까지 알림 없음)

교훈: AI 시스템의 실패는 대부분 모델이나 프롬프트가 아니라 아키텍처 설계 부재에서 발생합니다.


AIDLC 3단계별 하네스 패턴

단계하네스 유형검증 대상구현 방법
InceptionSpec 검증 하네스요구사항 완전성, 상충 여부, NFR 충족온톨로지 기반 Spec 일관성 자동 검증
Construction빌드/테스트 하네스코드 정확성, 보안, 아키텍처 준수독립 에이전트 리뷰 + 온톨로지 위반 탐지
Operations런타임 하네스AI Agent 행동 제약, 비용 제한서킷 브레이커, 재시도 예산, 출력 게이트

하네스 패턴 카탈로그

1. 서킷 브레이커(Circuit Breaker)

목적: 반복적 실패 시 추가 시도를 차단하여 시스템 전체 보호

패턴:

circuit_breaker:
failure_threshold: 5 # 5번 실패 시 Open
timeout: 60s # 60초 후 Half-Open
success_threshold: 2 # 2번 성공 시 Closed

적용 사례:

  • LLM API 호출 (Bedrock, OpenAI)
  • 외부 서비스 연동 (결제, 이메일)
  • Agent 간 통신 (다중 에이전트 시스템)

2. 재시도 예산(Retry Budget)

목적: 무제한 재시도 방지, 전체 비용 제어

패턴:

retry_budget:
max_attempts: 3 # 최대 3회 재시도
backoff: exponential # 지수 백오프
max_backoff: 30s # 최대 30초 대기
budget_limit: 10 # 시간당 10회 재시도 허용

Fintech Runaway 방지:

  • ✅ 847번 재시도 → 3번으로 제한
  • ✅ 즉시 재시도 → 지수 백오프 (1s, 2s, 4s)
  • ✅ $2,200 비용 → 최대 $50 제한

3. 타임아웃(Timeout)

목적: 무한 루프 방지, 응답 시간 보장

패턴:

timeout:
request: 30s # 단일 요청 타임아웃
total: 300s # 전체 작업 타임아웃
idle: 60s # 무응답 시 타임아웃

적용 사례:

  • LLM 추론 (30초 초과 시 중단)
  • 코드 생성 (전체 5분 제한)
  • 테스트 실행 (Idle 1분 초과 시 종료)

4. 출력 게이트(Output Gate)

목적: 불완전하거나 유해한 출력 차단

패턴:

output_gate:
validators:
- syntax_check # 코드 구문 검증
- schema_validation # JSON 스키마 검증
- pii_detection # PII 탐지 및 마스킹
- toxicity_filter # 유해 콘텐츠 필터
action_on_failure: reject # 실패 시 출력 거부

Fintech Runaway 방지:

  • ✅ 불완전 이메일 14개 → 출력 게이트에서 차단
  • ✅ PII 노출 방지
  • ✅ 유해 콘텐츠 필터링

5. PII 마스킹(PII Masking)

목적: 민감 정보 보호 (입출력 모두)

패턴:

pii_masking:
patterns:
- email: "***@***.***"
- ssn: "***-**-****"
- credit_card: "****-****-****-****"
redact_in_logs: true # 로그에서도 마스킹

6. 프롬프트 인젝션 방어(Prompt Injection Defense)

목적: 악의적 프롬프트 차단

패턴:

prompt_injection_defense:
techniques:
- instruction_hierarchy # 시스템 프롬프트 우선순위
- delimiter_isolation # 구분자로 사용자 입력 격리
- output_validation # 출력 스키마 검증

7. 비용 제한(Cost Limit)

목적: LLM API 비용 폭주 방지

패턴:

cost_limit:
per_request: 0.50 # 요청당 $0.50 제한
per_hour: 10.00 # 시간당 $10 제한
per_day: 100.00 # 일일 $100 제한
alert_threshold: 0.80 # 80% 도달 시 알림

Quality Gates — 전 단계 품질 보증

AI-DLC에서 사람 검증은 Loss Function입니다 — 각 단계에서 오류를 조기에 포착하여 하류 전파를 방지합니다. Quality Gates는 이 Loss Function을 체계화한 것입니다.

Inception          Construction          Operations
│ │ │
▼ ▼ ▼
[Mob Elaboration [DDD Model [배포 전 검증]
산출물 검증] 검증]
│ │ │
▼ ▼ ▼
[Spec 정합성] [코드 + 보안 스캔] [SLO 기반 모니터링]
│ │ │
▼ ▼ ▼
[NFR 충족 여부] [테스트 커버리지] [AI Agent 대응 검증]

🛡️ Quality Gates

AI 주도 다중 검증 레이어

AI 코드 리뷰 검증 항목

코드 품질
Q Developer, Copilot
코딩 표준, 복잡도, 중복
보안 스캔
Q Developer Security
OWASP Top 10, 시크릿 탐지
IaC 검증
tflint, OPA
Terraform 모범사례, 정책 준수
K8s 검증
Kube-linter, Datree
보안 컨텍스트, 리소스 제한
테스트 커버리지
Go test, pytest
최소 80% 커버리지
성능 회귀
k6, Artillery
레이턴시, 처리량 기준

자동 승인 기준

조건
자동 승인
수동 리뷰 필요
보안 스캔 결과
Critical/High 0건
Critical/High 1건 이상
테스트 커버리지
≥ 80%
< 80%
K8s 검증
경고 0건
경고 1건 이상
성능 회귀
P99 < SLO 목표
P99 > SLO 목표
변경 범위
< 500줄
≥ 500줄
주의: AI 코드 리뷰는 패턴 기반 문제를 잘 탐지하지만, 비즈니스 로직의 정확성이나 아키텍처 적합성은 사람의 판단이 필요합니다. AI 리뷰를 1차 필터로 활용하고, 핵심 변경사항은 사람이 최종 검토하는 하이브리드 접근을 권장합니다.

AI 기반 PR 리뷰 자동화

전통적 코드 리뷰는 린트 규칙과 정적 분석에 의존하지만, AI 기반 리뷰는 아키텍처 패턴, 보안 모범 사례, 비즈니스 로직 정합성까지 검증합니다.

검증 항목

1. DDD 패턴 준수

  • Aggregate 캡슐화 위반 탐지
  • Entity 직접 수정 방지
  • Value Object 불변성 검증

예시:

// ❌ 위반: Aggregate 외부에서 Entity 직접 수정
func UpdateUserEmail(userID string, email string) error {
user, _ := userRepo.FindByID(userID)
user.Email = email // ❌ Entity 직접 수정
return userRepo.Save(user)
}

// ✅ 권장: Aggregate 메서드를 통한 수정
func UpdateUserEmail(userID string, email string) error {
user, _ := userRepo.FindByID(userID)
return user.ChangeEmail(email) // ✅ Aggregate 메서드 사용
}

2. 마이크로서비스 통신

  • 동기 호출: gRPC 사용
  • 비동기 이벤트: SQS/SNS 사용
  • 외부 API: HTTP REST (OpenAPI spec 필수)

3. 관찰성

  • 모든 핸들러에 OpenTelemetry 계측
  • 비즈니스 메트릭은 Prometheus 커스텀 메트릭으로 노출
  • 구조화된 로깅 (JSON 형식, contextual fields 포함)

4. 보안

  • 인증: JWT (HS256 금지, RS256 사용)
  • 민감 정보: AWS Secrets Manager에서 조회
  • SQL 쿼리: Prepared Statement 사용 (문자열 연결 금지)

독립 검증 원칙

같은 에이전트의 테스트 함정

"같은 AI 에이전트가 작성한 테스트는 같은 에이전트의 오류를 잡지 못한다" — 이는 AI가 숙제를 스스로 채점하는 것과 같습니다.

증상:

  • 테스트가 통과 ✅
  • CI가 녹색 ✅
  • PR 머지 완료 ✅
  • 3일 후 기능이 반만 동작

원인:

  • 테스트가 '완료'에 최적화되었지 '정확성'에 최적화되지 않음
  • 코드 생성 에이전트와 테스트 생성 에이전트가 동일
  • 같은 편향(bias)을 공유

해결: 독립적 검증 하네스

구현 원칙:

  1. 다른 에이전트 사용 — 코드 생성 ≠ 테스트 생성
  2. 다른 모델 사용 — GPT-4 생성 → Claude 검증
  3. 사람 검증 — 핵심 로직은 사람이 최종 승인

하네스 설계 체크리스트

AIDLC 3단계별 하네스 패턴 체크리스트:

Inception 하네스

  • Spec 일관성 자동 검증
  • NFR 충족 여부 확인
  • 온톨로지 위반 탐지
  • 요구사항 상충 검사

Construction 하네스

  • 빌드 자동화 (CI/CD)
  • 테스트 커버리지 80% 이상
  • 보안 스캔 (SAST, SCA)
  • 아키텍처 패턴 검증
  • 독립 에이전트 리뷰
  • Quality Gates 통과

Operations 하네스

  • 서킷 브레이커 구현
  • 재시도 예산 설정
  • 타임아웃 정의
  • 출력 게이트 활성화
  • PII 마스킹
  • 프롬프트 인젝션 방어
  • 비용 제한 설정
  • SLO 기반 알림

참고 자료

외부 참조