摘要:綜上所述,為使傳統(tǒng)應(yīng)用程序容器化,有以下幾種路徑擴(kuò)展重構(gòu)或者重建。在中運(yùn)行應(yīng)用程序的最大障礙之一是臨時(shí)文件系統(tǒng)。大體來(lái)說(shuō),利用容器技術(shù)實(shí)現(xiàn)傳統(tǒng)應(yīng)用程序的現(xiàn)代化并沒(méi)有硬性規(guī)則。
技術(shù)領(lǐng)域是不斷變化的,因此,任何應(yīng)用程序都可能在很短時(shí)間內(nèi)面臨過(guò)時(shí)甚至淘汰,更新?lián)Q代的速度之快給人的感覺(jué)越來(lái)越強(qiáng)烈,我們?nèi)绾问箓鹘y(tǒng)應(yīng)用程序保持活力不落伍?工程師想的可能是從頭開(kāi)始重建傳統(tǒng)應(yīng)用程序,這與公司的業(yè)務(wù)目標(biāo)和產(chǎn)品時(shí)間表通常是相悖的。如果現(xiàn)階段正在運(yùn)行的應(yīng)用程序是正常工作的,這時(shí)候你很難找到正當(dāng)而充分的理由讓技術(shù)人員花六個(gè)月重寫應(yīng)用程序。代碼債似乎注定意味著失敗。
眾所周知,產(chǎn)品開(kāi)發(fā)向來(lái)都不是非黑即白那么簡(jiǎn)單,必須要權(quán)衡各方妥協(xié)折衷進(jìn)行,雖然完全重寫的可行性不大,但應(yīng)用程序現(xiàn)代化的長(zhǎng)遠(yuǎn)利益仍然值得重視。雖然許多組織尚未能構(gòu)建全新的云本地應(yīng)用程序,但通過(guò)使用一些技術(shù)比如Docker等容器技術(shù),仍然能夠?qū)崿F(xiàn)傳統(tǒng)應(yīng)用程序的現(xiàn)代化。
這些現(xiàn)代化技術(shù)最終可以歸納為三種類別:擴(kuò)展,重構(gòu)和重建。在開(kāi)始介紹它們之前,讓我們先來(lái)談?wù)勱P(guān)于Dockerfile的一些基礎(chǔ)知識(shí)。
Dockerfile基礎(chǔ)知識(shí)對(duì)于初學(xué)者來(lái)說(shuō),Docker是一個(gè)容器化平臺(tái),它包含了基本上可以安裝在服務(wù)器上的所有東西,即“在一個(gè)完整的文件系統(tǒng)中包含一個(gè)軟件運(yùn)行所需的一切:代碼,運(yùn)行時(shí),系統(tǒng)工具,系統(tǒng)庫(kù)”, 而且沒(méi)有虛擬化平臺(tái)的開(kāi)銷。
雖然容器的優(yōu)點(diǎn)和缺點(diǎn)不在本文的討論范圍之內(nèi),但還是不得不提,Docker的最大優(yōu)點(diǎn)之一即只需幾行代碼就能夠快速輕松地啟動(dòng)輕量級(jí)、可重復(fù)的服務(wù)器環(huán)境。這種配置是通過(guò)一個(gè)名為Dockerfile的文件完成的,Dockerfile本質(zhì)上是Docker用來(lái)構(gòu)建容器鏡像的藍(lán)圖。在這里,Dockerfile啟動(dòng)了一個(gè)簡(jiǎn)單的基于Python的Web服務(wù)器以供參考:
# 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
這個(gè)例子比較簡(jiǎn)單,但已經(jīng)很能說(shuō)明關(guān)于Dockerfile一些基礎(chǔ)知識(shí),涵蓋擴(kuò)展預(yù)先存在的鏡像、暴露端口以及運(yùn)行命令和服務(wù)。只要基礎(chǔ)源代碼架構(gòu)設(shè)計(jì)合理,此時(shí)只需幾個(gè)指令就可以啟動(dòng)非常強(qiáng)大的微服務(wù)。
應(yīng)用程序現(xiàn)代化從根本上說(shuō),傳統(tǒng)應(yīng)用程序容器化并不困難,困難在于并不是每個(gè)應(yīng)用程序都是建構(gòu)在容器化的基礎(chǔ)上。Docker有一個(gè)臨時(shí)文件系統(tǒng),這意味著容器內(nèi)的存儲(chǔ)并不持久。如果不采取一些特定措施,保存在Docker容器中的任何文件都可能丟失。此外,并行化是應(yīng)用程序容器化的面臨另一個(gè)難題,因?yàn)镈ocker的一個(gè)最大優(yōu)點(diǎn)就在于它能快速適應(yīng)日益增長(zhǎng)的流量需求,這些應(yīng)用程序需要能夠與多個(gè)實(shí)例并行運(yùn)行。
綜上所述,為使傳統(tǒng)應(yīng)用程序容器化,有以下幾種路徑:擴(kuò)展、重構(gòu)或者重建。哪種方法最適合,則完全取決于組織的需求和資源。
擴(kuò)展一般來(lái)說(shuō),擴(kuò)展非容器化應(yīng)用程序的已有功能在這幾種辦法中最為簡(jiǎn)便,但如果處理不好,所做的更改可能會(huì)導(dǎo)致技術(shù)債顯著增加。利用容器技術(shù)擴(kuò)展傳統(tǒng)應(yīng)用程序的最好辦法是通過(guò)微服務(wù)和API。雖然傳統(tǒng)應(yīng)用程序本身并沒(méi)有被容器化,為使產(chǎn)品實(shí)現(xiàn)現(xiàn)代化,可將新特性從基于Docker的微服務(wù)中隔離,同時(shí)開(kāi)發(fā)遺留代碼,易于將來(lái)重構(gòu)或重建。
從高層面來(lái)說(shuō),對(duì)于那些在不久的將來(lái)很可能變得落后或必須經(jīng)歷重建的應(yīng)用程序而言,擴(kuò)展是很好的選擇——不過(guò)代碼庫(kù)越老,為適應(yīng)Docker平臺(tái),應(yīng)用程序的某些部分就越需要徹底重構(gòu)。
重構(gòu)但有時(shí),通過(guò)微服務(wù)或API擴(kuò)展應(yīng)用程序是不實(shí)際甚至不可行的。無(wú)論是欠缺要添加的新功能,還是通過(guò)擴(kuò)展添加新功能很困難,重構(gòu)舊代碼庫(kù)的某些部分都可能是必要的。將當(dāng)前應(yīng)用程序的各個(gè)現(xiàn)有功能從容器化的微服務(wù)中隔離出來(lái),就能輕松完成重構(gòu)了。例如,將整個(gè)社交網(wǎng)絡(luò)重構(gòu)到Docker化的應(yīng)用程序可能是不切實(shí)際的,但通過(guò)退出運(yùn)行用戶搜索引擎,就能夠?qū)⒏鱾€(gè)組件作為多帶帶的Docker容器隔離。
重構(gòu)傳統(tǒng)應(yīng)用程序另一途徑是用于寫入日志、用戶文件等內(nèi)容的存儲(chǔ)機(jī)制。在Docker中運(yùn)行應(yīng)用程序的最大障礙之一是臨時(shí)文件系統(tǒng)。這種情況可以通過(guò)幾種方式進(jìn)行處理,最常見(jiàn)的是通過(guò)使用基于云的存儲(chǔ)方法,如AmazonS3或Google云存儲(chǔ)。通過(guò)重構(gòu)文件存儲(chǔ)方法以利用這些平臺(tái),應(yīng)用程序可以很容易地在Docker容器中運(yùn)行而不丟失任何數(shù)據(jù)。
重建當(dāng)傳統(tǒng)應(yīng)用程序無(wú)法支持多個(gè)運(yùn)行的實(shí)例時(shí),不從頭重建的話,可能無(wú)法添加Docker支持。傳統(tǒng)應(yīng)用程序服務(wù)周期可以很長(zhǎng),但如果應(yīng)用程序的架構(gòu)和設(shè)計(jì)決策在初始階段就不夠合理的話,則可能影響將來(lái)對(duì)應(yīng)用程序的有效重構(gòu)。意識(shí)到即將發(fā)生的阻礙對(duì)于識(shí)別生產(chǎn)率風(fēng)險(xiǎn)至關(guān)重要。
大體來(lái)說(shuō),利用容器技術(shù)實(shí)現(xiàn)傳統(tǒng)應(yīng)用程序的現(xiàn)代化并沒(méi)有硬性規(guī)則。至于哪種才是最佳決策則要視產(chǎn)品需求和業(yè)務(wù)需求而定。但是,要想確保應(yīng)用程序穩(wěn)定運(yùn)行而不損失生產(chǎn)力,充分了解哪些決策會(huì)如何影響組織長(zhǎng)期運(yùn)行,是至關(guān)重要的。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/26825.html
摘要:許多人認(rèn)為數(shù)字化轉(zhuǎn)型是提高競(jìng)爭(zhēng)力的關(guān)鍵,也是保持快速變化的商業(yè)環(huán)境的必要條件,對(duì)于許多企業(yè)來(lái)說(shuō),云計(jì)算對(duì)于其業(yè)務(wù)的成功至關(guān)重要。每個(gè)企業(yè)的云計(jì)算戰(zhàn)略都是獨(dú)一無(wú)二的,而遵循相同的原則,企業(yè)的云遷移之旅都將獲得業(yè)務(wù)的發(fā)展機(jī)會(huì)。數(shù)字化轉(zhuǎn)型繼續(xù)為企業(yè)的業(yè)務(wù)發(fā)展創(chuàng)造機(jī)會(huì)。由于英國(guó)脫歐的不確定性,英國(guó)很多企業(yè)正在考慮實(shí)施數(shù)字化轉(zhuǎn)型計(jì)劃,以確保業(yè)務(wù)持續(xù)增長(zhǎng)。許多人認(rèn)為數(shù)字化轉(zhuǎn)型是提高競(jìng)爭(zhēng)力的關(guān)鍵,也是保持...
摘要:云原生是指出生在云里的應(yīng)用,與本地應(yīng)用截然不同。可以看看關(guān)于甲骨文的這篇報(bào)道,弄明白什么是真正的云收入。這包括通過(guò)以下方式重構(gòu)應(yīng)用,以較大限度地利用云原生的好處一從傳統(tǒng)的數(shù)據(jù)存儲(chǔ)如甲骨文遷移到云原生數(shù)據(jù)存儲(chǔ)如。 最近關(guān)于云原生的談?wù)摵芏啵藗兿裰傲私庠频钠渌拍钜粯釉趯で髮?duì)這個(gè)術(shù)語(yǔ)的解釋。凱德·梅斯在Wired上寫道:這個(gè)詞在近年來(lái)有如此多的含義。但請(qǐng)記住:這些含義來(lái)自IBM、HP、EMC...
摘要:建模語(yǔ)言建模語(yǔ)言是可用于表達(dá)信息或知識(shí)或系統(tǒng)的任何人造語(yǔ)言,該結(jié)構(gòu)由一組一致的規(guī)則定義,目標(biāo)是可視化,推理,驗(yàn)證和傳達(dá)系統(tǒng)設(shè)計(jì)。將這些文件安排到不同的地方稱為源代碼樹(shù)。源代碼樹(shù)的結(jié)構(gòu)通常反映了軟件的體系結(jié)構(gòu)。 大綱 軟件構(gòu)建的一般過(guò)程: 編程/重構(gòu) 審查和靜態(tài)代碼分析 調(diào)試(傾倒和記錄)和測(cè)試 動(dòng)態(tài)代碼分析/分析 軟件構(gòu)建的狹義過(guò)程(Build): 構(gòu)建系統(tǒng):組件和過(guò)程 構(gòu)建變體...
摘要:不過(guò),根據(jù)近期的一份調(diào)查問(wèn)卷表示,在所有的參與者之中,只有的組織對(duì)于他們的云遷移體驗(yàn)感到非常滿意。在本文中,我們將探索整個(gè)云遷移周期中的四個(gè)階段。可以肯定的是,云遷移是一項(xiàng)不會(huì)真正結(jié)束的任務(wù)。 軟件組織正在快速地實(shí)施云技術(shù),但遷移始終是一個(gè)無(wú)法回避的挑戰(zhàn)。哪些部分是需要你密切留意的?哪些應(yīng)用程序更適合于進(jìn)行遷移?如何對(duì)應(yīng)用程序進(jìn)行重構(gòu)以適用于云端?經(jīng)歷了這一轉(zhuǎn)變的先行者為我們留下了什么啟示?...
閱讀 1408·2021-09-23 11:21
閱讀 3105·2019-08-30 14:14
閱讀 3187·2019-08-30 13:56
閱讀 4136·2019-08-30 11:20
閱讀 1949·2019-08-29 17:23
閱讀 2765·2019-08-29 16:14
閱讀 1693·2019-08-28 18:18
閱讀 1490·2019-08-26 12:14