시작하기
-
핵심 라이브러리 설치
도메인 모델링과 유스케이스 구현에 필요한 핵심 타입(Value Object, Entity,
Fin<T>, CQRS 인터페이스)을 제공합니다. 모든 프로젝트에 필수입니다.Terminal window dotnet add package Functorium -
Source Generator 설치
[GenerateObservablePort],[GenerateEntityId],CtxEnricherGenerator소스 생성기를 제공합니다. Adapter 프로젝트에 추가합니다.Terminal window dotnet add package Functorium.SourceGenerators -
테스트 유틸리티 설치
아키텍처 규칙 검증, 구조화된 로그 테스트 등 테스트 유틸리티를 제공합니다. 테스트 프로젝트에 추가합니다.
Terminal window dotnet add package Functorium.Testing
첫 번째 값 객체 만들기
섹션 제목: “첫 번째 값 객체 만들기”Functorium 설치 후 가장 먼저 시도해볼 수 있는 것은 Always-valid 값 객체입니다. 다음은 이메일 주소를 표현하는 값 객체의 최소 구현입니다.
public sealed partial class Email : SimpleValueObject<string>{ public const int MaxLength = 320;
private Email(string value) : base(value) { }
public static Fin<Email> Create(string? value) => CreateFromValidation(Validate(value), v => new Email(v));
public static Validation<Error, string> Validate(string? value) => ValidationRules<Email> .NotNull(value) .ThenNotEmpty() .ThenNormalize(v => v.Trim().ToLowerInvariant()) .ThenMaxLength(MaxLength);}Create 메서드는 Fin<Email>을 반환합니다. 유효한 입력이면 Email 인스턴스가, 유효하지 않으면 구조화된 에러 코드(DomainErrors.Email.Empty 등)가 반환됩니다. 예외는 발생하지 않습니다.
값 객체의 상세한 구현 패턴은 값 객체 가이드를 참고하세요.
튜토리얼
섹션 제목: “튜토리얼”단계별 실습을 통해 Functorium의 핵심 개념을 학습할 수 있습니다.
| 튜토리얼 | 주제 | 실습 |
|---|---|---|
| 함수형 값 객체 구현 | Value Object, 검증, 불변성 | 29개 |
| 명세 패턴 | Specification, Expression Tree | 18개 |
| CQRS 리포지토리 패턴 | CQRS, Repository, Query 어댑터 | 22개 |
| 유스케이스 파이프라인 제약 | 제네릭 변성, IFinResponse, Pipeline 제약 | 20개 |
| 아키텍처 규칙 테스트 | 아키텍처 규칙, ClassValidator | 16개 |
| 소스 생성기 관측 가능성 | Source Generator, Observable wrapper | — |
| 릴리스 노트 자동화 | AI 자동화, 릴리스 노트 | — |
Observability
섹션 제목: “Observability”Functorium은 OpenTelemetry 기반의 3-Pillar 관측성(Logging, Metrics, Tracing)을 제공합니다.
모든 관측성 필드는 OpenTelemetry 시맨틱 규칙과의 일관성을 위해 snake_case + dot 표기법을 사용합니다.
Command Pipeline(7단계)과 Query Pipeline(8단계)이 모든 유스케이스에 자동으로 계측을 적용하고, CtxEnricher Source Generator가 비즈니스 컨텍스트(ctx.* 필드)를 Logging과 Tracing에 자동 전파합니다.

학습 경로
섹션 제목: “학습 경로”Functorium을 본격적으로 활용하기 위한 학습 경로를 안내합니다.