越來越多的開發者和公司選擇將應用程式遷移到雲平臺上,對於真正的企業級產品來說,這個過程不是簡單的點幾個按鈕就大功告成。 我們需要從雲平臺的環境特點出發,對自身的產品做一定的適應調整。 IBM雲平臺專家Sheetal和Ashish總結了應用程式遷移到雲平臺的最佳實踐,包括支援靜默安裝、控制磁碟空間使用、設置應該由 API 或 CLI 來完成、跟蹤和日誌資訊必須通過 API/CLI 收集等。
Sheetal和Ashish將遷移分為3種場景,分別為:
將您的應用程式集成到另一個雲產品中——目前需求是增強現有雲應用程式以及您的應用程式功能。 目標是實現無縫集成。 通常,在需要將新功能引入到現有的產品時,就會涉及從頭開始設計和開發新功能;另一個可選方案是利用一個現有產品(這種情況下,不需要啟用雲),將其功能集成到雲產品。 在這種情況下,您必須確定您的應用程式可以與現有雲產品正確 「連接」。
將您的應用程式添加到另一個在雲中託管的設備——一個雲設備由預先安裝和預配置軟體和應用程式構成;有時也可用作一個自包含伺服器。 當您計畫添加一個附加應用程式到現有雲設備包以增強其功能時,確保您的應用程式可與套裝軟體中的其他應用程式和設定檔以及設備資源依賴項正確交互。
將您的應用程式作為一個獨立的雲設備進行託管——將您的應用程式用於雲環境的一個方法是在其自身的雲設備中使用,特別是如果不需要將它與另一個雲應用程式集成時。
對於如何實現順利遷移,他們提出了應用程式自身調整的若干實踐,包括支援靜默安裝:
在安裝過程中不顯示消息或視窗的安裝稱為靜默安裝。 當將一個應用程式集成到另一個應用程式或一個設備時,它就成為單一產品的一部分,單個安裝程式是首選創建的。 如果您的產品不能以靜默方式安裝,對您的產品來說,在單個安裝過程中資訊來自使用者請求,而此時設備團隊可能不想顯示/詢問其使用者。 這對使用者來說是一種麻煩,對於他們來說並不需要瞭解這些基礎產品的詳細資訊。 如果靜默安裝不可用,您將失去已經取得的高效性,因為對於使用者來說,就像是安裝兩個不同的產品。
控制磁碟空間使用也很重要:您的系統資源應該能夠自動地縮減所占的磁碟空間以説明控制磁片使用。 如果將您產品的功能和流程會產生日誌並跟蹤資料到一個輸出檔案,設備伺服器中應該有一個流程以限制該資料流程來防止記憶體不足問題的出現。 創建一個屬性檔,定義即將生成的輸出檔案的大小和數量。 這些值應該能由系統管理員編輯。 創建一個進程以監控這些檔。
應該由 API 或 CLI 來完成設置和收集跟蹤、日誌資訊:
您必須能夠通過 API 或命令列介面訪問和操作所有配置設置。 由於 REST Web 服務提供的松耦合性、羽量級以及可互通性,它們是非常流行的,可能是您最常遇見的一個。 如果其他流程需要手工更改一些屬性檔或其他檔,可採用它以便於 CLI 或 API 完成那些更改。 如果在設備或者設備部分整體功能的安裝過程中需要完成一個特定設置或配置,使用這些 ACL 或 API 來完成。 設計應該是這樣的,設備不需要瞭解應用程式的內部設計就能夠對設置進行任意更改,你應該可以使用 CLI 來完成。 另外,無論在何處更改這類配置或設置無論在何處更改,在理想情況下,應及時生效,而不需要要重啟應用程式;這樣就不會擾亂整個設備的運行。
當產品中出現問題時,要完全診斷清楚,從產品中收集日誌是非常重要的。 採用命令列機制(或其他)來執行選擇性或隔離診斷操作;操作將不會影響整個設備。 這包括收集可直接被管理員所用的日誌/跟蹤資訊的功能。
高可用性支援是一個很好的優勢:大多數 IBM 設備嘗試支援高可用性;客戶也有此需求。 如果您的產品不支援高可用性,那麼該設備的整個高可用性功效就會大打折扣。 讓您的產品在開發初期就完成高可用性設計或者留有一定空間將來開發,都是一個不錯的主意。
除此之外,還包括:
提供生命週期功能——任何作為您應用程式的一部分運行的進程、執行緒或守護進程必須有其自己的生命週期功能。 它應該提供開啟、暫停和停止的常見狀態,而且應該有一個方式可讓產品自己使用 CLI 或 API 控制這些狀態。
所有配置均應是可重配置的——預安裝階段假設的任何配置必須在設備創建時能夠進行重置(Reset),也可選項根據使用者需求重新配置。
能夠在設備中啟動和禁用應用程式——這對您的應用程式來說是一個很強大的優勢,可通過使用一個命令列、API 或 GUI 啟動或禁用應用程式,這樣產品相關檔仍然駐留在磁片中,但是不能消耗其託管系統的 CPU 和記憶體資源。 這樣,您就可以將您的產品嵌入到另一個產品中,在需要時通過開啟或關閉來使用它。 在雲中,一個設備可以通過解除相關特性來關閉它所提供的某些服務,即使是在該應用程式正託管初始產品的時候。
命令應可在任何 shell 中運行——儘量確保所有命令不受限於任何特定 shell。 與您應用程式相關的 CLI 命令(至少是最重要的那個)不應限制為只能在某個 shell 上運行。 集成到您產品的設備可能在不同的 shell 上運行,不一定是您選擇的那個;在這種情況下,您將不能運行 CLI 命令,僅僅因為 shell 不同。
啟用版本戳記、使資料備份和恢復可用、應用程式應是獨立的自給自足的、API 應該能夠將資料導入或匯出應用程式、提供一個程式設計式方法來管理使用者、最大限度地減少對外部的依賴關係、有一個可以徹底終止程式的 API等也在最佳實踐之列。
(責任編輯:蒙遺善)