1

현재 여러 배포 슬롯 (예 : dev, staging, production)이있는 webApp을 실행 중입니다. 모든 슬롯은 데이터베이스 (db_dev, db_staging, db_production)에 연결됩니다. 스테이징 슬롯에 배포 한 다음 프로덕션으로 전환하고 싶습니다. 데이터베이스 마이그레이션은 어떻게 여기에 들어 맞습니까?데이터베이스 마이그레이션을 사용한 Azure Web App 배포 슬롯

db_staging을 준비하기 위해 db 마이그레이션을 사용하여 새 빌드를 배포하면 업데이트된다는 의미입니다. 슬롯을 전환하면 어떻게됩니까? 마이그레이션이 db_production에 적용됩니까? 가동 중지 시간은 어떻게됩니까?

내 이해에서 URL 만 전환되므로 전환 후 앱이 준비 슬롯에서 db_production을 가리 킵니까? 그건 말이되지 않습니다.

스테이징 슬롯에 배포하고 db_production (마이 그 레이션 포함)을 가리킬 수 있지만 db가 업데이트되어 라이브 슬롯에서 응용 프로그램이 손상 될 수 있습니다.

답변

1

소스 코드에서 연결 문자열을 하드 코딩하는 대신 앱 서비스 설정의 연결 문자열 섹션에 넣고 환경 변수로 액세스하십시오. 어떤 환경에 대해서도 하나의 코드 만 가질 수 있고, 스왑 여부와 관계없이 설정을 "슬롯 설정"으로 확인할 수 있으므로 설정이 고정 된 채로 남아있을 수 있기 때문에 더 안전합니다.

enter image description here

여기

더 많은 정보 :

https://azure.microsoft.com/en-us/documentation/articles/web-sites-configure/

업데이트 : 데이터베이스 업데이트의 경우

즉,하기 위해 실행해야 할 필요가 스크립트 새 응용 프로그램 버전의 데이터베이스 스키마를 업데이트하면 web.config의 applicationInitialization 섹션을 사용할 수 있습니다. 보통 앱을 워밍업하는 데 사용되지만 자신의 경우에도 작동해야합니다.

<system.webServer> 
    <applicationInitialization > 
    <add initializationPage="/init-script.php" hostName="xxxxxx.azurewebsites.net"/> 
    </applicationInitialization> 
<system.webServer> 

AppInit 모듈은 기본적으로 앱에 프로덕션 트래픽을 허용하는 스왑 프로세스를 완료하기 전에이 코드가 완료 될 때까지 대기합니다. 기본 논리는 데이터베이스가 예상되는 버전을 실행하고 있는지 확인하고 다른 논리가 순서대로 실행되지 않는지 확인하는 것입니다.

+0

모든 슬롯마다 고유 한 구성이 있다는 것을 알고 있지만 db 마이그레이션은 어떻게됩니까? 그들은 어떻게 적용합니까? 마이그레이션으로 준비에 배포한다고 가정하면 db 준비가 업데이트됩니다. 프로덕션 db는 어떻게 업데이트됩니까? 그리고 내 코드의 변수에 어떻게 액세스합니까? 현재 web.config를 사용하고 있습니다. 사전에 감사드립니다. – user3838018

+0

앱에 구현해야하는 맞춤 로직이기 때문에 자동 방법이 없습니다. 가능한 해결 방법을 사용하여 업데이트를 게시했지만 결코 작동하지 않아야합니다. –

1

나도이 숙고되었고, 지금까지 나는 다음과 같이 유일한 합리적인 과정이 볼 수 :

  1. 정지 Prelive의 stites
  2. 복제 새로운 준비 DB에 다시 DB를 살
  3. 이 데이터베이스를 가리 키도록 스테이징 슬롯 스티키 연결 문자열을 변경하십시오.
  4. DBUP 실행 준비 데이터베이스 (이제는 업그레이드 된 버전)를 실행하십시오 (실제 사용자에게 연락 할 수있는 명확한 정보).
  5. 배포가 아닌 주요 변경이있는 경우, 사이트 수 (
  6. 다시 시작 prelive 사이트를 슬롯을 라이브에 대한 만족
  7. 백업 라이브 DB
  8. 실행 DBUP까지
  9. 시험 준비를 준비 라이브 틱의 시온)) 라이브
  10. 라이브 스왑 및 prelive 슬롯
  11. 확인을 유지

db 업데이트를 중단없이 유지할 수 있다면 슬롯을 다시 바꿔 가면서 롤백을 간단하게 수행 할 수 있습니다. 그렇지 않다면, 롤백 스크립트 나 스냅 샷 복원에 익숙해 져야합니다.

관련 문제