피드로 돌아가기
Dev.toBackend
원문 읽기
Web API 기반 설계로 런타임 제약 해결 및 번들 크기 10배 감소
How to send email from Cloudflare Workers, Deno, and Bun (Nodemailer won't)
AI 요약
Context
Nodemailer가 Node.js 전용 net/tls/stream 내장 모듈에 의존하여 Cloudflare Workers, Deno, Bun 등 Edge 런타임에서 실행 불가한 한계 발생. 환경별로 서로 다른 전용 SDK를 사용해야 하는 파편화된 개발 경험과 API 일관성 결여 문제 직면.
Technical Solution
- Web API(fetch, Web Crypto, Streams)만으로 Core 로직을 구성하여 런타임 독립적인 Runtime-agnostic 아키텍처 설계
- Subpath exports 방식을 적용하여 사용자가 필요한 전송 계층만 선택적으로 포함하는 Tree-shaking 최적화 구현
- HTTP 기반 Transport를 기본 경로로 설정하여 Socket 접근이 제한된 Edge 환경에서도 메일 발송 가능하도록 구조화
- SMTP, DKIM, Webhook parsing 등 부가 기능을 Opt-in 플러그인 형태로 분리하여 Core 라이브러리의 경량화 유지
- ESM-native 설계 및 TypeScript-first 접근법을 통한 현대적 JS 런타임과의 호환성 확보
실천 포인트
- Edge Runtime 환경에서 외부 서비스 연동 시 Node.js 내장 모듈 사용 여부 확인 - 라이브러리 설계 시 Subpath exports를 활용한 번들 크기 최적화 검토 - 인프라 제약(예: Worker의 Socket 접근 불가)을 고려한 HTTP 기반 대체 전송 경로 확보