데이터베이스 변경 내용 관리

엔터프라이즈 수준에서 데이터베이스를 개발하고 유지하는 경우 통합된 데이터베이스 응용 프로그램을 만들기 위해 소프트웨어 개발 팀과 일정 및 변경 내용을 조정해야 할 것입니다. 회사의 소프트웨어 개발자가 사용하는 도구 및 프로세스와 가능한 한 유사한 도구와 프로세스를 사용하면 이러한 조정에 필요한 수고를 상당히 줄일 수 있습니다.

많은 팀들이 Agile 메서드와 같이 보다 반복적이며 신속한 개발 패러다임으로 코드를 작성하려고 하므로 소프트웨어 개발자와 데이터베이스 개발자 모두 버전 제어와 같은 도구를 그 어느 때보다 많이 원하고 있습니다. 이러한 도구를 사용하면 팀 기반 개발과 관련된 문제를 줄일 수 있습니다. 비슷한 도구와 프로세스를 사용하면 관리하는 데이터베이스뿐만 아니라 해당 데이터베이스 및 그와 상호 작용하는 소프트웨어 사이의 통합 지점에 대해 상당한 이점을 얻을 수 있습니다.

Visual Studio의 지원 기능

Visual Studio를 사용하면 팀 멤버가 좀 더 큰 관점에서 구현 세부 정보가 아닌 응용 프로그램 동작에 중점을 두도록 하여 소프트웨어 개발자와 보다 원활하게 협력할 수 있습니다. 이 방법은 프로덕션 데이터베이스와 해당 데이터를 응용 프로그램 영역의 중심으로 보는 모델과는 다릅니다. Visual Studio에서는 전체 응용 프로그램, 즉 데이터와 논리 모두를 대상으로 하는 솔루션 집합을 제공합니다. 잘 수행되고 유지 관리하기 쉬우며 가능한 한 빨리 전달될 수 있는 응용 프로그램을 빌드하려면 엔터프라이즈 수준의 개발 조직에서 이렇게 포괄적으로 응용 프로그램을 파악해야 합니다.

Visual Studio에서는 오늘날의 데이터베이스 개발자 역할과 데이터베이스 관리자 역할을 대상으로 하는 기능을 제공합니다. 예를 들어 Visual Studio에서는 각 데이터베이스 전문가를 위한 격리된 개발 환경의 개념을 지원합니다. 팀 멤버는 다른 팀 멤버 또는 프로덕션 환경에 피해를 주지 않고 스키마 관련 작업을 수행할 수 있습니다. 장기적인 관점에서 데이터베이스 설계자 역할에 필요한 기능을 추가하고 데이터베이스 관리자에게 필요한 기능을 확장합니다.

높은 수준의 목표

Visual Studio의 데이터베이스 기능에는 궁극적으로 다음과 같은 목표가 있습니다.

  • 데이터베이스 응용 프로그램에 대한 통합 변경 관리를 기반으로 하는 기초를 제공합니다.

  • 데이터베이스 프로젝트를 관리하는 데 도움이 되는 도구를 제공합니다.

  • 차이를 이해하는 데 도움이 되는 도구를 제공합니다.

  • 변경하고 해당 변경 영향을 평가하는 데 도움이 되는 도구를 제공합니다.

  • 변경 내용과 관련된 위험을 줄이기 위해 격리된 환경에서 작업하는 데 도움이 되는 도구를 제공합니다.

  • 업데이트된 솔루션을 테스트하는 데 도움이 되는 도구를 제공합니다.

  • 데이터베이스에 대한 변경 내용 배포를 단순하게 해 주는 도구를 제공합니다.

  • 복잡한 데이터베이스의 공동 개발을 쉽게 해 주는 도구를 제공합니다.

고급 작업

이러한 목표를 지원하기 위해 Visual Studio에서는 다음과 같은 고급 작업을 수행할 수 있도록 도와 줍니다.

  • 버전 제어에서 관리되는 새 데이터베이스를 만들어 배포합니다.

  • 데이터베이스 프로젝트를 사용하여 기존 데이터베이스 스키마를 버전 제어에서 관리합니다. 데이터베이스나 기존 스크립트에서 스키마를 가져와서 데이터베이스 프로젝트 스키마를 만듭니다.

  • 데이터베이스의 오프라인 표현을 수정한 다음 변경 내용을 배포합니다.

  • 데이터베이스 간의 스키마나 데이터를 비교합니다.

  • 데이터베이스 개체에 대한 단위 테스트를 개발하고 실행합니다.

  • 중요한 프로덕션 데이터를 손상시키지 않으면서 예상 가능한 대표 테스트 데이터를 생성합니다.

  • 데이터베이스 테이블, 열, 뷰 또는 다른 개체의 이름을 바꾸고 해당 변경 내용을 관련 단위 테스트, 뷰, 저장 프로시저, 트리거 등이 포함된 나머지 데이터베이스 프로젝트에 전파합니다.

  • 스크립트와 쿼리를 만들고, 편집하고, 유효성 검사를 수행하고, 실행하고 분석합니다.

