DB 마이그레이션 및 Azure 배포 슬롯


16

새 웹 응용 프로그램을 Azure Web App Service (이전 Azure 웹 사이트)로 푸시 할 계획입니다. 배포 슬롯을 사용하여 배포를 프로덕션 환경으로 보내기 전에 테스트 할 수 있도록하고 싶습니다. DB 스키마 변경이 필요하지 않는 한 괜찮습니다. 그러나 스키마 변경이 있으면 동일한 db 버전에서 두 개의 소프트웨어 버전을 운영 할 수 없습니다. EF 마이그레이션을 사용하고 있으므로 준비 슬롯으로 푸시하면 최신 버전으로 DB가 즉시 업데이트됩니다.

내 질문은 DB 마이그레이션이 필요할 때 배포 슬롯을 사용하는지 여부입니다.

대규모 SaaS 제공 업체는 어떻게 수행됩니까? 새 버전으로 DB 마이그레이션을 즉시 수행하고 있습니까? 다운 타임이 발생할 수 있습니다.

이 문제에 대한 복잡한 솔루션 만 생각할 수 있습니다. 간단한 것이 있습니까?


개발자 데이터베이스가 없습니까?
JeffO

예, 개발자 및 QA 시스템이 있습니다. 위에서 설명한 시스템은 생산 용입니다.
Sam7

@ Sam7이 문제에 대한 해결책을 찾으셨습니까? 건배
WestDiscGolf

난 두려워하지. 현재 별도의 환경에서 마이그레이션 변경 사항을 테스트하고 있습니다.
Sam7

@ Sam7 : 나는 당신이 당신의 db에 자신의 연결 문자열을 가진 분리 된 .config 파일로 이것을 관리 할 수 ​​있다고 생각합니다. 그러나 단계에서 프로덕션으로 배포 할 때 롤백의 이점은 더 이상 작동하지 않습니다. db 변경 사항이 즉시 적용됩니다. 가까운 장래에 해결책이 궁금합니다.
Roger S.

답변:


3

Azure App Service 슬롯을 사용한 다운 타임없는 릴리스 및 준비 및 프로덕션에서 공유하는 단일 데이터베이스가 가능하지만 현재 및 새 버전의 웹앱이 동시에 실행될 수 있도록 모든 데이터베이스 변경 내용이 이전 버전과 호환되는지 확인해야합니다. 준비 및 생산 슬롯.

이것이 작동하도록하는 몇 가지 규칙 :

  • 모든 새 데이터베이스 열은 널 입력 가능하거나 기본값을 가져야합니다.
  • 열 이름 변경은 허용되지 않습니다
  • 열을 삭제할 수 없습니다

열 이름 바꾸기 또는 삭제와 같이 파괴적인 변경을 수행해야하는 경우이를 수행하려면 두 가지 릴리스가 필요합니다.

  1. 이름이 바뀐 / 삭제 된 열에 대한 종속성을 제거하는 새 버전의 웹앱이 릴리스되어야합니다.
  2. 파괴적인 변경을 수행하는 추가 릴리스가 작성되었습니다.

이것은 약간 복잡하게 들리지만 실제로는 파괴적인 변경을 자주하지 않을 것입니다.


0

슬롯 별 구성 항목을 살펴 보셨습니까? WebApp / 설정 / 응용 프로그램 설정에서 웹 응용 프로그램의 설정을 지정할 수 있지만이 슬롯에만 적용되는지 여부를 정의 할 수도 있습니다.

따라서 스테이징 슬롯에 슬롯 별 연결 문자열이 있고 스왑 슬롯에도 마이그레이션을 적용 할 수 있습니다.


2
그것은 준비 사이트가 프로덕션과 정확히 동일한 데이터 세트 (-> 데이터베이스)를 처리한다는 아이디어와 반대됩니다.
Sam7
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.