AIDLC Adaptive Execution
📅 작성일: 2026-04-18 | ⏱️ 읽는 시간: 약 20분
1. 개요: 왜 Adaptive 인가
AWS Labs AIDLC Workflows 는 고정 워크플로가 아닌 조건부(adaptive) 실행을 기본으로 합니다. 전통적 SDLC 의 단계가 "항상 순차 실행" 이었 다면, AIDLC 는 프로젝트 특성·코드베이스 상태·요구사항 복잡도에 따라 필요한 stage 만 선택·재정렬합니다.
핵심 메시지:
- Workspace Detection 과 Workflow Planning 은 필수 (항상 실행)
- Reverse Engineering · User Stories · Application Design 은 조건부 (프로젝트 특성에 따라 실행/스킵)
- Requirements Analysis 와 Units Generation 은 거의 항상 실행되나 깊이(Minimal/Standard/Comprehensive) 가 조정됨
"AIDLC is adaptive rather than prescriptive. Each stage's execution is conditional on the workspace state and user needs, allowing teams to skip stages that aren't relevant to their specific project."
2. Inception Phase: 7개 Stage Decision Tree
2.1 Stage 1: Workspace Detection (필수)
목적: 현재 워크스페이스가 Greenfield(신규) 인지 Brownfield(기존 코드베이스 존재) 인지 판별.
실행 조건: 항상 실행 (모든 AIDLC 세션의 시작점)
산출물: .aidlc/workspace.md
## Workspace Detection Result
**Type**: Brownfield
**Primary Language**: TypeScript (72%), Go (18%), YAML (10%)
**Framework**: Next.js 14 (detected from package.json)
**Infrastructure**: EKS 1.35 (detected from k8s/ directory)
**Git**: main branch, 847 commits
**Test Coverage**: 68% (jest coverage report 발견)
2.2 Stage 2: Reverse Engineering (Brownfield 조건)
목적: 기존 코드베이스에서 암묵적 요구사항·도메인 모델·아키텍처 제약을 역공학으로 추출.
실행 조건:
- Workspace Detection 이 Brownfield 또는 Hybrid 인 경우
- 사용자가 "기존 시스템 확장" 을 명시한 경우
스킵 조건:
- Greenfield (코드 없음)
- 사용자가 "새로 작성, 기존 무시" 를 명시한 경우
산출물: .aidlc/reverse-engineering-report.md
2.3 Stage 3: Requirements Analysis (거의 항상 실행, 깊이 조정)
목적: User Request 를 구조화된 Requirements Document 로 정제.
실행 깊이 3가지 레벨:
| 레벨 | 적용 조건 | 포함 요소 | 예상 소요 |
|---|---|---|---|
| Minimal | 버그 수정 · 단순 리팩터링 | FR 목록, 영향 범위 | 10-20분 |
| Standard | 신규 기능 · 기존 기능 확장 | FR, NFR, Acceptance Criteria, 의존성 | 1-3시간 |
| Comprehensive | 신규 서비스 · 아키텍처 변경 | Standard + Risk Analysis, Compliance, Performance Model | 반나절-1일 |
스킵 조건:
- User Request 가 이미 FR/NFR 구조로 제공된 경우 (Content Validation 만 실행)
2.4 Stage 4: User Stories (조건부)
목적: Requirements 를 사용자 관점의 시나리오 (As a X, I want Y, so that Z) 로 변환.
실행 조건:
- 요구사항에 사용자 임팩트 가 명시된 경우 (UX 변화, 워크플로 변화)
- 협업 컨텍스트 가 중요한 경우 (여러 팀·역할이 관여)
- 비즈니스 맥락 을 명확히 해야 하는 경우 (이해관계자 설명 필요)
스킵 조건:
- 순수 인프라·백엔드 변경 (사용자가 직접 인지하지 않음)
- DevOps 자동화 (CI/CD 파이프라인 개선 등)
- 데이터 마이그레이션
2.5 Stage 5: Workflow Planning (필수)
목적: 이번 세션에서 실행할 stage 목록 과 Unit of Work 목록 초안 을 결정.
실행 조건: 항상 실행 (Adaptive 의 핵심)
산출물: .aidlc/workflow-plan.md
## Workflow Plan
**Scope**: Payment Service 결제 수단 확장 (신용카드 → + 간편결제)
**Stages to Execute**:
- [x] workspace_detection (완료)
- [x] reverse_engineering (완료, brownfield)
- [x] requirements_analysis (Standard 레벨)
- [x] user_stories (완료, 4개 스토리)
- [ ] **workflow_planning** (현재)
- [ ] application_design (새 결제 어댑터 서비스 계층 필요 → 실행)
- [ ] units_generation
- [ ] construction (per-unit loop)
**Estimated Units**: 3
1. Payment Adapter Interface
2. KakaoPay Integration
3. TossPayments Integration
**Estimated Duration**: 3-5 day
2.6 Stage 6: Application Design (조건부)
목적: 새 컴포넌트·서비스 계층·아키텍처 패턴 이 필요한 경우 설계 문서 생성.
실행 조건:
- 새 마이크로서비스 · 새 Bounded Context 필요
- 기존 아키텍처의 계층 변경 (예: 모놀리식 → 모듈러 모놀리식 → MSA)
- 크로스커팅 관심사 추가 (예: 인증 계층, Audit 계층)
스킵 조건:
- 기존 서비스 내 기능 추가 (Workflow Planning 에서 기존 Bounded Context 확장 확인)
- UI 변경만
- 설정 변경
2.7 Stage 7: Units Generation (조건부)
목적: Application Design 또는 Requirements 를 여러 Unit of Work (독립 작업 단위) 로 분해.
실행 조건:
- Scope 가 1개의 원자적 변경(< 100줄) 이상인 경우
- 여러 서비스·여러 파일에 걸친 변경
- 병렬 실행 가능한 작업이 존재
스킵 조건:
- 단일 함수 · 단일 파일 수정 → 즉시 Construction 진입 (1개 Unit 자동 생성)
산출물: .aidlc/units/ 디렉터리
.aidlc/units/
unit-001-payment-adapter-interface.md
unit-002-kakaopay-integration.md
unit-003-tosspayments-integration.md
dependencies.md ← Unit 간 의존 그래프
3. Construction Phase: Per-Unit Loop
각 Unit of Work 는 5 sub-stage 를 순차 실행하는 내부 루프를 가집니다.
3.1 Sub-stage 1: Functional Design
목적: Unit 의 입력·출력·비즈니스 규칙 을 명세.
산출물 예시:
## Unit-002: KakaoPay Integration — Functional Design
### Inputs
- OrderID (string, UUID v4)
- Amount (int, KRW, min 100, max 10_000_000)
- UserID (string, UUID v4)
### Outputs
- Success: PaymentToken (string), RedirectURL (string)
- Failure: ErrorCode (enum), ErrorMessage (string)
### Business Rules
- KakaoPay 세션은 15분 내 완료 필요
- 중복 결제 방지: OrderID 기반 idempotency key 사용
- 금액은 KRW 원 단위 정수
3.2 Sub-stage 2: NFR Specification
목적: 해당 Unit 의 비기능 요구사항 을 측정 가능한 형태로 정의.
산출물 예시:
## Unit-002 NFR
| ID | NFR | 지표 | 타겟 |
|----|-----|------|------|
| KP-NFR-001 | 성능 | API latency P99 | < 500ms |
| KP-NFR-002 | 가용성 | 월 가용성 | 99.9% |
| KP-NFR-003 | 보안 | 카드 정보 로깅 | 절대 금지 |
| KP-NFR-004 | 관찰성 | 결제 실패율 대시보드 | Grafana 실시간 |
3.3 Sub-stage 3: Infrastructure Design
목적: Unit 실행에 필요한 인프라 리소스 (EKS Deployment, SQS Queue, Secret 등) 설계.
산출물 예시:
## Unit-002 Infrastructure
resources:
- type: eks.Deployment
name: kakaopay-adapter
replicas: 2
hpa:
min: 2
max: 10
cpu_target: 70
- type: ack.SecretsManager.Secret
name: kakaopay-api-key
rotation: 90d
- type: ack.SQS.Queue
name: kakaopay-retry-dlq
visibility_timeout: 300
3.4 Sub-stage 4: Code Generation
목적: 위 3 sub-stage 산출물을 입력으로 실제 코드 생성.
- TDD 원칙 적용: 테스트 먼저, 구현 나중
- Harness Engineering 제약 준수
- Onthology 용어 일관성 검증
3.5 Sub-stage 5: Build & Test
목적: 생성된 코드를 자동 빌드 + 단위 테스트 + 통합 테스트 실행.
Loss Function 역할:
- Build 실패 → Sub-stage 4 재시도
- Unit Test 실패 → 코드 수정 or 테스트 수정
- Integration Test 실패 → Infrastructure Design 재검토