必知 | 容器和微服務(wù)的五個(gè)關(guān)鍵真相
企業(yè)可以將容器與微服務(wù)結(jié)合使用,使其能夠創(chuàng)建更加一致且輕量級(jí)的開發(fā)框架,該框架是云計(jì)算的***選擇。而容器和微服務(wù)是可以在云計(jì)算中實(shí)現(xiàn)更高效率的兩項(xiàng)前沿技術(shù)。雖然它們不需要組合使用,但當(dāng)它們一起使用時(shí),可以提供更多的好處。
容器:
使用容器,可以讓開發(fā)人員通過創(chuàng)建虛擬“沙箱”來更快、更好地工作,從而可以編寫、管理和操作軟件代碼。其優(yōu)點(diǎn)是可以在不影響服務(wù)器或虛擬機(jī)(VM)上運(yùn)行的其他應(yīng)用程序和系統(tǒng)的情況下完成此操作。容器可以提高效率,降低成本,甚至提高安全性。這些易于打包和輕量級(jí)的組件可以與同一虛擬機(jī)中的其他組件一起運(yùn)行。
容器引入的巨大靈活性推動(dòng)了快速采用,從而日益依賴容器技術(shù)。容器已成為虛擬機(jī)的替代品。調(diào)研機(jī)構(gòu)Forrester公司指出,58%的開發(fā)商計(jì)劃在未來一年內(nèi)使用容器或正在計(jì)劃使用容器。與此同時(shí),調(diào)研機(jī)構(gòu)451 Research公司的報(bào)告表明,應(yīng)用容器市場(chǎng)規(guī)模將從2016年的7.62億美元增長(zhǎng)到2020年的27億美元。
微服務(wù):
容器的主要吸引力在于微服務(wù)。這些軟件組件(可能包括代碼、運(yùn)行時(shí)間、系統(tǒng)工具、系統(tǒng)庫(kù)和設(shè)置作為獨(dú)特且謹(jǐn)慎的流程)引入了更加模塊化和高級(jí)的開發(fā)框架。
微服務(wù)通常通過工具欄或菜單提供,允許組織部署軟件,并更快、更持續(xù)地進(jìn)行更改。對(duì)于使用DevOps和其他敏捷方法的組織,此功能尤為重要。
微服務(wù)的根源在于Web服務(wù)。通過將代碼組件組合到功能應(yīng)用程序中,組織可以使用這些預(yù)先設(shè)計(jì)的小型應(yīng)用程序來進(jìn)行軟件開發(fā)。這使企業(yè)能夠更快地推出產(chǎn)品,并更加動(dòng)態(tài)地進(jìn)行更改。
請(qǐng)記住,雖然微服務(wù)不需要容器,但它們從中受益匪淺。具有微服務(wù)的容器允許組織創(chuàng)建更一致和輕量級(jí)的云計(jì)算開發(fā)框架。
以下是有關(guān)使用容器和微服務(wù)的五個(gè)關(guān)鍵真相和事實(shí):
(1)復(fù)雜性可能成為一個(gè)問題
解決方案的積累(在這種情況下是跨多個(gè)容器的微系統(tǒng))可能帶來新問題,有時(shí)甚至是棘手的問題。雖然這兩個(gè)工具(特別是在組合時(shí))可以簡(jiǎn)化和加速開發(fā),但是它們也帶來了新的挑戰(zhàn),有時(shí)還會(huì)帶來棘手的挑戰(zhàn)。
微服務(wù)的數(shù)量及其與容器的所有交叉點(diǎn)轉(zhuǎn)化為不斷變化的環(huán)境。這可能會(huì)迫使組織處理過多的粒度,如果使用過多或映射不正確,可能會(huì)引入延遲。它還可能提高測(cè)試要求。
某些組件是開源的,而其他組件是由商業(yè)公司提供的,這可能會(huì)使問題進(jìn)一步復(fù)雜化。最終,整體框架中的差距可能會(huì)影響可擴(kuò)展性、可靠性和許多其他因素。
成功的關(guān)鍵是建立戰(zhàn)略和強(qiáng)大的框架來支持微服務(wù)和容器。這需要經(jīng)驗(yàn)豐富的開發(fā)人員對(duì)團(tuán)隊(duì)關(guān)鍵成員進(jìn)行***培訓(xùn),以便他們能夠領(lǐng)導(dǎo)計(jì)劃,并使用工具和系統(tǒng)獲得***的優(yōu)勢(shì)。
(2)組織需要新的流程
持續(xù)交付(CD)和持續(xù)集成(CI)框架是大多數(shù)企業(yè)的關(guān)注焦點(diǎn)。這些方法可以釋放卓越的業(yè)務(wù)創(chuàng)新。它們特別適合當(dāng)今的敏捷和DevOps開發(fā)框架,這些框架可以促進(jìn)應(yīng)用程序和更新的快速、增量和連續(xù)部署。
容器和微服務(wù)在很大程度上支持這種方法。然而,有一個(gè)問題:沒有正確的工作流程,組織很難從持續(xù)交付(CD)和持續(xù)集成(CI)中獲取***價(jià)值,并最終從容器和微服務(wù)中獲取***價(jià)值。
在沒有建立基礎(chǔ)和框架的情況下釋放這些工具可能會(huì)增加復(fù)雜性并破壞進(jìn)度。因此,對(duì)于開發(fā)和運(yùn)營(yíng)團(tuán)隊(duì)而言,重點(diǎn)關(guān)注兩個(gè)關(guān)鍵問題:
- 構(gòu)建知識(shí)庫(kù):在接受微服務(wù)和容器之前,業(yè)務(wù)和開發(fā)方面的團(tuán)隊(duì)必須徹底了解持續(xù)交付(CD)和持續(xù)集成(CI)概念和方法。
- 必須建立協(xié)作基礎(chǔ):組織必須為合作伙伴開發(fā)一個(gè)框架,以便以最有效和***效的方式協(xié)同工作以整合容器和微服務(wù)。
(3)監(jiān)測(cè)至關(guān)重要
由于依賴容器和微服務(wù)的開發(fā)環(huán)境可能變得相當(dāng)復(fù)雜并且涉及大量的工具和組件,所以監(jiān)控是成功計(jì)劃的核心。
此外,代碼監(jiān)視必須在容器內(nèi)部進(jìn)行。關(guān)注幾個(gè)關(guān)鍵問題非常重要:
- 了解所需監(jiān)控的范圍和性質(zhì)。監(jiān)控不足可能會(huì)導(dǎo)致開發(fā)團(tuán)隊(duì)感到沮喪和不堪重負(fù)。一個(gè)問題是微服務(wù)在容器和組件之間可能有很大差異。這意味著必須部署跨越整個(gè)容器和微服務(wù)集合的監(jiān)視。
- 了解傳統(tǒng)監(jiān)測(cè)是有限的。傳統(tǒng)的監(jiān)測(cè)方法(即采用儀器的方法)并不一定有效。容器受益于小而孤立的進(jìn)程,并且具有盡可能少的依賴性。
- 監(jiān)控工具必須解決容器和微服務(wù)的獨(dú)特挑戰(zhàn)。確定出現(xiàn)缺陷、錯(cuò)誤和生產(chǎn)問題的位置,并采取措施糾正這些問題涉及更復(fù)雜和細(xì)微差別的方法。監(jiān)視容器和微服務(wù)可能包括各種工具,包括應(yīng)用程序性能監(jiān)視、代碼分析、直接錯(cuò)誤跟蹤、集中式日志記錄,以及圍繞應(yīng)用程序和組件的度量標(biāo)準(zhǔn)。
- 快速無縫地修復(fù)問題。當(dāng)開發(fā)團(tuán)隊(duì)可以確定問題存在的位置時(shí),可以快速回滾或修補(bǔ)問題。這可能涉及刪除或更改,否則可能難以在容器中發(fā)現(xiàn)和填充更改的微服務(wù)。
(4)編排對(duì)成功至關(guān)重要
容器和微服務(wù)的集合不會(huì)自動(dòng)解決組織的DevOps或敏捷性挑戰(zhàn)。需要有效地協(xié)調(diào)這些系統(tǒng)和組件。
編排基本上以智能方式對(duì)容器進(jìn)行聚類,是這個(gè)難題的關(guān)鍵部分。它使可擴(kuò)展性易于管理。容器編排平臺(tái)Kubernetes是開源的,可與大多數(shù)工具和平臺(tái)配合使用。它解決了自動(dòng)化和擴(kuò)展的需求。
許多潛在的解決方案都包含Kubernetes,包括開源Docker,它對(duì)管理單個(gè)圖像實(shí)例更有效。解決方案還可以包含來自AWS、谷歌云和Microsoft Azure等云計(jì)算公司的商業(yè)服務(wù),這些服務(wù)可用于解決更復(fù)雜的分布式應(yīng)用程序。
這些服務(wù)可以完成幾項(xiàng)關(guān)鍵任務(wù)。最重要的是,它們可以:
- 將大量微服務(wù)聯(lián)系在一起。
- 自動(dòng)執(zhí)行一系列任務(wù)和流程。
- 管理服務(wù)的擴(kuò)展。
- 通過在更廣泛的環(huán)境(包括混合云部署)中部署容器和微服務(wù),實(shí)現(xiàn)更高級(jí)別的靈活性。
(5)安全不能是事后想法
容器和微服務(wù)引入了一些重要的安全優(yōu)勢(shì),特別是通過沙盒隔離代碼和應(yīng)用程序,但它們也會(huì)產(chǎn)生新的漏洞。
***的風(fēng)險(xiǎn)之一圍繞著易受特定威脅影響的特定庫(kù)和微服務(wù)。因此,使用容器和微服務(wù)的組織應(yīng)該:
- 采用專門的工具來管理容器安全性,包括處理圖像掃描、圖像管理和維護(hù)可信賴的注冊(cè)表的解決方案。組織還受益于應(yīng)用程序安全軟件,以解決代碼的動(dòng)態(tài)和靜態(tài)掃描,以及處理基于策略的執(zhí)行任務(wù)的軟件。
- 使用在邊界處保護(hù)容器的操作系統(tǒng)或軟件。這種方法很重要,因?yàn)樗梢苑乐怪鳈C(jī)內(nèi)核脫離容器以及保護(hù)容器彼此之間的連接。
- 將容器編排作為安全的關(guān)鍵要素。這包括部署哪些容器到哪些主機(jī)、主機(jī)容量、容器可以被發(fā)現(xiàn)和連接的方式、容器運(yùn)行狀況的管理方式,以及整合到環(huán)境中的開發(fā)人員自助服務(wù)的程度。
- 了解網(wǎng)絡(luò)如何針對(duì)容器和微服務(wù)安全性進(jìn)行配置,包括是否可以對(duì)流量進(jìn)行分段以隔離單個(gè)集群中的不同用戶、團(tuán)隊(duì)、應(yīng)用程序和環(huán)境。這可能需要更先進(jìn)的SDN工具,以解決識(shí)別IP地址和集群的復(fù)雜性。同樣,組織必須解決存儲(chǔ)問題,包括容器在靜止?fàn)顟B(tài)下的方式和位置。
妥善處理這些問題并采取系統(tǒng)方法處理容器和微服務(wù)的組織將處于優(yōu)勢(shì)地位,使他們的發(fā)展努力與當(dāng)今數(shù)字業(yè)務(wù)框架的機(jī)遇和挑戰(zhàn)相匹配。