본문으로 건너뛰기

아키텍처 의사결정 기록

Functorium 프레임워크의 주요 아키텍처 의사결정을 기록합니다. 각 결정은 MADR v4.0 템플릿을 따르며, 결정의 맥락, 검토한 대안, 선택 근거, 예상되는 결과를 구조화합니다.

아키텍처 결정은 코드와 커밋 메시지에 흩어지면 시간이 지날수록 “왜 이렇게 했는가”를 추적하기 어렵습니다. ADR은 결정 시점의 맥락을 보존하여, 새로운 팀원이 합류하거나 기존 결정을 재검토할 때 판단 근거를 빠르게 파악할 수 있게 합니다.

상태설명
accepted채택되어 현재 적용 중인 결정
proposed제안되었으나 아직 합의되지 않은 결정
deprecated더 이상 유효하지 않은 결정
superseded새로운 ADR로 대체된 결정
번호제목상태
ADR-0001Foundation - 예외 대신 Fin 타입으로 실패 표현accepted
ADR-0002Foundation - LanguageExt를 함수형 기반 라이브러리로 채택accepted
ADR-0003Domain - CQRS 읽기/쓰기 경로 분리accepted
ADR-0004Domain - Ulid 기반 Entity IDaccepted
ADR-0005Domain - UnionValueObject 상태 머신accepted
ADR-0006Domain - Specification + Expression Treeaccepted
ADR-0007Domain - Aggregate 간 ID 전용 참조accepted
ADR-0008Domain - Domain Service 순수 vs Repositoryaccepted
ADR-0009Domain - Value Object Class/Record 이중 계층accepted
ADR-0010Domain - 에러 코드 sealed record 계층accepted
ADR-0011Application - Pipeline 실행 순서 설계accepted
ADR-0012Application - FinResponse Pipeline 타입 제약accepted
ADR-0013Application - 검증 순서 Normalize → MaxLengthaccepted
ADR-0014Application - 명시적 트랜잭션 지원accepted
ADR-0015Adapter - Observable Port Source Generator 도입accepted
ADR-0016Adapter - 영속성 접미사 네이밍 패턴accepted
ADR-0017Observability - ctx.* Pillar 타겟팅 기본값accepted
ADR-0018Observability - 에러 3종 자동 분류accepted
ADR-0019Observability - 관측성 필드 네이밍 snake_case + dotaccepted
ADR-0020Event - DomainEvent Publisher 단순화accepted
ADR-0021Event - DomainEvent 추적 상관관계 IDaccepted
ADR-0022Testing - 아키텍처 테스트 Suite 프레임워크accepted