摘要:綜上所述,為使傳統應用程序容器化,有以下幾種路徑擴展重構或者重建。在中運行應用程序的最大障礙之一是臨時文件系統。大體來說,利用容器技術實現傳統應用程序的現代化并沒有硬性規則。
技術領域是不斷變化的,因此,任何應用程序都可能在很短時間內面臨過時甚至淘汰,更新換代的速度之快給人的感覺越來越強烈,我們如何使傳統應用程序保持活力不落伍?工程師想的可能是從頭開始重建傳統應用程序,這與公司的業務目標和產品時間表通常是相悖的。如果現階段正在運行的應用程序是正常工作的,這時候你很難找到正當而充分的理由讓技術人員花六個月重寫應用程序。代碼債似乎注定意味著失敗。
眾所周知,產品開發向來都不是非黑即白那么簡單,必須要權衡各方妥協折衷進行,雖然完全重寫的可行性不大,但應用程序現代化的長遠利益仍然值得重視。雖然許多組織尚未能構建全新的云本地應用程序,但通過使用一些技術比如Docker等容器技術,仍然能夠實現傳統應用程序的現代化。
這些現代化技術最終可以歸納為三種類別:擴展,重構和重建。在開始介紹它們之前,讓我們先來談談關于Dockerfile的一些基礎知識。
Dockerfile基礎知識對于初學者來說,Docker是一個容器化平臺,它包含了基本上可以安裝在服務器上的所有東西,即“在一個完整的文件系統中包含一個軟件運行所需的一切:代碼,運行時,系統工具,系統庫”, 而且沒有虛擬化平臺的開銷。
雖然容器的優點和缺點不在本文的討論范圍之內,但還是不得不提,Docker的最大優點之一即只需幾行代碼就能夠快速輕松地啟動輕量級、可重復的服務器環境。這種配置是通過一個名為Dockerfile的文件完成的,Dockerfile本質上是Docker用來構建容器鏡像的藍圖。在這里,Dockerfile啟動了一個簡單的基于Python的Web服務器以供參考:
# Use the python:2.7 base image FROM python:2.7 # Expose port 80 internally to Docker process EXPOSE 80 # Set /code to the working directory for the following commands WORKDIR /code # Copy all files in current directory to the /code directory ADD . /code # Create the index.html file in the /code directory RUN touch index.html # Start the python web server CMD python index.py
這個例子比較簡單,但已經很能說明關于Dockerfile一些基礎知識,涵蓋擴展預先存在的鏡像、暴露端口以及運行命令和服務。只要基礎源代碼架構設計合理,此時只需幾個指令就可以啟動非常強大的微服務。
應用程序現代化從根本上說,傳統應用程序容器化并不困難,困難在于并不是每個應用程序都是建構在容器化的基礎上。Docker有一個臨時文件系統,這意味著容器內的存儲并不持久。如果不采取一些特定措施,保存在Docker容器中的任何文件都可能丟失。此外,并行化是應用程序容器化的面臨另一個難題,因為Docker的一個最大優點就在于它能快速適應日益增長的流量需求,這些應用程序需要能夠與多個實例并行運行。
綜上所述,為使傳統應用程序容器化,有以下幾種路徑:擴展、重構或者重建。哪種方法最適合,則完全取決于組織的需求和資源。
擴展一般來說,擴展非容器化應用程序的已有功能在這幾種辦法中最為簡便,但如果處理不好,所做的更改可能會導致技術債顯著增加。利用容器技術擴展傳統應用程序的最好辦法是通過微服務和API。雖然傳統應用程序本身并沒有被容器化,為使產品實現現代化,可將新特性從基于Docker的微服務中隔離,同時開發遺留代碼,易于將來重構或重建。
從高層面來說,對于那些在不久的將來很可能變得落后或必須經歷重建的應用程序而言,擴展是很好的選擇——不過代碼庫越老,為適應Docker平臺,應用程序的某些部分就越需要徹底重構。
重構但有時,通過微服務或API擴展應用程序是不實際甚至不可行的。無論是欠缺要添加的新功能,還是通過擴展添加新功能很困難,重構舊代碼庫的某些部分都可能是必要的。將當前應用程序的各個現有功能從容器化的微服務中隔離出來,就能輕松完成重構了。例如,將整個社交網絡重構到Docker化的應用程序可能是不切實際的,但通過退出運行用戶搜索引擎,就能夠將各個組件作為多帶帶的Docker容器隔離。
重構傳統應用程序另一途徑是用于寫入日志、用戶文件等內容的存儲機制。在Docker中運行應用程序的最大障礙之一是臨時文件系統。這種情況可以通過幾種方式進行處理,最常見的是通過使用基于云的存儲方法,如AmazonS3或Google云存儲。通過重構文件存儲方法以利用這些平臺,應用程序可以很容易地在Docker容器中運行而不丟失任何數據。
重建當傳統應用程序無法支持多個運行的實例時,不從頭重建的話,可能無法添加Docker支持。傳統應用程序服務周期可以很長,但如果應用程序的架構和設計決策在初始階段就不夠合理的話,則可能影響將來對應用程序的有效重構。意識到即將發生的阻礙對于識別生產率風險至關重要。
大體來說,利用容器技術實現傳統應用程序的現代化并沒有硬性規則。至于哪種才是最佳決策則要視產品需求和業務需求而定。但是,要想確保應用程序穩定運行而不損失生產力,充分了解哪些決策會如何影響組織長期運行,是至關重要的。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/26825.html
摘要:許多人認為數字化轉型是提高競爭力的關鍵,也是保持快速變化的商業環境的必要條件,對于許多企業來說,云計算對于其業務的成功至關重要。每個企業的云計算戰略都是獨一無二的,而遵循相同的原則,企業的云遷移之旅都將獲得業務的發展機會。數字化轉型繼續為企業的業務發展創造機會。由于英國脫歐的不確定性,英國很多企業正在考慮實施數字化轉型計劃,以確保業務持續增長。許多人認為數字化轉型是提高競爭力的關鍵,也是保持...
摘要:云原生是指出生在云里的應用,與本地應用截然不同。可以看看關于甲骨文的這篇報道,弄明白什么是真正的云收入。這包括通過以下方式重構應用,以較大限度地利用云原生的好處一從傳統的數據存儲如甲骨文遷移到云原生數據存儲如。 最近關于云原生的談論很多,人們像之前了解云的其他概念一樣在尋求對這個術語的解釋。凱德·梅斯在Wired上寫道:這個詞在近年來有如此多的含義。但請記?。哼@些含義來自IBM、HP、EMC...
摘要:建模語言建模語言是可用于表達信息或知識或系統的任何人造語言,該結構由一組一致的規則定義,目標是可視化,推理,驗證和傳達系統設計。將這些文件安排到不同的地方稱為源代碼樹。源代碼樹的結構通常反映了軟件的體系結構。 大綱 軟件構建的一般過程: 編程/重構 審查和靜態代碼分析 調試(傾倒和記錄)和測試 動態代碼分析/分析 軟件構建的狹義過程(Build): 構建系統:組件和過程 構建變體...
摘要:不過,根據近期的一份調查問卷表示,在所有的參與者之中,只有的組織對于他們的云遷移體驗感到非常滿意。在本文中,我們將探索整個云遷移周期中的四個階段??梢钥隙ǖ氖?,云遷移是一項不會真正結束的任務。 軟件組織正在快速地實施云技術,但遷移始終是一個無法回避的挑戰。哪些部分是需要你密切留意的?哪些應用程序更適合于進行遷移?如何對應用程序進行重構以適用于云端?經歷了這一轉變的先行者為我們留下了什么啟示?...
閱讀 1425·2021-09-23 11:21
閱讀 3123·2019-08-30 14:14
閱讀 3205·2019-08-30 13:56
閱讀 4158·2019-08-30 11:20
閱讀 1963·2019-08-29 17:23
閱讀 2780·2019-08-29 16:14
閱讀 1709·2019-08-28 18:18
閱讀 1501·2019-08-26 12:14