2014-03-26 3 views
4

클라우드 서비스의 VS2012 게시에 익숙해졌습니다. 현재 MVC3 응용 프로그램이 포함 된 하나의 인스턴스 webrole이 있습니다. Azure에 문제없이 게시 할 수 있으며 Cloud Service> Web Role> VM을 생성합니다. 벌금. 조금만 걸립니다. 나는 등 WebRole를 구현하는 모든 VM을 교체하지 않고 그냥이 코드 변경을 마이그레이션하는 방법에 약간의 코드 변경을 수행 할 때클라우드 서비스의 배포에 대해 약간 혼란 스럽습니다. 특히 코드를 바꿀 수 있는지 여부는 궁금합니다.

그러나

코드 및 인프라를 분리, 또는 내가 오해 것 같다. 코드 비트를 업데이트하는 방법이 있습니까?

감사합니다.

답변

3

업데이트를 배포 할 때 코드 파일뿐만 아니라 인스턴스 수, 방화벽에서 열 포트, 할당 할 로컬 리소스 등 VM 구성도 포함하여 전체 패키지를 업로드합니다. 이러한 구성 설정은 코드 패키지의 일부이므로 코드 파일을 업데이트하는 것 이상의 작업이 진행됩니다.

그러나 업데이트를 세부적으로 제어하는 ​​데 사용할 수있는 몇 가지 방법이 있습니다.

  1. Web Deploy을 사용하십시오. 한 가지 명심해야 할 것은 자동 서비스 업데이트를 통해 웹 사이트가 마지막으로 완전히 배포 된 패키지로 복원된다는 것입니다.이 패키지는 최신 버전이 아닐 수 있습니다. 이 작업을 준비에 사용하고 프로덕션 배포를위한 전체 패키지 업데이트 만 수행하면됩니다.
  2. Azure Web Site을 대신 사용하십시오. 소스 제어 공급자와의 지속적인 통합을 허용하고 코드를 직접 업데이트 할 수 있습니다.
  3. 대신 Iaas VM을 사용하십시오. 이는 기본적으로 Azure 클라우드에서 사용자 정의 서버를 실행하는 것과 동일하며 운영 체제를 완벽하게 제어 할 수 있습니다. 그러나 OS를 최신 상태로 유지하고 안전하게 유지해야 할 전적인 책임도 있습니다.
  4. Azure 웹 역할 VM에도 enable RDP을 사용할 수 있습니다. 모든 코드 파일과 IIS를 찾을 수 있지만 # 1에 나열된 것과 같은 이유로이 방법으로 코드를 업데이트하지 않는 것이 좋습니다.
+0

감사합니다. 매우 포괄적입니다. 그래서 기본적으로 게시를 사용하십시오. 웹 응용 프로그램의 90 %에 실제로 WAWS를 사용하고 우수하다고 생각합니다. 그러나 우리는 완전한 신뢰를 필요로하는 일부 타사 PDF 구성 요소를 가지고 있으므로 클라우드 서비스에서 실행해야합니다. – SamJolly

+1

@SamJolly : 예. Azure 서비스를 업데이트하는 데 10 ~ 15 분이 걸리며 고통 스럽습니다. 필자는 개인적으로 Azure 에뮬레이터를 과도하게 사용하여보다 신속한 테스트를 수행했습니다. Azure 및 Azure에서 모두 작동하도록 웹 사이트를 구축하는 것이 좋습니다. Azure 통합 테스트를 수행하기 전에 개발/준비 서버에 게시 할 수 있습니다. – mellamokb

+0

에뮬레이터. 예, 사용하고 있지만 MVC 코드가 자체보다는 에뮬레이터를 통해 훨씬 느리게 실행될 수 있음을 발견했습니다. OK 에뮬레이터는 더 느리게 실행되지만 꽤 느린 것처럼 보이고 16GB I7 노트북을 실행 중입니다. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 "디버깅"을 선택한 다음 "인스턴스 시작"을 선택하여 MVC 프로젝트 디버깅을 시도했지만 여전히 느린 것처럼 보였습니다. – SamJolly

1

클라우드 서비스에서 WebDeploy를 활성화하면 web deploy를 사용하여 MVC 응용 프로그램을 게시 할 수 있습니다.

자세한 내용은 http://msdn.microsoft.com/en-us/library/windowsazure/ff683672.aspx을 참조하십시오.

