피드로 돌아가기
Dev.toBackend
원문 읽기
Source Generator 기반 Code-First Rule Engine 아키텍처
Muonroi Building Block: an open-core .NET foundation for rule engines, decision tables, and multi-tenancy
AI 요약
Context
JSON 기반 동적 표현식 평가 방식의 기존 Rule Engine이 가진 런타임 타입 불안정성과 과도한 Boilerplate 코드 생성 문제 분석. 비즈니스 룰의 잦은 변경과 복잡한 의존성 관리로 인한 배포 주기 지연 및 검증 프로세스 부재 해결 필요.
Technical Solution
- MExtractAsRule 속성을 활용한 C# 기반 Rule 정의와 Source Generator를 통한 DI 등록 코드 자동 생성으로 개발 생산성 향상
- FactBag 기반의 공유 상태 관리 구조를 통한 Rule 간 데이터 전달 및 상호작용 최적화
- Unique, Any, First 등 다양한 Hit Policy를 지원하는 Decision Table 엔진 구현으로 결정 로직의 결정론적 평가 보장
- CLI Toolchain(RuleGen)을 통한 런타임 이전의 Rule 의존성 검증 및 정적 분석 단계 도입으로 시스템 안정성 확보
- OSS와 Commercial 패키지의 명확한 경계 설계를 통한 Open-core 비즈니스 모델의 기술적 구현
- IMRuleOrchestrator 중심의 실행 파이프라인 설계를 통한 Rule 실행 순서 및 의존성 제어
실천 포인트
- Rule 정의 시 런타임 에러 방지를 위해 Source Generator 기반의 정적 검증 단계 도입 검토 - 복잡한 비즈니스 분기 처리 시 JSON 설정보다 Type-safe한 Code-first 접근 방식 적용 고려 - Multi-tenancy 환경에서 테넌트별 리소스 격리와 컨텍스트 해결을 위한 공통 기반 라이브러리 설계 적용 - 룰 간 데이터 공유가 필요한 경우 FactBag과 같은 Shared State 패턴 활용