데이터베이스 개발 수명 주기

Visual Studio에서는 새 도구와 연동되는 프로세스를 지원합니다. 변경 작업을 수행하고 해당 변경 내용을 테스트하는 격리된 개발 환경을 각 데이터베이스 전문가에게 제공하는 데이터베이스 개발 수명 주기를 이러한 프로세스로 간주할 수 있습니다. 변경 내용을 테스트한 후에 팀 멤버는 버전 제어 시스템을 통해 변경 내용을 공유합니다. 데이터베이스 개발 수명 주기에는 다음 단계가 있습니다.

  • 프로젝트 환경 설정

  • 격리된 개발 반복 수행

  • 프로젝트 빌드

  • 프로젝트 환경에서 배포

프로젝트 환경 설정

다음 그림에서는 DBA(데이터베이스 관리자)의 역할을 수행하는 팀 멤버가 프로젝트 환경을 설정하는 방법을 보여 줍니다.

DBA가 데이터베이스 프로젝트 환경 설정

DBA는 우선 데이터베이스 프로젝트를 만들고 프로덕션 데이터베이스에서 데이터베이스 스키마를 가져옵니다. 그런 다음 DBA는 데이터 생성 계획을 만들어 격리된 개발 환경에 대한 테스트 데이터를 만들 수 있습니다. 마지막으로 데이터베이스 프로젝트를 팀에서 사용할 수 있도록 버전 제어에 체크 인합니다.

격리된 개발 반복 수행

다음 다이어그램에서는 격리된 환경에서 팀 멤버가 개발 작업을 반복적으로 수행하는 방법을 보여 줍니다.

격리된 환경에서 반복 배포

각 데이터베이스 전문가는 개발 환경을 버전 제어와 동기화합니다. 이 전문가는 파일을 변경할 때 체크 아웃하고 해당 변경 내용을 격리한 상태에서 개발하고 테스트할 수 있습니다. 데이터베이스 프로젝트의 복사본에 대한 변경 내용은 격리된 개발 환경에만 배포됩니다. 팀 멤버가 실제 테스트 데이터를 생성하고 데이터베이스의 개인 복사본에 대해 단위 테스트를 실행한 후에 팀 멤버는 변경 내용을 버전 제어에 체크 인합니다. 다른 팀 멤버는 버전 제어에서 테스트한 변경 내용을 얻습니다.

매일 작성되는 프로젝트 빌드 생성

다음 그림에서는 빌드 주기가 데이터베이스 프로젝트에 대해 작동하는 방법을 보여 줍니다.

데이터베이스 프로젝트의 빌드 주기

매일 작성되는 빌드는 버전 제어 시스템에서 최근에 테스트된 데이터베이스 프로젝트의 버전과 동기화하여 생성됩니다. 해당 빌드는 생성된 테스트 데이터에 대해 단위 테스트가 실행되는 테스트 데이터베이스에 배포될 수 있습니다.

프로젝트 환경에서 배포

다음 다이어그램에서는 DBA가 데이터베이스 프로젝트의 버전을 프로덕션으로 배포할 수 있는 방법을 보여 줍니다.

DBA가 프로덕션으로 빌드 및 배포

데이터베이스의 버전을 프로덕션에 배포해야 할 때 DBA는 버전 제어 시스템의 레이블과 동기화합니다. DBA는 데이터베이스 프로젝트, 관련 스크립트 및 테스트에 대해 일치하는 파일을 검색합니다. 그런 다음 .dbschema 파일을 빌드하고, 이 .dbschema 파일에서 배포 스크립트를 생성하고, 필요한 사항을 수동으로 수정하고, 스테이징 서버로 테스트 배포를 수행합니다. DBA는 스크립트를 프로덕션 서버에 배포할 준비가 될 때까지 이 프로세스를 반복합니다. DBA가 스키마 또는 배포 전이나 배포 후 스크립트를 변경한 경우 해당 변경 내용은 버전 제어에 다시 체크 인됩니다.

참고 항목

개념

Visual Studio의 데이터베이스 기능에 대한 아키텍처 개요

팀 데이터베이스 개발 시작