Clerk Dev 모드와 Production 모드 차이
KUKJIN LEE • 6개월 전 작성
Clerk는 사용자 인증 및 회원가입을 위한 라이브러리로, 개발 모드와 프로덕션 모드 두 가지 환경에서 작동합니다.
개발 모드 (dev mode)
-
목적: 애플리케이션 개발 및 테스트.
-
클라이언트와 서버의 인증 정보가 덜 엄격하게 관리됨.
프로덕션 모드 (production mode)
-
목적: 실제 사용자에게 서비스 제공.
-
성능 최적화.
-
보안 강화.
프로덕션 모드로 변경해야 하는 이유
개인적으로 가장 큰 이유는 Clerk의 Dev 모드로 배포한 후 Sitemap 접근이 제한된다는 점입니다. Dev 모드에서 Production 모드로 변경한 후에는 Sitemap 접근이 바로 가능해졌습니다. 왜 Clerk가 Dev 모드에서 Sitemap 접근을 차단하는지는 명확히 알 수 없었지만, 배포 환경에서는 Dev 모드를 Production 모드로 변경할 것을 권장드립니다.
아래는 문서에 나와 있는 내용입니다. 보안이 어떻게 강화됐는지, 성능이 어떻게 최적화됐는지에 대한 구체적인 정보는 찾을 수 없었지만, 일반적으로 다음과 같은 이유로 프로덕션 모드로 전환하는 것이 좋습니다.
-
보안 강화:
-
프로덕션 모드는 더 엄격한 보안 설정을 적용하여 애플리케이션과 사용자 데이터를 보호합니다. 이는 개발 모드에서는 상대적으로 느슨한 보안 설정이 적용될 수 있기 때문에 중요합니다.
-
예를 들어, 세션 관리, 토큰 저장 방식, 데이터 암호화 등이 프로덕션 모드에서는 더 강화됩니다.
-
-
성능 최적화:
-
프로덕션 모드는 애플리케이션의 성능을 최적화합니다. 디버깅과 개발 편의를 위해 많은 리소스를 소비하는 개발 모드와 달리, 프로덕션 모드는 최소한의 리소스를 사용하여 최상의 성능을 제공합니다.
-
이를 통해 사용자 경험이 개선되고, 애플리케이션이 더 빠르고 효율적으로 작동합니다.
-
변경 방법은 간단합니다. Clerk Dashboard 진입 후, 좌측 상단 Development를 Production으로 변경하면 됩니다.
추가 사항
-
환경 변수 설정
배포 후, CLERK_DEV의 환경 변수를 변경해야 합니다.
CLERK_ENV=production
-
API 키 및 도메인 설정
Production Environment에 맞는 API 키와 도메인을 다시 설정해야 합니다. 따라서 배포 환경의 .env와 개발 환경의 .env를 따로 관리해야합니다.
// .env 파일 설정
// CLERK_ENV=production
// CLERK_API_KEY=your_production_api_key
// CLERK_FRONTEND_API=your_production_frontend_api
require('dotenv').config();
const express = require('express');
const { ClerkExpressWithAuth } = require('@clerk/clerk-sdk-node');
const app = express();
// Clerk 설정
const clerkAuthMiddleware = ClerkExpressWithAuth({
apiKey: process.env.CLERK_API_KEY,
frontendApi: process.env.CLERK_FRONTEND_API,
environment: process.env.CLERK_ENV,
});
// 미들웨어로 Clerk 인증 사용
app.use(clerkAuthMiddleware);
app.get('/', (req, res) => {
res.send('Hello, world!');
});
// 서버 시작
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running in ${process.env.CLERK_ENV} mode on port ${PORT}`);
});