피드로 돌아가기
Dev.toBackend
원문 읽기
Identity와 Lifecycle 기반의 Adapter 및 Plugin 분리 설계
Adapters vs Plugins in KickJS v5 — Choosing the Right Primitive
AI 요약
Context
KickJS v5에서 기능적 유사성을 가진 defineAdapter와 definePlugin 사이의 모호함으로 인한 설계 혼선 발생. 단순 기능 구현을 넘어 리소스 소유권과 배포 전략에 따른 명확한 구분 기준 정립이 필요한 상황.
Technical Solution
- App-level infrastructure 관리를 위해 Single-instance identity를 보장하는 Adapter 구조 설계
beforeStart와shutdown훅의 대칭성을 통한 Long-lived resource의 안전한 생명주기 관리- 재사용성과 배포를 목적으로
version및peer-version을 포함한 Plugin 추상화 계층 도입 dependsOn기반의 Topological sort를 적용하여 Plugin 간 의존성 및 실행 순서 제어- 기능적 대칭성(Middleware, DI binding 등)을 유지하여 Primitive 선택 변경 시의 전환 비용 최소화
실천 포인트
1. 리소스 소유권 확인: DB Pool 등 단일 인스턴스 보장이 필요한가? (Yes $\rightarrow$ Adapter)
2. 배포 범위 결정: 타 프로젝트나 팀에서 npm 패키지로 설치하여 사용할 가능성이 있는가? (Yes $\rightarrow$ Plugin)
3. 생명주기 필요성: Application Bootstrap 단계의 특정 시점(beforeStart/shutdown)에 정밀한 제어가 필요한가? (Yes $\rightarrow$ Adapter)
4. 구성 방식: 설정값(Config)을 통해 외부 사용자가 커스터마이징하는 형태인가? (Yes $\rightarrow$ Plugin)
태그