KUKJIN LEE's profile picture

KUKJIN LEE

Posted time

Posted 2 months ago

Clerk Dev 모드와 Production 모드 차이

Clerk는 사용자 인증 및 회원가입을 위한 라이브러리로, 개발 모드와 프로덕션 모드 두 가지 환경에서 작동합니다.

 

개발 모드 (dev mode)

  • 목적: 애플리케이션 개발 및 테스트.

  • 클라이언트와 서버의 인증 정보가 덜 엄격하게 관리됨.

프로덕션 모드 (production mode)

  • 목적: 실제 사용자에게 서비스 제공.

  • 성능 최적화.

  • 보안 강화.

 

프로덕션 모드로 변경해야 하는 이유

개인적으로 가장 큰 이유는 Clerk의 Dev 모드로 배포한 후 Sitemap 접근이 제한된다는 점입니다. Dev 모드에서 Production 모드로 변경한 후에는 Sitemap 접근이 바로 가능해졌습니다. 왜 Clerk가 Dev 모드에서 Sitemap 접근을 차단하는지는 명확히 알 수 없었지만, 배포 환경에서는 Dev 모드를 Production 모드로 변경할 것을 권장드립니다.

 

아래는 문서에 나와 있는 내용입니다. 보안이 어떻게 강화됐는지, 성능이 어떻게 최적화됐는지에 대한 구체적인 정보는 찾을 수 없었지만, 일반적으로 다음과 같은 이유로 프로덕션 모드로 전환하는 것이 좋습니다.

 

  1. 보안 강화:

    • 프로덕션 모드는 더 엄격한 보안 설정을 적용하여 애플리케이션과 사용자 데이터를 보호합니다. 이는 개발 모드에서는 상대적으로 느슨한 보안 설정이 적용될 수 있기 때문에 중요합니다.

    • 예를 들어, 세션 관리, 토큰 저장 방식, 데이터 암호화 등이 프로덕션 모드에서는 더 강화됩니다.

  2. 성능 최적화:

    • 프로덕션 모드는 애플리케이션의 성능을 최적화합니다. 디버깅과 개발 편의를 위해 많은 리소스를 소비하는 개발 모드와 달리, 프로덕션 모드는 최소한의 리소스를 사용하여 최상의 성능을 제공합니다.

    • 이를 통해 사용자 경험이 개선되고, 애플리케이션이 더 빠르고 효율적으로 작동합니다.

 

 

변경 방법은 간단합니다. Clerk Dashboard 진입 후, 좌측 상단 Development를 Production으로 변경하면 됩니다.

 

추가 사항

  1. 환경 변수 설정

배포 후, CLERK_DEV의 환경 변수를 변경해야 합니다.

 

CLERK_ENV=production

 

  1. 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}`);
});

New Tech Posts