Rails 서브도메인/경로 혼용 개발 방식의 위험성

If you need subdomains: just use subdomains

작성자
발행일
2025년 08월 09일

핵심 요약

  • 1 프로덕션은 서브도메인, 개발은 경로를 사용하는 방식은 CORS, CSP, 쿠키 등 다양한 문제를 야기합니다.
  • 2 개발 환경과 프로덕션 환경의 불일치는 배포 후에야 발견되는 심각한 오류로 이어질 수 있습니다.
  • 3 개발 시 실제 서브도메인을 사용하거나, 명확한 필요가 있을 때까지 서브도메인 도입을 미루는 것이 권장됩니다.

도입

Eelco가 제안한 Rails 애플리케이션에서 프로덕션 환경은 서브도메인을 사용하고 개발 환경은 경로를 사용하는 방식은 겉보기에는 효율적으로 보일 수 있습니다. 그러나 이 글은 이러한 접근 방식이 실제로는 예측하기 어려운 심각한 부작용을 초래할 수 있다고 경고합니다. 개발 환경을 프로덕션 환경과 최대한 유사하게 유지하는 것이 중요하며, 해당 방식이 가져올 수 있는 문제점들을 구체적으로 설명하고 더 나은 대안들을 제시합니다.

Eelco의 서브도메인/경로 혼용 방식은 개발과 프로덕션 환경 간의 근본적인 불일치를 야기하며, 이는 다음과 같은 여러 문제로 이어집니다.

1. URL 불일치 및 기능 오류

  • 비 Rails 생성 URL 문제: Rails 라우터 외부에서 생성된 URL(예: 정적 파일)은 개발과 프로덕션에서 경로가 달라져 동적 처리가 필수적입니다.

  • Well-known URL 문제: favicon.ico, robots.txt 등 특정 루트 경로를 기대하는 URL들이 경로 네임스페이싱 환경에서는 제대로 작동하지 않습니다.

2. 보안 및 네트워크 설정 문제

  • CORS (Cross-Origin Resource Sharing) 문제: 개발 시 동일 출처로 간주되던 API 호출이 프로덕션에서 교차 출처가 되어 CORS 오류를 유발합니다. 이는 배포 후 발견되기 쉬우며, 과도한 보안 설정으로 이어질 수 있습니다.

  • CSP (Content Security Policy) 문제: CORS와 유사하게, CSP 정책이 개발과 프로덕션 환경의 출처 분류 차이로 인해 스크립트 실행을 차단하거나 예상치 못한 동작을 유발할 수 있습니다.

  • Rails 호스트 권한 부여 문제: Rails의 호스트 권한 부여 설정이 개발 환경에서는 작동하지 않아, 프로덕션 배포 시 서브도메인을 추가하는 것을 잊어 API 제공이 거부될 수 있습니다.

3. 인증 및 세션 관리 문제

  • 쿠키 및 인증 문제: 경로 기반 환경에서는 일반 쿠키가 설정되지만, 서브도메인 환경에서는 와일드카드 도메인(.myapp.com)으로 쿠키를 설정해야 합니다. 이 차이로 인해 인증 관련 문제가 발생할 수 있으며, 배포 전까지 인지하기 어렵습니다.

4. 시기상조의 아키텍처 복잡성

  • 과도한 스케일링: API 및 웹훅에 별도 서브도메인을 사용하는 것은 성장에 유리할 수 있으나, 성장이 실제로 발생하기 전에는 불필요한 복잡성만 가중시킵니다. 동일 출처 애플리케이션을 다중 출처로 전환하는 것은 개발 환경에서 충분히 검증되지 않으면 매우 고통스러운 과정이 될 수 있습니다.

결론

Eelco가 제안한 서브도메인/경로 혼용 방식은 개발과 프로덕션 환경 간의 치명적인 불일치를 초래하여, 많은 문제를 배포 후에야 발견하게 만듭니다. 개발 환경은 실제 운영 환경과 최대한 유사하게 구축되어야 합니다. 이를 위해 `/etc/hosts`를 사용하거나 `lvh.me`, `localtest.me`와 같은 공용 DNS 서비스를 활용하여 개발 시에도 실제 서브도메인을 사용하는 것이 훨씬 효과적입니다. 궁극적으로, 강력한 비즈니스 또는 기술적 이유가 생기기 전까지는 서브도메인 도입을 신중하게 고려하고 미루는 것이 현명한 개발 전략입니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!