軟體部署涵蓋所有使軟體系統可供使用的活動。 一般部署流程包含多項相互關聯的活動,並可能有過渡。 每個軟體系統都是獨一無二的,因此部署是一個必須依照特定需求或特性進行客製化的一般流程。
有些人會交互使用「部署」和「安裝」這兩個字詞,但安裝軟體只是部署程序的一部分。 部署涉及更多的內容。 部署活動可包含:
- 為伺服器建立「機架與堆疊」。
- 將軟體的更新部分部署到該伺服器。
- 使用指令碼和基礎結構即程式碼之類的東西。
- 甚至在辦公室中,使用 USB 磁碟機手動為電腦安裝軟體。
手動部署軟體勞動密集且擴展性不佳。 自動化可讓部署更加容易,並在為整個組織推出新軟體或更新現有軟體時,更符合成本效益地確保一致性。
此學習路徑著重於如何最佳部署軟體以提升可靠性。 本課程模組除了說明軟體部署之外,還會說明如何部署雲端基礎結構。 所謂的部署服務或解決方案,可能表示部署軟體、雲端基礎結構、設定,以及所有讓軟體系統能夠確實運作的必要工作。
案例:大規模部署
「大規模」(epic) 意指「重大、巨大或龐大」,但在本次討論的內容中,這個詞不是指好的事情。 Jez Humble 和 David Farley 在他們的著作《 持續交付:透過建置、測試與部署自動化實現可靠的軟體發布 》中使用了這個詞,因為它代表了一項龐大(且極具顛覆性)的工程。 以下是通常發生的例子:
- 某個組織開發銷售相關的應用程式。 這個應用程式每年就只會更新兩次。
- 在這兩次更新期間,需要部署所有新功能、大小 Bug 修正和相依性更新。
- 年度第一次部署排程於勞動節週末,而第二次則是在感恩節之後的週末進行。
- 每次更新都是「全員出動」的狀態。 應用程式團隊、支援團隊、基礎設施團隊及管理層皆參與部署。
- 當進行部署時,需要暫時停止服務。
- 過往經驗告訴我們,這樣的部署總是充斥著問題、隨傳隨到的工程作業、疑難排解以及設定管理的變更。
- 大規模部署很難有一帆風順的情況,即使完成部署,通常也會是東拼西湊的模樣,且無法重現。
部署情況不佳。 大規模部署方法是一項艱鉅的手動任務,且會產生不少問題:
- 很複雜。
- 高壓。
- 高風險。
- 速度緩慢。
- 因為所有步驟都很複雜,以致於無法重現。
- 通常需要數名個別的專家來完成部署。
由於這個過程漫長且繁瑣,必須安排在對使用者生產力影響最小的時段,也就是說,這些時間對部署團隊來說可能很不方便,例如週末和假日。
小組成員可能會為了在時間範圍內完成龐大的作業而備感壓力,導致在設定上出現錯誤。 此外,兩次部署之間的間隔太長,可能會導致您忘記如何進行部署。
部署難題
軟體部署是複雜的工作,當「累積了」多個大型變更、修正和新增功能,並一口氣部署所有項目時,便會提升複雜性,因而增加發生錯誤的機率。 此外,當發生錯誤時,這樣的複雜性會造成更難以追蹤問題成因。
複雜性也會為使用者帶來問題,因為使用者可能必須一次學習許多新功能和變更,更別提大規模部署的複雜性所產生的 Bug。
應該有更好的方法,而確實有。 好消息是,傳統的史詩級部署策略並非唯一選擇。 你會在下一個單元學到更好的流程方法。