본문으로 건너뛰기

AI Model Governance

EU AI Act(2024년 발효, 2026년 전면 시행)는 AI 시스템을 위험 등급별로 분류하고, 고위험 AI에 대해 적합성 평가, 배포 후 모니터링, 인시던트 보고를 의무화합니다. 이 예제는 EU AI Act의 핵심 요구사항을 단일 바운디드 컨텍스트 내에서 DDD 전술적 패턴과 Functorium 프레임워크로 구현합니다.

예제레이어도메인핵심 학습
designing-with-typesDomain연락처 관리Value Object, Aggregate Root
ecommerce-dddDomain + Application전자상거래CQRS, FinT LINQ, Apply 패턴
ai-model-governance (본 예제)Domain + Application + AdapterAI 모델 거버넌스IO 고급 기능, 관측성, 풀스택 DDD

본 예제는 세 번째이자 마지막 예제로, Domain/Application 레이어에서 다룬 패턴 위에 Adapter 레이어의 LanguageExt IO 고급 기능(Retry, Timeout, Fork, Bracket)과 OpenTelemetry 3-Pillar 관측성을 추가합니다.

이 예제는 functorium-develop 플러그인 v0.4.0의 7단계 워크플로를 따릅니다.

단계스킬문서설명
0project-spec프로젝트 요구사항 명세PRD: KPI, 유비쿼터스 언어, Aggregate 후보, 수락 기준
1architecture-design아키텍처 설계프로젝트 구조, DI 전략, 관측성 파이프라인
2-4domain-develop도메인 트랙VO, Aggregate, Domain Service, Specification
2-4application-develop애플리케이션 트랙CQRS UseCase, Port, Event Handler
2-4adapter-develop어댑터 트랙Repository, External Service, HTTP API
5observability-develop관측성 트랙대시보드, 알림, ctx.* 전파
6test-develop(테스트 코드 포함)단위 테스트 268개, 통합 테스트
DDD 개념Functorium 타입적용
Value ObjectSimpleValueObject<T>, ComparableSimpleValueObject<T>ModelName, ModelVersion, EndpointUrl, DriftThreshold 등
Smart EnumSimpleValueObject<string> + HashMapRiskTier, DeploymentStatus, IncidentStatus, AssessmentStatus 등
EntityEntity<TId>AssessmentCriterion (child entity)
Aggregate RootAggregateRoot<TId>AIModel, ModelDeployment, ComplianceAssessment, ModelIncident
Domain EventDomainEvent18종 (Registered, Quarantined, Reported 등)
Domain ErrorDomainErrorType.CustomInvalidStatusTransition, AlreadyDeleted 등
SpecificationExpressionSpecification<T>12종 (ModelNameSpec, DeploymentActiveSpec 등)
Domain ServiceIDomainServiceRiskClassificationService, DeploymentEligibilityService
RepositoryIRepository<T, TId>4개 Repository 인터페이스
패턴구현적용
CQRSICommandUsecase / IQueryUsecase8 Commands, 7 Queries
Apply Patterntuple.ApplyT()VO 병렬 검증 합성
FinT LINQfrom...in 체이닝비동기 에러 전파
Port/AdapterIQueryPort, IRepository읽기/쓰기 분리
Event HandlerIDomainEventHandler<T>2 Event Handlers
FluentValidationMustSatisfyValidation구문 + 의미 이중 검증

적용된 Adapter 패턴 (IO 고급 기능)

