본문으로 건너뛰기

시작하기

  1. 핵심 라이브러리 설치

    도메인 모델링과 유스케이스 구현에 필요한 핵심 타입(Value Object, Entity, Fin<T>, CQRS 인터페이스)을 제공합니다. 모든 프로젝트에 필수입니다.

    Terminal window
    dotnet add package Functorium
  2. Source Generator 설치

    [GenerateObservablePort], [GenerateEntityId], CtxEnricherGenerator 소스 생성기를 제공합니다. Adapter 프로젝트에 추가합니다.

    Terminal window
    dotnet add package Functorium.SourceGenerators
  3. 테스트 유틸리티 설치

    아키텍처 규칙 검증, 구조화된 로그 테스트 등 테스트 유틸리티를 제공합니다. 테스트 프로젝트에 추가합니다.

    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 Tree18개
CQRS 리포지토리 패턴CQRS, Repository, Query 어댑터22개
유스케이스 파이프라인 제약제네릭 변성, IFinResponse, Pipeline 제약20개
아키텍처 규칙 테스트아키텍처 규칙, ClassValidator16개
소스 생성기 관측 가능성Source Generator, Observable wrapper
릴리스 노트 자동화AI 자동화, 릴리스 노트

Functorium은 OpenTelemetry 기반의 3-Pillar 관측성(Logging, Metrics, Tracing)을 제공합니다. 모든 관측성 필드는 OpenTelemetry 시맨틱 규칙과의 일관성을 위해 snake_case + dot 표기법을 사용합니다. Command Pipeline(7단계)과 Query Pipeline(8단계)이 모든 유스케이스에 자동으로 계측을 적용하고, CtxEnricher Source Generator가 비즈니스 컨텍스트(ctx.* 필드)를 Logging과 Tracing에 자동 전파합니다.

Functorium Observability

Functorium을 본격적으로 활용하기 위한 학습 경로를 안내합니다.