企業 Web 部署:情節概觀

作者 :Jason Lee

這組教學課程使用具有真實複雜度層級的範例解決方案,以及虛構的企業部署案例,以提供參考實作,並提供工作和逐步解說一般內容。 本主題描述教學課程案例,並介紹範例解決方案。

案例描述

Fabrikam, Inc.是虛構的公司,正在建立解決方案,讓遠端銷售小組從 Web 介面儲存和擷取連絡人資訊。

Fabrikam, Inc. 的應用程式生命週期管理 (ALM) 程式需要將解決方案部署至軟體發展程式的各個階段的三個伺服器環境:

  • 開發人員測試或「沙箱」環境。
  • 內部網路型預備環境。
  • 網際網路面向的生產環境。

這些環境都有不同的組態和安全性需求,而且每個環境都面臨獨特的部署挑戰。

Fabrikam, Inc. 伺服器基礎結構

這是 Fabrikam, Inc. 的高階開發和部署基礎結構。

Fabrikam, Inc. 的高階開發和部署基礎結構

開發人員工作站、原始檔控制基礎結構、開發人員測試環境和預備環境全都位於 Fabrikam.net 網域內的內部網路。 生產環境位於周邊網路, (也稱為 DMZ、非目的地區域,以及受篩選的子網) ,防火牆會與內部網路隔離。 這是常見的部署案例:您通常會使用防火牆或閘道伺服器,將網際網路對向 Web 服務器與內部伺服器基礎結構隔離。

在此範例中:

  • 具有個別組建伺服器的 Team Foundation Server (TFS) 2010 伺服器提供原始檔控制和持續整合 (CI) 功能。
  • 開發人員測試環境包含 Internet Information Services (IIS) 7.5 網頁伺服器和 SQL Server 2008 R2 資料庫伺服器。
  • 生產環境包含 Web Farm Framework (WFF) 控制器伺服器同步處理的多個 IIS 7.5 網頁伺服器,以及 SQL Server 2008 R2 資料庫伺服器。 實際上,資料庫伺服器可能會使用叢集或鏡像來改善延展性和可用性。
  • 預備環境的設計目的是盡可能複寫生產環境的組態。
  • 防火牆和網路隔離原則不允許從內部網路直接、自動部署至周邊網路。

第二個教學課程: 設定 Web 部署的伺服器環境的第二個教學課程會更詳細地說明這些環境的設定。

ALM 的小組角色

這些使用者涉及建立、管理、建置及發佈連絡人管理員解決方案:

  • Matt Hink 是 Fabrikam, Inc. 的 Web 應用程式開發人員。他屬於使用 Visual Studio 2010 開發連絡人管理員解決方案的小組。 Matt 在開發人員測試環境中的伺服器上具有完整的系統管理員許可權,可讓他設定環境以符合其需求。 他也可以存取 Visual Studio 2010 TFS 實例,而該實例會儲存連絡人管理員解決方案的原始程式碼。

  • Robs 是 Fabrikam, Inc. 開發小組的伺服器管理員。 Rob 在 TFS 伺服器上具有系統管理存取權,因此他可以設定 TFS 和 Team Build 的所有層面。 Rob 也有測試與預備網頁伺服器的系統管理存取權,並做為測試與預備環境中資料庫伺服器的資料庫管理員 (DBA) 。 Rob 已在 TFS 伺服器上設定 Team Build 以執行下列工作:

    • 每當使用者簽入檔案至 TFS 時,就會在應用程式上建置和執行單元測試。 這稱為 CI。
    • 一旦應用程式通過單元測試,就會自動將連絡人管理員應用程式部署至測試環境。 這包括在初始部署時將資料庫發佈至測試伺服器,以及在初始部署之後對資料庫進行任何更新。
    • 在單一步驟程式中,將連絡人管理員應用程式部署至預備環境。
    • 建立 Web 套件,讓 Web 服務器管理員和 DBA 可用來將應用程式發佈至生產環境。
  • Lisa Andrews 是負責將應用程式部署至 Fabrikam, Inc. 生產伺服器的伺服器管理員。 她擁有 TFS Team Build 在建置 Contact Manager 應用程式之後儲存 Web 部署套件之共用的讀取權限。 她也有生產 Web 服務器的系統管理存取權,以便將應用程式部署至生產環境。 此外,她會作為 DBA,將資料庫和資料庫更新部署至生產環境中的資料庫伺服器。

連絡管理員解決方案

連絡人管理員解決方案的設計目的是讓已註冊、登入的使用者透過 Web 介面新增和編輯連絡人資訊。 連絡人管理員解決方案包含四個個別專案:

