clerk authclerk auth iosclerk docsclerk vercelclerk dev mode

Clerk Dev 모드와 Production 모드 차이

KUKJIN LEE
KUKJIN LEE
2024년 5월 20일
419

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

관련 글

TypeScript any 린트 에러(no-explicit-any) 근본적으로 해결하기

TypeScript 프로젝트에서 @typescript-eslint/no-explicit-any 린트 에러는 단순 규칙 비활성화로 해결할 문제가 아닙니다. 눈 앞 문제는 해결할 수 있지만, TypeScript를 사용하는 가장 중요한 이유를 위배하게 됩니다. any 타입은...

2025년 7월 23일269

JSP 주석, 아직도 `` 쓰시나요? 올바른 사용법

코드를 작성하다 보면 주석을 남기는 경우가 많습니다. 하지만 JSP 환경에서 어떤 주석을 사용하냐에 따라 보안 수준과 성능 이 크게 달라집니다. 표준 주석: 서버 사이드 주석 <%-- --%> JSP 페이지 내 개발 관련 주석은 <%-- --%> 를 사용하는게 좋습니다...

2025년 7월 9일144

쉽게 만드는 React Tab 라이브러리 react-tabs

개발자가 커스텀 스타일을 쉽게 적용할 수 있도록 최소한의 스타일만 제공하여 유연한 스타일링 이 가능한 라이브러리입니다. 상태 관리가 내장되어 있어 탭 선택 및 패널 표시 로직을 직접 구현할 필요 없이 간편하게 사용할 수 있습니다. 기본 사용법 먼저, 라이브러리를 설치합...

2025년 6월 17일173

Next.js 환경 변수 NEXT_PUBLIC 접두사 역할

NEXT_PUBLIC 접두사를 붙이면 변수의 접근 범위가 완전히 달라집니다. 이 차이점을 이해하는 것이 안전하고 효율적인 Next.js 애플리케이션을 구축하는 데 중요합니다. NEXT_PUBLIC 접두사가 없는 환경 변수 (서버 전용) NEXT_PUBLIC 접두사 없이...

2025년 6월 13일156