피드로 돌아가기
I replaced ws with 2.5KB of code and deleted 14 dependencies
Dev.toDev.to
Infrastructure

의존성 0개, 2.5KB 설계로 Cold Start 93% 단축한 Edge-Native WebSocket

I replaced ws with 2.5KB of code and deleted 14 dependencies

rabbxdev2026년 5월 7일2intermediate

Context

2011년 설계된 기존 ws 라이브러리의 과도한 의존성과 Native Binding으로 인한 Edge Runtime 호환성 결여 문제 발생. 특히 Cloudflare Workers의 CPU 제한 시간(50ms)보다 긴 초기 로드 시간(118ms)으로 인한 실행 불가능한 구조적 한계 노출.

Technical Solution

  • Native Binding 및 외부 의존성을 전면 제거한 Zero Dependency 설계로 Supply Chain 리스크 제거
  • Web Standard API 준수를 통한 Edge Runtime(Cloudflare Workers, Bun, Deno) 간의 코드 일관성 확보
  • Tree-shakeable 및 Side-effect free 구조 설계를 통한 번들 사이즈 최소화
  • WebSocketPair 등 표준 인터페이스를 활용한 Edge-Native 서버 구조 구현
  • Gzipped 2.5KB 수준의 초경량 풋프린트로 런타임 오버헤드 최소화

Impact

  • 패키지 크기: 1.2MB에서 6.4KB(Minified) / 2.5KB(Gzipped)로 대폭 축소
  • Cold Start 성능: 118ms에서 8ms로 약 93% 개선
  • 의존성 수: 14개에서 0개로 제거
  • 처리량: 일일 2M+ 메시지 처리 환경에서 Crash 0건 기록

Key Takeaway

Edge Computing 환경에서는 라이브러리의 기능보다 초기 로딩 시간과 런타임 호환성이 시스템 가용성을 결정하는 핵심 지표임. 특정 환경의 제약 사항(CPU Time Limit)을 해결하기 위해 하위 의존성을 제거하는 Edge-Native Primitives 접근 방식의 중요성 확인.


1. Edge Runtime 도입 시 라이브러리의 Native Binding 포함 여부 확인

2. Cold Start 시간이 런타임 할당 CPU 제한 시간을 초과하는지 정밀 측정

3. 불필요한 의존성 체인을 가진 레거시 라이브러리를 Web Standard 기반 경량 구현체로 대체 검토

4. Zero Dependency 설계를 통한 보안 취약점(CVE) 및 공급망 공격 노출 면적 최소화

원문 읽기