엔터프라이즈 환경에 멤버 자격 데이터베이스 배포

작성자 : Jason Lee

참고

이 문서가 작성된 이후 ASP.NET 멤버 자격 공급자는 ASP.NET ID로 대체되었습니다. 이 문서를 작성할 때 추천하는 멤버 자격 공급자가 아닌 ASP.NET ID 플랫폼을 사용하도록 앱을 업데이트하는 것이 좋습니다. ASP.NET ID는 를 포함하여 ASP.NET 멤버 자격 시스템에 비해 여러 가지 이점이 있습니다.

  • 성능 향상
  • 향상된 확장성 및 테스트 용이성
  • OAuth, OpenID Connect 및 2단계 인증 지원
  • 클레임 기반 ID 지원
  • ASP.Net Core와의 상호 운용성 향상

이 항목에서는 테스트, 스테이징 또는 프로덕션 환경에서 ASP.NET 애플리케이션 서비스 데이터베이스(더 일반적으로 멤버 자격 데이터베이스라고 함)를 프로비전할 때 해결해야 하는 주요 고려 사항 및 과제에 대해 설명합니다. 또한 이러한 문제를 해결하는 데 사용할 수 있는 접근 방식에 대해서도 설명합니다.

이 항목은 Fabrikam, Inc.라는 가상 회사의 엔터프라이즈 배포 요구 사항을 기반으로 하는 일련의 자습서의 일부를 구성합니다. 이 자습서 시리즈에서는 샘플 솔루션인 Contact Manager 솔루션을 사용하여 ASP.NET MVC 3 애플리케이션, WCF(Windows Communication Foundation) 서비스 및 데이터베이스 프로젝트를 포함하여 현실적인 수준의 복잡성을 가진 웹 애플리케이션을 나타냅니다.

이 자습서의 핵심인 배포 방법은 프로젝트 파일 이해에 설명된 분할 프로젝트 파일 접근 방식을 기반으로 합니다. 이 방법은 빌드 프로세스가 모든 대상 환경에 적용되는 빌드 지침과 환경별 빌드 및 배포 설정을 포함하는 두 개의 프로젝트 파일에 의해 제어됩니다. 빌드 시 환경별 프로젝트 파일이 환경에 구애받지 않은 프로젝트 파일로 병합되어 전체 빌드 지침 집합을 형성합니다.

멤버 자격 데이터베이스를 배포할 때 발생하는 문제는 무엇인가요?

대부분의 경우 데이터베이스에 대한 배포 전략을 고안할 때 가장 먼저 고려해야 할 사항은 배포하려는 데이터입니다. 개발 또는 테스트 환경에서 사용자 계정 데이터를 배포하여 빠르고 쉽게 테스트할 수 있습니다. 스테이징 또는 프로덕션 환경에서는 사용자 계정 데이터를 배포할 가능성이 매우 낮습니다.

아쉽게도 ASP.NET 멤버 자격 데이터베이스에는 이 결정을 훨씬 더 복잡하게 만드는 몇 가지 특정 과제가 있습니다.

  • 스키마 전용 배포는 멤버 자격 데이터베이스를 비작동 상태로 둡니다. 이는 멤버 자격 데이터베이스가 작동하기 위해 데이터베이스에 필요한 일부 구성 데이터( aspnet_SchemaVersions 테이블)를 포함하기 때문입니다. 따라서 사용자 계정 데이터를 제외하기 위해 멤버 자격 데이터베이스의 스키마 전용 배포를 수행하는 경우 배포 후 스크립트를 실행하여 필수 구성 데이터를 추가해야 합니다.
  • 멤버 자격 데이터베이스를 구성하는 방법에 따라 멤버 자격 공급자는 컴퓨터 키를 사용하여 암호를 암호화하고 데이터베이스에 저장할 수 있습니다. 이 경우 데이터베이스와 함께 배포하는 모든 사용자 계정 데이터는 대상 서버에서 사용할 수 없게 됩니다. 이러한 이유로 사용자 계정 데이터 배포는 지원되는 시나리오가 아닙니다.

멤버 자격 데이터베이스 전략 선택

