何謂軟體部署?

已完成

根據維基百科,「軟體部署」由所有使軟體系統可用的活動所組成。一般部署流程由數個相互關聯的活動所組成,這些活動之間可能會相互轉換。 每個軟體系統都是唯一的;因此,「部署」應視為需要根據特定需求或特性進行客製化的一般程序。

有些人會交互使用「部署」和「安裝」這兩個字詞,但安裝軟體只是部署程序的一部分。 部署涉及更多的作業。 部署活動可包含:

  • 為伺服器建立「機架與堆疊」。
  • 將軟體的更新部分部署到該伺服器。
  • 使用指令碼和基礎結構即程式碼之類的東西。
  • 甚至在辦公室中,使用 USB 磁碟機手動為電腦安裝軟體。

手動部署軟體非常耗費人力,且難以擴大部署規模。 自動化可讓部署更加容易,並在為整個組織推出新軟體或更新現有軟體時,更符合成本效益地確保一致性。

本學習路徑的重點在於如何透過最佳做法部署軟體以提升可靠性。 本課程模組除了說明軟體部署之外,還會說明如何部署雲端基礎結構。 所謂的部署服務或解決方案,可能表示部署軟體、雲端基礎結構、設定,以及所有讓軟體系統能夠確實運作的必要工作。

案例:大規模部署

「大規模」(epic) 意指「重大、巨大或龐大」,但在本次討論的內容中,這個詞不是指好的事情。 「大規模」一詞首次出現於 Jez Humble 的 利用自動化的建置、測試與部署完美創造出可信賴的軟體發佈 (Continuous Delivery:Reliable Software Releases through Build, Test, and Deployment Automation),該詞因為表示大規模 (及具大規模干擾性) 的工作而得名。 以下是大規模部署的常見範例:

  • 某個組織開發銷售相關的應用程式。 這個應用程式每年就只會更新兩次。
  • 在這兩次更新期間,需要部署所有新功能、大小 Bug 修正和相依性更新。
  • 年度第一次部署排程於勞動節週末,而第二次則是在感恩節之後的週末進行。
  • 每次更新都是「公司全體總動員」。 應用程式小組、支援小組、基礎結構小組、管理階層 – 所有人員都必須參與部署。
  • 當進行部署時,需要暫時停止服務。
  • 過往經驗告訴我們,這樣的部署總是充斥著問題、隨傳隨到的工程作業、疑難排解以及設定管理的變更。
  • 大規模部署很難有一帆風順的情況,即使完成部署,通常也會是東拼西湊的模樣,且無法重現。

這不是理想的部署狀況。 大規模部署方法是一項艱鉅的手動任務,且會產生不少問題:

  • 很複雜。
  • 高壓。
  • 高風險。
  • 速度緩慢。
  • 因為所有步驟都很複雜,以致於無法重現。
  • 通常需要數名個別的專家來完成部署。

因為程序很長且棘手,所以必須安排在僅會對使用者生產力造成最小影響的時段,這些時段則可能對部署小組造成困擾 (例如週末和假日)。

小組成員可能會為了在時間範圍內完成龐大的作業而備感壓力,導致在設定上出現錯誤。 此外,兩次部署之間的間隔太長,可能會導致您忘記如何進行部署。

部署難題

軟體部署是複雜的工作,當「累積了」多個大型變更、修正和新增功能,並一口氣部署所有項目時,便會提升複雜性,因而增加發生錯誤的機率。 此外,當發生錯誤時,這樣的複雜性會造成更難以追蹤問題成因。

複雜性也會為使用者帶來問題,因為使用者可能必須一次學習許多新功能和變更,更別提大規模部署的複雜性所產生的 Bug。

應該有更理想的方式,也確實有。 好消息是,傳統的大規模部署策略並非唯一選項。 我們會在下一個單元中了解處理此流程的更理想方式。

檢定您的知識

1.

「大規模部署」的其中一個特性是什麼?