連絡人管理員解決方案的設計目的是讓已註冊、登入的使用者透過 Web 介面新增和編輯連絡人資訊。

  • ContactManager.Mvc。 這是代表解決方案進入點的 ASP.NET MVC3 Web 應用程式專案。 它提供一些基本的 Web 應用程式功能,例如讓使用者能夠建立及檢視連絡人詳細資料。 應用程式依賴 Windows Communication Foundation (WCF) 服務來管理連絡人和 ASP.NET 應用程式服務資料庫來管理驗證和授權。
  • ContactManager.Database。 這是 Visual Studio 2010 資料庫專案。 專案會定義儲存連絡人詳細資料之資料庫的架構。
  • ContactManager.Service。 這是 WCF Web 服務專案。 WCF 會公開端點,允許呼叫端在 Contact Manager 資料庫上執行建立、擷取、更新和刪除 (CRUD) 作業。 此服務依賴 Contact Manager 資料庫和ContactManager.Common.dll元件。
  • ContactManager.Common。 這是類別庫專案。 WCF 服務依賴這個元件中定義的類型。

此系列的第一個教學課程提供解決方案及其部署需求的完整檢閱: 企業中的 Web 部署

部署工作

在大型組織中將應用程式部署至不同環境涉及數個不同的工作。 這些是教學課程涵蓋的重要工作:

在大型組織中將應用程式部署至不同環境涉及數個不同的工作。

以下是從本檔稍早所述使用者的觀點,在部署程式中每個步驟的清單:

  1. 小組的所有成員都會檢閱 Visual Studio 2010 中的連絡人管理員解決方案,以判斷重要的部署需求和問題。
  2. Matt Hink 可以直接將連絡人管理員解決方案從開發人員工作站部署到開發人員測試環境,以進行部署邏輯的初始測試。
  3. Matt Hink 會將應用程式新增至 TFS 中的原始檔控制。
  4. Robs 會在 Team Build 中為連絡人管理員解決方案建立各種組建定義。 每當使用者簽入新程式碼時,一個組建定義會使用 CI 將解決方案部署到開發人員測試環境。 另一個組建定義可讓使用者視需要觸發部署至預備環境。
  5. 每當使用者簽入新的程式碼時,Team Build 會自動建置解決方案元件、執行單元測試,並在組建成功且單元測試成功時將解決方案部署至開發人員測試環境。
  6. 當使用者觸發部署至預備環境時,解決方案會封裝並部署在單一步驟程式中。 此程式也會產生套件,以便手動部署至生產環境。
  7. Lisa Andrews 藉由手動匯入步驟 6 中建立的 Web 套件,將應用程式部署至生產環境。

主要部署問題

連絡人管理員解決方案和 Fabrikam, Inc. 案例強調部署複雜企業級解決方案時可能會遇到的各種常見問題和挑戰。 例如:

  • 您必須能夠將專案部署到多個環境,例如開發人員或測試環境、預備平臺和生產伺服器。 每個環境都必須使用不同的組態設定來部署解決方案。
  • 您必須在單一步驟或自動化建置和部署程式中同時部署多個相依專案。
  • 您必須能夠從自動化程式推動部署。 例如,您想要在簽入新程式碼時,使用 CI 程式將 Web 應用程式部署到預備環境。
  • 您必須能夠控制部署程式,並從 Visual Studio 外部設定部署變數,因為開發人員不太可能擁有正確的組態設定或每個目標環境的必要認證。
  • 您必須部署架構型資料庫專案,並在後續部署時保留現有的資料。
  • 您必須以臨機操作方式部署成員資格資料庫,而不需部署使用者帳戶資料。 您可能也需要更新已部署成員資格資料庫的架構,而不會遺失現有的使用者帳戶資料。
  • 當您將內容部署到各種目標環境時,您必須排除特定檔案或資料夾。

此外,當更新頻繁且累加時管理部署會擲回一些額外的挑戰。 例如:

  • 每次開發人員簽入新程式碼時,您都會執行單元測試。 只有在程式碼通過單元測試時,才想要部署方案。
  • 當您將 Web 應用程式部署至預備或生產環境時,您想要在部署程式期間將使用者重新導向至 app_offline.htm 檔案。
  • 您想要記錄部署活動。 部署程式應該傳送成功或失敗部署的電子郵件通知給指定的收件者。
  • 如果自動化部署失敗,部署程式應該重試目前的部署,或改為部署先前的 Web 套件。