Caddy 대신 NPM 쓰는 이유
지금 단계에서는 인프라를 최대한 단순하게 유지하는 게 우선이에요. Redis / 메시지 큐 / 외부 서비스는 명확한 이유가 생길 때까지 보류.
환경변수는 `src/lib/env.ts` 한 곳에서 Zod로 검증. `process.env.X` 직접 접근 금지가 강한 규약.
SSE는 in-memory EventEmitter로 시작했는데 수평 확장이 들어오면 Postgres LISTEN/NOTIFY로 옮길 예정. 인터페이스(publish/subscribe)만 유지하면 교체가 깔끔합니다.
export async function hashPassword(p: string) {
return hash(p, { memoryCost: 19456, timeCost: 2 });
}
이 패턴 저희 팀에도 가져가 보겠습니다.