섹션 제목: “적용된 Adapter 패턴 (IO 고급 기능)”
IO 패턴구현 클래스용도
Timeout + CatchModelHealthCheckService헬스 체크 타임아웃 처리
Retry + ScheduleModelMonitoringService외부 API 재시도 (지수 백오프)
Fork + awaitAllParallelComplianceCheckService병렬 컴플라이언스 체크
BracketModelRegistryService리소스 수명 관리 (세션)
패턴구현적용
Observable Port[GenerateObservablePort] + Source GeneratorRepository 10, Query 5, External Service 4
Pipeline 미들웨어UseObservability() + 명시적 opt-inMetrics, Tracing, CtxEnricher, Logging, Validation, Exception
DomainEvent 관측성ObservableDomainEventNotificationPublisher18종 DomainEvent 발행/처리 관측
ctx.* 전파[CtxTarget] + CtxPillarMetricsTag(2), MetricsValue(1), Default(8+), Logging(2)
단계문서설명
0. 요구사항도메인 비즈니스 요구사항비즈니스 규칙, 상태 전이, 교차 도메인 규칙
1. 설계도메인 타입 설계 의사결정Aggregate 식별, 불변식 분류, Functorium 패턴 매핑
2. 코드도메인 코드 설계VO, Smart Enum, Aggregate, Domain Service 코드
3. 결과도메인 구현 결과타입 수 현황, 폴더 구조, 테스트 현황
단계문서설명
0. 요구사항애플리케이션 비즈니스 요구사항워크플로우 규칙, 이벤트 반응형 흐름
1. 설계애플리케이션 타입 설계 의사결정Command/Query/Port 식별, ApplyT, FinT 컴포지션
2. 코드애플리케이션 코드 설계Command Handler, Event Handler 코드
3. 결과애플리케이션 구현 결과UseCase/Port 현황, 적용 패턴 요약
단계문서설명
0. 요구사항어댑터 기술 요구사항영속성, 외부 서비스, HTTP API, 관측성 요구사항
1. 설계어댑터 타입 설계 의사결정IO 패턴 선택 근거, Observable Port 설계
2. 코드어댑터 코드 설계IO 고급 패턴, DI 등록 코드
3. 결과어댑터 구현 결과엔드포인트, 구현체, 테스트 현황
단계문서설명
0. 요구사항관측성 비즈니스 요구사항3-Pillar 요구사항, SLO targets
1. 설계관측성 타입 설계 의사결정KPI-메트릭 매핑, ctx.* 전파 전략
2. 코드관측성 코드 설계L1/L2 대시보드, 알림 규칙, PromQL
3. 결과관측성 구현 결과Observable Port, Pipeline, IO 패턴 현황
samples/ai-model-governance/
├── AiModelGovernance.slnx # 솔루션 파일 (8 프로젝트)
├── 00-project-spec.md # 프로젝트 요구사항 명세
├── 01-architecture-design.md # 아키텍처 설계
├── domain/ # 도메인 레이어 문서 (4개)
├── application/ # 애플리케이션 레이어 문서 (4개)
├── adapter/ # 어댑터 레이어 문서 (4개)
├── observability/ # 관측성 문서 (4개)
├── Src/
│ ├── AiGovernance.Domain/
│ │ ├── SharedModels/Services/ # Domain Services
│ │ └── AggregateRoots/
│ │ ├── Models/ # AIModel, VOs, Specs
│ │ ├── Deployments/ # ModelDeployment, VOs, Specs
│ │ ├── Assessments/ # ComplianceAssessment, AssessmentCriterion, VOs, Specs
│ │ └── Incidents/ # ModelIncident, VOs, Specs
│ ├── AiGovernance.Application/
│ │ └── Usecases/
│ │ ├── Models/ # Commands, Queries, Ports
│ │ ├── Deployments/ # Commands, Queries, Ports
│ │ ├── Assessments/ # Commands, Queries, EventHandlers
│ │ └── Incidents/ # Commands, Queries, EventHandlers
│ ├── AiGovernance.Adapters.Persistence/
│ │ ├── Models/ # Repository, Query (InMemory + EfCore)
│ │ ├── Deployments/
│ │ ├── Assessments/
│ │ ├── Incidents/
│ │ └── Registrations/ # DI 등록
│ ├── AiGovernance.Adapters.Infrastructure/
│ │ ├── ExternalServices/ # IO 고급 기능 데모 (4종)
│ │ └── Registrations/ # DI 등록
│ ├── AiGovernance.Adapters.Presentation/
│ │ ├── Endpoints/ # FastEndpoints (15종)
│ │ └── Registrations/ # DI 등록
│ └── AiGovernance/ # Host (Program.cs)
└── Tests/
├── AiGovernance.Tests.Unit/ # 단위 테스트
└── AiGovernance.Tests.Integration/ # 통합 테스트
Terminal window
# 빌드
dotnet build Docs.Site/src/content/docs/samples/ai-model-governance/AiModelGovernance.slnx
# 테스트 (268개)
dotnet test --solution Docs.Site/src/content/docs/samples/ai-model-governance/AiModelGovernance.slnx
항목수량
Aggregate Root4
Value Object16 (문자열 6, 비교 가능 2, Smart Enum 8)
Domain Service2
Specification12
Domain Event18
Command8
Query7
Event Handler2
HTTP Endpoint15
Observable Port19
IO 고급 패턴4 (Timeout, Retry, Fork, Bracket)
총 테스트268