가동 중지 시간 없이 IIS 응용 프로그램에 새 버전의 응용 프로그램 배포

가동 중지 시간 없이 IIS 응용 프로그램에 새 버전의 응용 프로그램 배포

인트라넷 네트워크의 키오스크에서 실행되는 작은 AngularJS 웹 애플리케이션이 있습니다. 저는 가동 중지 시간 없이 웹 인터페이스를 통해 원격으로 제어할 수 있는 자동화된 방식으로 배포를 수행하는 임무를 받았습니다. 소규모 애플리케이션이므로 로드 밸런서나 유사한 설정이 없습니다. 두 가지 옵션을 살펴보았는데,

옵션 1: 폴더에 애플리케이션 버전을 다운로드하고 가상 디렉터리의 실제 경로를 새 버전의 폴더 경로로 변경합니다. 이는 다음 코드와 함께 Microsoft.Web.Administration 라이브러리를 사용하여 달성할 수 있습니다.

            ServerManager sm = new ServerManager();
            Site site = sm.Sites["Default Web Site"];            
            site.Applications[virtualDirectory].VirtualDirectories["/"].PhysicalPath = newPath;
            sm.CommitChanges();

이 접근 방식에서는

  1. 스위치는 얼마나 빨리 반영되나요?
  2. 일부 키오스크가 여전히 이전 버전의 애플리케이션에서 작동할 가능성은 얼마나 됩니까?
  3. 전환이 이루어지는 짧은 기간 사이에 가동 중지 시간이 발생할 가능성이 있습니까?
  4. 이 기간 동안 IIS에 요청하면 오류가 반환됩니까?

옵션 2:IIS의 URL 재작성 기능을 사용합니다. 기본적으로 저는 애플리케이션의 web.config에 새로운 재작성 규칙을 프로그래밍 방식으로 추가하여 애플리케이션의 최신 버전이 될 다른 하위 폴더로 리디렉션할 것입니다.

이 접근 방식에서는

  1. URL 재작성 규칙은 얼마나 빨리 반영되고 재작성이 시작됩니까?
  2. 일부 키오스크가 여전히 이전 버전의 애플리케이션에서 작동할 가능성은 얼마나 됩니까?
  3. 다시 쓰기 규칙이 web.config에 추가되는 기간 사이에 가동 중지 시간이 발생할 가능성이 있습니까?
  4. 이 기간 동안 IIS에 요청하면 오류가 반환됩니까?
  5. URL 재작성에 대한 성능 비용이 발생합니까?

친절하게 도와주세요. 이 두 접근 방식이 모두 내 작업에 적합하지 않습니까? 이 요구 사항에 대한 다른 대안이 있습니까?

답변1

MSDeploy는 자동화된 원격 배포 부분을 처리할 수 있어야 합니다. 자동화된 방식으로 애플리케이션 트래픽을 다른 가상 디렉터리로 보내는 다른 서버나 다른 방법이 없는 경우 가동 중지 시간이 없다는 것은 실용적인 요청이 아닙니다. 이는 마치 자동차가 1대 있는데 매장에 있는 동안 계속 운전할 수 있기를 원하는 것과 같습니다. 차량이 매장에 있는 동안 차량을 운전하려면 임시 차량이든 아니든 다른 차량이 필요합니다.

관련 정보