+1

좋은 지적이지만 ... 웹 배포는 단일 인스턴스로 제한되어 있기 때문에 dev/test에서만 유용합니다. –

+0

웹 배포에 대한 흥미로운 점은 단일 인스턴스로 제한됩니다 – SamJolly

2

클라우드 서비스의 코드와 인프라는 실제로 분리되어 있습니다. 업로드하는 것은 코드와 지원 라이브러리/파일을 포함하는 배포 패키지입니다. vhd를 업로드하지 마십시오. Azure는 vhd를 회전시킨 다음 해당 vhd의 파일 폴더에서 코드에 액세스하여 제공합니다. 더 많은 인스턴스로 확장 할 때마다 동일한 프로세스가 발생합니다.

코드를 변경하면 새 배포 패키지가 만들어져 배포됩니다. 전체 업데이트 (vs delete + redeploy)로 수행하는 경우 각 역할은 각 인스턴스에서 업데이트됩니다 (역할 인스턴스가 여러 개인 경우 모두 동시에 업데이트되지는 않음). 배포 내의 단일 역할 만 업데이트하도록 지정할 수도 있습니다 (예 : 웹 역할에 작업자 역할이 있고 모든 작업자 역할 인스턴스를 실행 상태로 유지하려는 경우 유용함).

코드 업데이트가 발생하면 VM은 바뀌지 않지만 은 재활용되고은 다시 시작되며 다시 시작할 때 업데이트 된 코드가 실행됩니다.

+0

감사합니다. 현재 VS2012의 Cloud 프로젝트를 마우스 오른쪽 버튼으로 클릭합니다. 클라우드 서비스가 사용되고 있음을 알리는 팝업이 나타나고이를 대체하려고합니다. 그래서 나는 예를 클릭한다, 그리고 약 10 분 후에 나는 완료를 얻는다. 그래서 나는 이미 업데이트를하고 있거나 가장 가까운 업데이트를하고 있습니까? – SamJolly

2

AzureWebFarm 프로젝트를 사용하여 여러 서버에서 클라우드 서비스와 함께 WebDeploy를 사용할 수 있습니다 (면책 조항 : 유지 관리).

또는 AzureWebFarm.OctopusDeploy 프로젝트와 함께 우수한 Octopus Deploy 배포 기술을 사용할 수도 있습니다 (면책 조항 :이 내용도 유지함).

솔직히 말해서 간단한 웹 응용 프로그램 만 있으면 클라우드 서비스와 함께 사용하지 않을 것입니다. 단지 Web Sites을 사용합니다. 내 블로그 게시물을 통해 자유롭게 클라우드 서비스를 사용해야하는 상황을 확인하십시오.

+0

안녕하세요 Robert, 흥미로운 의견입니다. 내 PDF 구성 요소가 GDI 호출을 사용하므로 클라우드 서비스를 사용해야했습니다. 이는 WAWS에서 방지됩니다. 타사 서버 구성 요소를 생성하는 보고서의 전부는 아니지만 많은 경우에 문제가됩니다. 이것이 완전 신뢰에 연결되어 있는지 확실하지 않지만 MS는 WAWS에서 GDI 기본 호출을 허용 할 의도가 없습니다. 그러나이 코드는 DiscountASP 공유 ASP.NET 호스팅에서 작동합니다. 이렇게 약간 혼란 스러웠습니다. 따라서 GDI 제한 사항 일 수 있습니다. 그러나 저는 WAWS를 좋아합니다. – SamJolly

+1

예 - GDI는 불행히도 웹 사이트에서 작동하지 않는 것들 중 하나입니다. ( –

1

위의 답변은 모두 정확하며 프로덕션 서비스 코드를 변경하려는 경우 설명 된대로 적절한 업그레이드를 수행하고 싶습니다. 그러나 개발/테스트 단계 또는 문제 해결 중에 자주 작은 변화를 만들어 신속하게 테스트하고 싶습니다. 이렇게하려면 Azure VM에 대한 RDP를 통해 코드를 수정하는 방법을 설명하는 http://blogs.msdn.com/b/kwill/archive/2013/09/05/how-to-modify-a-running-azure-service.aspx을 확인하십시오.

+0

고마워요. 매우 흥미 롭습니다 ... – SamJolly