엔터프라이즈 서버 환경에서 멤버 자격 데이터베이스를 프로비전하는 방법을 선택할 때 다음 지침을 사용합니다.

  • 가능한 경우 멤버 자격 데이터베이스를 배포하지 마세요. 대신 대상 데이터베이스 서버에서 멤버 자격 데이터베이스를 수동으로 만듭니다. 멤버 자격 데이터베이스 스키마를 사용자 지정하지 않은 경우 ASP.NET SQL Server 등록 도구(aspnet_regsql.exe)를 사용하여 대상에서 새 스키마를 만들 수 있습니다.
  • 멤버 자격 데이터베이스를 배포할 수 있는 옵션이 없는 경우(예: 데이터베이스 스키마를 광범위하게 수정한 경우) 멤버 자격 데이터베이스의 스키마 전용 배포를 수행하고 사용자 계정 데이터를 제외한 다음 배포 후 스크립트를 실행하여 필요한 구성 데이터를 추가해야 합니다. 방법 : 사용자 계정을 포함하지 않고 ASP.NET 멤버 자격 데이터베이스 배포에서 이러한 접근 방식에 대한 광범위한 지침을 찾을 수 있습니다.

멤버 자격 데이터베이스의 스키마는 상당히 정적일 수 있다는 점을 기억해야 합니다. 멤버 자격 데이터베이스를 사용자 지정한 경우에도 정기적으로 스키마를 업데이트해야 할 가능성이 낮습니다. 웹 애플리케이션 또는 데이터베이스 프로젝트의 코드와 동일한 빈도로 변경되지는 않습니다. 따라서 자동화된 배포 또는 단일 단계 배포 프로세스에 멤버 자격 데이터베이스를 포함할 필요가 없습니다.

VSDBCMD를 사용하여 멤버 자격 데이터베이스 스키마 업데이트

첫 번째 배포 후 멤버 자격 데이터베이스의 구조를 수정하는 경우 IIS(인터넷 정보 서비스) 웹 배포 도구(웹 배포)를 사용하여 데이터베이스를 다시 배포하지 않을 수 있습니다. 웹 배포의 데이터베이스 배포 기능에는 대상 데이터베이스를 차등 업데이트하는 기능이 포함되지 않습니다. 대신 웹 배포는 데이터베이스를 삭제하고 다시 만들어야 합니다. 즉, 스테이징 또는 프로덕션 환경에서 일반적으로 바람직하지 않은 기존 사용자 계정 데이터가 손실됩니다.

대안은 VSDBCMD 유틸리티를 사용하여 대상 데이터베이스의 스키마를 업데이트하는 것입니다. VSDBCMD에는 두 가지 중요한 기능이 포함되어 있습니다. 먼저 기존 데이터베이스의 스키마를 .dbschema 파일로 가져올 수 있습니다. 둘째, 기존 데이터베이스에 .dbschema 파일을 차등 업데이트로 배포할 수 있습니다. 즉, 대상 데이터베이스를 최신 상태로 만드는 데 필요한 변경 내용만 적용되며 데이터가 손실되지 않습니다.

다음 개략적인 단계를 사용하여 멤버 자격 데이터베이스 스키마를 업데이트할 수 있습니다.

  1. VSDBCMD 가져오기 작업을 사용하여 원본 멤버 자격 데이터베이스에 대한 .dbschema 파일을 생성합니다. 이 절차는 방법: 명령 프롬프트에서 스키마 가져오기에 설명되어 있습니다.
  2. VSDBCMD 배포 작업을 사용하여 .dbschema 파일을 대상 멤버 자격 데이터베이스에 배포합니다. 이 절차는 VSDBCMD.EXE 대한 명령줄 참조(배포 및 스키마 가져오기)에 설명되어 있습니다.

결론

이 항목에서는 다양한 대상 환경에서 ASP.NET 멤버 자격 데이터베이스를 프로비전해야 할 때 발생할 수 있는 몇 가지 문제에 대해 설명했습니다. 특히 스키마 전용 배포가 멤버 자격 데이터베이스를 비작동 상태로 두는 이유와 사용자 계정 데이터 배포가 지원되지 않는 이유를 설명했습니다. 또한 이 항목에서는 다양한 시나리오에서 멤버 자격 데이터베이스를 프로비전, 배포 및 업데이트하는 방법에 대한 지침을 제공했습니다.

추가 정보

VSDBCMD를 사용하는 방법에 대한 자세한 지침과 예제는 VSDBCMD.EXE 대한 명령줄 참조(배포 및 스키마 가져오기)방법: 명령 프롬프트에서 스키마 가져오기를 참조하세요. aspnet_regsql.exe 사용하여 멤버 자격 데이터베이스를 만드는 방법에 대한 자세한 내용은 ASP.NET SQL Server 등록 도구(aspnet_regsql.exe)를 참조하세요. 멤버 자격 데이터베이스 배포에 대한 일반적인 지침은 방법: 사용자 계정을 포함하지 않고 ASP.NET 멤버 자격 데이터베이스 배포를 참조하세요.