소개
데이터베이스 변경에 대한 수동 배포 프로세스는 느리고 오류가 발생하기 쉽습니다. 누군가가 스크립트를 작성하고, 데이터베이스 관리자에게 전자 메일을 보내며, 유지 관리 기간 동안 스크립트가 실행될 때까지 기다립니다. 문제가 발생하면 변경 전에 스키마의 정확한 상태를 추적한 사람이 없기 때문에 롤백하기가 어렵습니다. 한편, 서로 다른 기능을 작업하는 개발자는 데이터베이스 코드에 대한 구조적 워크플로가 없기 때문에 서로의 변경 내용을 덮어씁니다.
Azure SQL Database에서 전자 상거래 애플리케이션을 관리하는 팀을 상상해 보십시오. 세 명의 개발자가 스키마 변경이 필요한 기능을 추가하고 있습니다. 하나는 새 제품 범주 테이블을 추가하고, 다른 하나는 주문 처리 저장 프로시저를 수정하고, 세 번째는 고객 조회 보기를 업데이트합니다. 소스 제어, CI/CD 파이프라인 및 자동화된 테스트가 없으면 이러한 변경 내용이 충돌합니다. 프로덕션에 직접 적용되는 핫픽스는 개발 환경과 동기화가 없습니다. 배포 시 핫픽스를 덮어써서 트래픽이 많은 시간대에 프로덕션 장애가 발생할 수 있습니다.
SQL Database 프로젝트 및 CI/CD 파이프라인은 애플리케이션 코드와 동일한 엄격한 데이터베이스 코드를 처리하여 이러한 문제를 해결합니다. 모든 개체를 버전 제어하고, 빌드 및 배포를 자동화하고, 라이브 데이터베이스가 프로젝트에서 드리프트되는 시기를 감지하고, 프로덕션에 도달하기 전에 변경 내용을 테스트합니다.
이 모듈을 완료하면 다음을 수행할 수 있습니다.
- SDK 스타일을 포함하여 SQL Database 프로젝트를 사용하여 데이터베이스 모델을 만들고, 빌드하고, 유효성을 검사합니다.
- SQL Database 프로젝트에 대한 소스 제어를 구성하고 배포 후 스크립트 및 배포 후 스크립트를 사용하여 참조 데이터를 관리합니다.
- 데이터베이스 코드에 대한 분기, 끌어오기 요청 및 충돌 해결을 관리합니다.
- 스키마 비교 도구 및 SqlPackage를 사용하여 스키마 드리프트를 검색합니다.
- 비밀 관리 및 배포 제어를 포함하여 GitHub Actions 및 Azure DevOps를 사용하여 CI/CD 파이프라인을 구현합니다.
- 단위 테스트 및 통합 테스트를 사용하여 테스트 전략을 설계하고 구현합니다.