피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Web Crypto API 기반 Zero-dependency 설계로 Edge Runtime 호환성 확보 및 번들 크기 90% 절감
Why Thousands of Developers Are Mass Migrating to PushForge for Web Push Notifications
AI 요약
Context
기존 web-push 라이브러리의 Node.js 전용 Legacy Crypto API 의존으로 인한 Cloudflare Workers, Vercel Edge 등 Edge Runtime에서의 런타임 에러 발생. Node.js 생태계 중심의 설계가 서버리스 및 엣지 컴퓨팅으로의 인프라 전환 추세와 충돌하며 아키텍처적 병목 지점으로 작용.
Technical Solution
- Node.js 전용 crypto.createECDH 대신 W3C 표준인 Web Crypto API(crypto.subtle)를 채택한 런타임 독립적 구조 설계
- 외부 라이브러리 의존성을 완전히 제거한 Zero-dependency 아키텍처를 통해 Supply Chain Risk 최소화 및 경량화 달성
- HTTP 요청에 필요한 endpoint, headers, body만을 생성하는 buildPushHTTPRequest 함수로 역할을 제한하여 fetch API와의 결합도 낮춤
- JWK(JSON Web Key) 포맷의 Private Key 처리를 통해 다양한 JS 환경 간 키 호환성 및 전송 효율성 확보
- TypeScript Native 설계를 통한 정적 타입 안정성 확보 및 런타임 타입 에러 원천 차단
Impact
- 번들 사이즈 150KB+에서 15KB로 약 90% 감소
- Cloudflare Workers, Vercel Edge, Deno, Bun 등 모든 현대적 Edge Runtime에서 100% 호환성 확보
- 출시 후 마케팅 없이 월 72,500회 이상의 다운로드 기록을 통한 실효성 검증
Key Takeaway
특정 플랫폼 종속적 API보다 웹 표준(Web Standards) 기반 인터페이스를 채택함으로써 인프라 환경 변화에 유연하게 대응하는 런타임 불가지론적(Runtime-agnostic) 설계의 중요성.
실천 포인트
- Edge Runtime 배포 시 Node.js 전용 내장 모듈(crypto, https 등) 사용 여부 전수 조사 - 라이브러리 선정 시 종속성 깊이와 번들 사이즈가 콜드 스타트(Cold Start) 성능에 미치는 영향 평가 - 특정 런타임에 종속되지 않는 Web Standard API(Fetch, Web Crypto 등) 우선 채택 검토