본문으로 건너뛰기

Caffeine.Infrastructure API

Caffeine Framework 인프라 서비스 등록 및 사용법 레퍼런스입니다.

네임스페이스: Caffeine.Infrastructure .NET 버전: .NET 10.0

DI 등록​

Program.cs 또는 Startup.cs에서 서비스를 등록합니다.

// 인프라 서비스 일괄 등록
builder.Services.AddCaffeineInfrastructure(builder.Configuration);

// 복원력 정책 등록 (Polly)
builder.Services.AddCaffeineResilience();

주요 서비스​

서비스역할파이프라인 키
InfluxDB시계열 데이터 저장"influxdb"
Redis캐시 & 스트림"redis"
TypeDB지식 그래프"typedb"
SQLite + EF Core관계형 데이터—

연결 설정 (appsettings.json)​

{
"InfluxDB": {
"Url": "http://localhost:8086",
"Token": "...",
"Org": "nexcode",
"Bucket": "caffeine"
},
"Redis": {
"ConnectionString": "localhost:6379"
}
}

FIR-014 AddCaffeineInfrastructure​

v2.1.4에서 추가된 라이선스 검증 인프라 통합 메서드입니다.

builder.Services.AddCaffeineInfrastructure(builder.Configuration);
// 라이선스 검증 서비스가 자동 포함됩니다.
내부 구현 상세

서비스 매핑 내부, Null Object Pattern 적용 범위, 각 어댑터 구현 상세는 내부 문서를 참조하세요.


FIR-046: InfraOptions — 선택적 Feature Module​

v2.3.0 신규 — AddCaffeineInfrastructure(config, Action<InfraOptions>?) overload

기본 overload(config만 전달)는 기존 동작과 동일합니다. Action<InfraOptions> delegate를 추가하면 필요한 모듈만 활성화할 수 있습니다.

// 기본 (하위 호환 — 전체 모듈 등록)
builder.Services.AddCaffeineInfrastructure(builder.Configuration);

// 선택적 활성화
builder.Services.AddCaffeineInfrastructure(builder.Configuration, opt =>
{
opt.UseInfluxDb = false; // TimescaleDB로 교체 예정
opt.UseTypeDb = true;
opt.UseMessaging = false; // Kafka 미사용 환경
});

InfraOptions 플래그 전체 목록​

플래그기본값설명
UseInfluxDbtrueInfluxDB 클라이언트 및 TraceWriter 등록
UseTimescaleDbfalseTimescaleDB 어댑터 (FIR-042 Phase C, v2.4.x 이후 지원)
UseTypeDbtrueTypeDB 지식 그래프 등록
UseRedistrueRedis 클라이언트 등록
UseMessagingtrueKafka / EventBus / MessageProducer 등록
UseMachineLearningtrueML.NET 기반 예지 보전 서비스 등록
UseAlertingtrue알림 · 중복 제거 · Silence · Notification Channel 등록
UseResiliencetruePolly Resilience Pipeline (Keyed Service) 등록
UseGovernancetrueAudit / Retention / PII 스캐너 등록
UseObservabilitytrueOpenTelemetry / Prometheus Exporter 등록
UseZonestrueZone 관리 서비스 등록
UseSensingtrue센서 수집 파이프라인 등록

상호 의존성 규칙​

InfraOptionsValidator가 DI 등록 시점에 자동 검증합니다.

조건수준설명
UseAlerting=true && UseRedis=falseErrorAlertDeduplicator가 Redis 분산 락을 요구
UseTimescaleDb=trueErrorv2.3.0에서는 어댑터 미구현 — FIR-042 Phase C 대기
UseInfluxDb=false && UseTimescaleDb=falseWarning시계열 저장소 없음 — TraceWriter no-op 동작
UseMachineLearning=true && UseObservability=falseWarningML 추론 메트릭이 OpenTelemetry로 전송되지 않음

Error 수준 위반은 InvalidOperationException을 던지고 애플리케이션 시작을 차단합니다.