ARD-0001 — V8 최적화 정렬 및 2026 아키텍처 동향 반영
| 항목 | 내용 |
|---|---|
| 날짜 | 2026-03-20 |
| 상태 | 완료 |
| 결정자 | 2davi |
배경
ARD-0000의 구현이 완료된 후, 이 라이브러리가 2026년 프런트엔드 생태계에서 어떤 포지셔닝을 가져야 하는지와 구체적인 최적화 방향을 재검토하였다.
검토 항목
Signals 기반 상태 관리와의 비교
2025/2026년 프런트엔드 생태계는 Signals(SolidJS, Angular Signals)와 Zustand, Jotai 같은 경량 원자 스토어가 주류를 이루고 있다. Signals는 UI 컴포넌트의 가시성 또는 로컬 상태를 원시 값 수준에서 추적하고 렌더링을 최적화하는 데 탁월하다.
결론: 이 라이브러리의 지향점은 다르다. 백엔드에서 내려온 깊게 중첩된 JSON DTO를 온전히 유지하면서 그 내부 프로퍼티 변화를 추적하고 HTTP 메서드를 분기하는 것은, 아키텍처적으로 Proxy 패턴이 합리적인 선택이다. 이 라이브러리는 UI 프레임워크를 대체하는 것이 아니라, 백엔드와의 데이터 동기화 계층(Data Layer) 에서 동작하는 솔루션이라는 포지셔닝을 유지한다.
Dual Package 문제
CJS와 ESM 듀얼 패키지를 지원할 경우, 같은 패키지가 두 번 로드되어 두 개의 BroadcastChannel 인스턴스가 생성되는 Dual Package Hazard 가 발생할 수 있다. Node.js 22부터는 ESM을 require() 할 수 있으므로 CJS 지원의 필요성이 줄었다.
결론: 빌드 결과물에 CJS 번들을 유지하되, "type": "module" 선언과 "sideEffects": false 로 소비자 환경에서 ESM이 우선 사용되도록 유도한다.
결정 사항 요약
| ID | 결정 | 문서 |
|---|---|---|
| IMPL-001 | Dirty Checking 기반 HTTP 분기 알고리즘 | 상세 → |
| IMPL-002 | Optimistic Update 롤백 메커니즘 | 상세 → |
| IMPL-003 | Microtask 기반 브로드캐스트 배칭 | 상세 → |
| IMPL-004 | 소스 디렉토리 구조 재편 | 상세 → |
| IMPL-005 | CI/CD 파이프라인 구축 | 상세 → |
테스트 케이스 매트릭스
이 결정들의 검증을 위해 45개의 단위 테스트 케이스가 작성되었다. 레이어별 분류: Core(15), Domain(19), Network(4), Plugin(7). 14개 케이스는 VitePress Playground 컴포넌트와 연결되어 문서 내에서 인터랙티브하게 시연된다.
결과
Vitest 79/79 테스트 통과. semantic-release를 통해 v0.7.0으로 NPM 배포 완료.