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