2012-04-02 4 views
10

Azure Management Portal에서 VIP를 바꾸면 준비 및 프로덕션 환경간에 두 배포를 쉽게 바꿀 수 있습니다. 스테이징 버전의 서비스에서 작업 할 때 준비 데이터베이스를 사용하기를 원하므로 실제 고객 데이터를 위태롭게 만들 위험이 없습니다. 그러나 스테이징 및 프로덕션 서비스를 교환 한 후에는 현재 프로덕션 데이터베이스 (및 이전 스테이징) 배포가 프로덕션 데이터베이스에서 분명히 작동해야합니다.환경에 따라 다른 데이터베이스를 사용하도록 Azure에서 설치를 설정하는 방법은 무엇입니까?

그래서 본질적으로 데이터베이스 인스턴스가 준비 또는 생산 환경에서 실행 여부에 달려 사용할 수 있습니다. 그것을 성취 할 수있는 좋은 방법이 있습니까? VIP를 기반으로 데이터베이스 스위칭을 하드 코딩하는 것이 최선의 방법은 아닐 것이라고 생각합니다.

+0

두 가지 유효한 답변이 아래에 나와 있습니다. Azure에서의 스테이징은 실제 테스트 환경이 아니며, 프로덕션 전에 모든 것이 실행되도록 보장하는 유일한 방법이며, 실패한 경우 빠른 스왑 백합니다. 현장에서 사용하거나 별도로 구독하십시오. –

답변

11

기존의 "준비 환경"을 사용했던 기능에 대해서는 서비스의 "준비 슬롯"사용을 중단하는 것이 좋습니다. Windows Azure에 대해 이야기 할 때, 게시하기 전에 새로운 배포를 테스트하기 위해서만 준비 슬롯을 사용하는 것이 좋습니다. 그들이 오래 걸리는 테스트를 원한다면, 우리 중 많은 사람들이 온 프레미스를 사용하는 데 익숙하며 별도의 서비스와 별도의 서브 스크립 션을 사용합니다. 비용 투명성을 원할 경우 나중에 좋습니다.

이 모든 사실은 VIP 스왑을 실행하기 전에 업데이트하는 프로덕션에만 해당하는 두 번째 서비스 구성을 사용하거나 서비스에서 어떤 슬롯을 검색 할 수 있도록하는 코드를 작성해야하는지 두 가지 구성 설정 중 적절한 것을 당깁니다.

그러나 첫 번째 단락에서 설명한대로 일을 처리하는 더 좋은 방법이 있다고 생각합니다. :)

+0

+1 "스테이징 슬롯"은 확장 테스트에 사용하면 안됩니다. 응용 프로그램이 SSL을 사용하는 경우 준비 URL이 SSL 인증서를 유효하지 않게 만들기 때문에 "준비 슬롯"에서 테스트 할 수없는 것들이있을 수 있습니다. –

2

Re : "준비 버전의 서비스에서 작업 할 때 준비 데이터베이스를 사용하기 때문에 실제 고객 데이터를 위태롭게 만들 위험이 없습니다." 이 작업을 수행 할 수있는 기본 제공 방법이 없습니다.

프로덕션 데이터의 위험없이 테스트하려면 프로덕션 데이터베이스에 액세스 할 수없는 다른 Azure 계정에서이 테스트를 수행하십시오. 그런 다음 시스템이 테스트되었고 실제로 작동 할 준비가되었다고 생각하면 최종 연기 테스트를 위해 프로덕션 인스턴스 옆에있는 준비 슬롯으로 가져와야합니다.

VIP 스왑을 수행하기 전에 준비 인스턴스에서 몇 가지 시나리오를 실행하고 생산 데이터를 오염시키지 않으려는 시나리오를 상상해보십시오. 이를 위해 많은 회사에서 특별 계정을 사용합니다. 이러한 계정과 관련된 데이터는 실제 고객이 아닌 것으로 알려져 있습니다 (또는 어떻게 든 표시됩니다). 그래서보고 및 청구서 등에서 건너 뛸 수 있습니다.

Re : "VIP에 의존하고 데이터베이스 전환을 하드 코딩하는 것은 아마도 최선의 방법은 아닙니다." 하드 코딩을하는 경우, 위에서 언급 한 접근법을 사용하면 설정 파일에서 읽는 것이 좋습니다. 나는 "우리가 스테이징 슬롯에 있고 코드에서 뭔가 다른 것을 해보자."라고 생각하는 사람들이 있다고 들었다. 그러나 나는 위에서 설명한 것을 오히려 추천한다.

6

최근 Azure 웹 사이트에서 이야기가 변경되었습니다. 이제 모든 앱 설정 또는 연결 문자열을 특정 슬롯에 고정하는 '슬롯 설정'으로 지정할 수 있습니다. 문제를 해결하려면 각 슬롯에 연결 문자열을 설정하고 '슬롯 설정'을 확인하십시오.

지금이 방법이 바람직하지 않은지 저는 분명합니다. 데이터베이스 스키마 마이그레이션과 롤백은 구워지지 않았으며 올바르게 처리하는 방법을 잘 모르겠습니다. 또한 앱 설정 및 연결 문자열 만이 방식으로 작동합니다 (예 : system.net).메일 설정을 슬롯에 고정 할 수 없습니다. 이를 위해 앱 설정에서 메일 서버 정보 등을 얻기 위해 코드를 변경하거나 다른 방법을 사용해야합니다.

+0

내가 잘못 팔린 이유는 뭔가 올바르게 작동하지 않는다면 다시 스와핑한다는 개념입니다. 기껏해야 롤백 스크립트를 실행하고 최악의 경우 데이터베이스를 복원합니다. 당신이 슬롯에서 얻는 것 같아요 모든 웹 사이트와 webjobs의 한꺼번에 업데이 트됩니다. 인스턴스가 많으면 전개 시간이 길어질 수 있습니다. 물론 DB 변경이 없다면 쉽습니다 ...하지만 얼마나 자주 그런 일이 생깁니 까? – Kinetic

관련 문제