日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

云原生全景图之五:应用程序定义和开发层

發(fā)布時間:2024/8/23 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 云原生全景图之五:应用程序定义和开发层 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者 | Catherine Paganini、Jason Morgan

來源 | K8sMeetup

頭圖 | 下載于視覺中國

前文介紹了如何將所有應(yīng)用程序組件作為整體來編排和管理(編排和管理層)。本文將介紹云原生全景圖的最上層:應(yīng)用程序定義和開發(fā)層。

現(xiàn)在我們來到了云原生全景圖的最上層。應(yīng)用程序定義和開發(fā)層,顧名思義,聚焦在幫助工程師構(gòu)建應(yīng)用程序并使其運行的工具上。本系列前面的文章都是關(guān)于構(gòu)建可靠安全的環(huán)境以及提供所有必需的應(yīng)用程序依賴,應(yīng)用程序定義和開發(fā)層則是關(guān)于構(gòu)建軟件。

數(shù)據(jù)庫

是什么

數(shù)據(jù)庫管理系統(tǒng)是一個應(yīng)用程序,可幫助其他應(yīng)用程序高效地存儲和檢索數(shù)據(jù)。

數(shù)據(jù)庫能保障數(shù)據(jù)存儲,僅授權(quán)的用戶能訪問數(shù)據(jù),并且允許用戶通過專門的請求來檢索數(shù)據(jù)。盡管數(shù)據(jù)庫類型繁多,但它們的總體目標(biāo)都是相同的。

解決的問題

大多數(shù)應(yīng)用程序都需要有效的方式來存儲和檢索數(shù)據(jù),并且保證數(shù)據(jù)安全。數(shù)據(jù)庫使用成熟的技術(shù)以結(jié)構(gòu)化的方式進行此操作。

如何解決

數(shù)據(jù)庫提供存儲和檢索應(yīng)用程序數(shù)據(jù)的通用接口。開發(fā)人員使用這些標(biāo)準(zhǔn)接口,并用一種簡單的查詢語言來存儲、查詢和檢索信息。同時,數(shù)據(jù)庫允許用戶連續(xù)備份和保存數(shù)據(jù)以及加密和管理數(shù)據(jù)訪問權(quán)限。

對應(yīng)工具

我們已經(jīng)了解了數(shù)據(jù)庫管理系統(tǒng)是一種用于存儲和檢索數(shù)據(jù)的應(yīng)用程序。它使用一種通用的語言和界面,并且可以被多種語言和框架輕松使用。

常見的兩種數(shù)據(jù)庫類型為:結(jié)構(gòu)化查詢語言(SQL)數(shù)據(jù)庫和 NoSQL 數(shù)據(jù)庫。應(yīng)用程序該使用哪種數(shù)據(jù)庫應(yīng)該由其需求來驅(qū)動。

Kubernetes 支持有狀態(tài)的應(yīng)用程序,近年來使用 Kubernetes 的使用越來越廣泛,我們已經(jīng)看到了利用容器化技術(shù)的新一代數(shù)據(jù)庫。這些新的云原生數(shù)據(jù)庫旨在將 Kubernetes 的擴展性和可用性優(yōu)勢引入數(shù)據(jù)庫。YugaByte 和 Couchbase 之類的工具是典型的云原生數(shù)據(jù)庫,Vitess 和 TiKV 是該領(lǐng)域的 CNCF 項目。

注意:查看此類別時會發(fā)現(xiàn)以 DB 結(jié)尾的多個名稱(例如 MongoDB、CockroachDB、FaunaDB),你可能會猜測它們代表數(shù)據(jù)庫。還有以 SQL 結(jié)尾的各種名稱(例如 MySQL 或 MemSQL)。一些是已經(jīng)適應(yīng)了云原生環(huán)境的“老派”數(shù)據(jù)庫,還有一些是兼容 SQL 的 NoSQL 數(shù)據(jù)庫,例如 YugaByte 和 Vitess。


數(shù)據(jù)流和消息傳遞

是什么

數(shù)據(jù)流和消息傳遞工具通過在系統(tǒng)之間傳輸消息(即事件)來實現(xiàn)服務(wù)到服務(wù)的通信。單個服務(wù)連接到消息傳遞服務(wù)以發(fā)布事件和(或)從其他服務(wù)讀取消息。這種動態(tài)變化創(chuàng)造了一個環(huán)境,在這個環(huán)境中單個應(yīng)用要么是發(fā)布者,即可編寫事件;要么是訂閱事件的訂閱者,或者更可能是兩者兼而有之。

解決的問題

隨著服務(wù)激增,應(yīng)用程序環(huán)境變得越來越復(fù)雜,應(yīng)用程序之間的通信編排也更具挑戰(zhàn)性。數(shù)據(jù)流或消息平臺提供了一個中心位置來發(fā)布和讀取系統(tǒng)中發(fā)生的所有事件,從而使應(yīng)用程序可以一起工作,而不必相互了解。

如何解決

當(dāng)一個服務(wù)執(zhí)行其他服務(wù)應(yīng)該知道的事情時,它會將事件“發(fā)布”到數(shù)據(jù)流或消息傳遞工具。需要了解這些事件類型的服務(wù)將訂閱并監(jiān)視數(shù)據(jù)流或消息傳遞工具。這就是“發(fā)布-訂閱”的本質(zhì)。

通過引入管理通信的“中間層”可以使服務(wù)彼此解耦。服務(wù)只是監(jiān)視事件、采取行動并發(fā)布新事件,這樣能建立高度分離的體系結(jié)構(gòu)。在此體系結(jié)構(gòu)中,服務(wù)可以協(xié)作而無需彼此了解。這種解耦使工程師能夠添加新功能,而無需更新下游應(yīng)用程序(消費者)或發(fā)送大量查詢。系統(tǒng)的解耦程度越高,更改的靈活性和適應(yīng)性就越高,而這正是工程師在系統(tǒng)中所追求的。

對應(yīng)工具

數(shù)據(jù)流和消息傳遞工具早在云原生技術(shù)成為現(xiàn)實之前就已經(jīng)存在了。為了集中管理關(guān)鍵業(yè)務(wù)事件,組織建立了大型的企業(yè)級服務(wù)總線。但是,當(dāng)我們在云原生環(huán)境中談?wù)摂?shù)據(jù)流和消息傳遞時,通常是指 NATS、RabbitMQ、Kafka 或云提供的消息隊列之類的工具。

消息傳遞和數(shù)據(jù)流傳輸系統(tǒng)為編排系統(tǒng)進行通信提供了一個中心位置。消息總線提供了所有應(yīng)用程序都可以訪問的公共位置,應(yīng)用程序都可以通過發(fā)布消息來告訴其服務(wù)它們在做什么,或者通過訂閱消息來查看正在發(fā)生的事情。

NATS 和 Cloudevents 項目都是這個領(lǐng)域的孵化項目,NATS 提供了一個成熟的消息傳遞系統(tǒng),而 Cloudevents 則致力于標(biāo)準(zhǔn)化系統(tǒng)之間的消息格式。Strimzi,Pravega 和 Tremor 是沙盒項目,每個項目都針對數(shù)據(jù)流和消息傳遞的獨特用例進行了量身定制。

應(yīng)用程序定義和鏡像構(gòu)建

是什么

應(yīng)用程序定義和鏡像構(gòu)建是一個廣泛的類別,可以分為兩個主要的子類別:

  • 聚焦于開發(fā)的工具:可幫助將應(yīng)用程序代碼構(gòu)建到容器和(或)Kubernetes 中;

  • 聚焦于運維的工具:以標(biāo)準(zhǔn)化的方式部署應(yīng)用。

無論是加快或簡化開發(fā)環(huán)境,提供標(biāo)準(zhǔn)化的方式來部署第三方應(yīng)用程序,還是簡化編寫新的 Kubernetes 擴展的過程,此類別的工具都可以優(yōu)化 Kubernetes 開發(fā)和運維人員的體驗。

解決的問題

Kubernetes(或者容器化環(huán)境)非常靈活且功能強大。這種靈活性也帶來了復(fù)雜性,主要體現(xiàn)在對于各種新用例有眾多配置選項。開發(fā)人員必須將代碼容器化,并在類生產(chǎn)環(huán)境中進行開發(fā)。在快速的發(fā)布計劃周期下,運維人員需要以一種標(biāo)準(zhǔn)化的方法來將應(yīng)用程序部署到容器環(huán)境中。

如何解決

該領(lǐng)域的工具旨在解決開發(fā)或運維人員面臨的一些挑戰(zhàn)。對于開發(fā)者,有一些工具可以簡化擴展 Kubernetes 的過程以構(gòu)建、部署和連接應(yīng)用程序。許多項目和產(chǎn)品可以存儲或部署預(yù)打包的應(yīng)用程序,使運維人員可以快速部署 Kafka 之類的流服務(wù)或安裝 Linkerd 之類的服務(wù)網(wǎng)格。

開發(fā)云原生應(yīng)用程序帶來了一系列全新的挑戰(zhàn),因此需要大量多樣化的工具來簡化應(yīng)用程序的構(gòu)建和部署。當(dāng)你需要解決環(huán)境中的開發(fā)和運維問題時,可以看看此類別中的工具。

對應(yīng)的工具

應(yīng)用程序定義和構(gòu)建工具涵蓋了廣泛的功能,比如使用 KubeVirt 將 Kubernetes 擴展到虛擬機,或使用 Telepresence 之類的工具將開發(fā)環(huán)境移植到 Kubernetes 中來加速應(yīng)用程序開發(fā)等。從整體上講,該領(lǐng)域中的工具可以解決開發(fā)人員面臨的正確編寫、打包、測試或運行自定義應(yīng)用程序的問題,也可以解決運維人員面臨的部署和管理應(yīng)用程序的問題。

Helm 是該類別中唯一一個畢業(yè)的項目,為許多應(yīng)用程序部署模式奠定了基礎(chǔ)。Helm 允許 Kubernetes 用戶部署和自定義一些流行的第三方應(yīng)用程序,Artifact Hub(CNCF 沙箱項目)和 Bitnami 等項目已采用 Helm 來提供精選的應(yīng)用程序目錄。Helm 也足夠靈活,允許用戶自定義自己的應(yīng)用程序部署。

Operator Framework 是一個孵化項目,旨在簡化構(gòu)建和部署 Operator 的過程。Operator 不在本文討論范圍之內(nèi),但請注意,它類似于 Helm,有助于部署和管理應(yīng)用程序。Cloud Native Buildpacks 是另一個孵化項目,旨在簡化將應(yīng)用程序代碼構(gòu)建到容器中的過程。

持續(xù)集成和持續(xù)交付

是什么

持續(xù)集成(CI)和持續(xù)交付(CD)工具可通過嵌入式質(zhì)量保證實現(xiàn)快速高效的開發(fā)過程。CI 通過立即構(gòu)建和測試代碼來自動化代碼變更,確保生成可部署的制品。CD 則更進一步,推動該制品進入部署階段。

成熟的 CI/CD 系統(tǒng)會監(jiān)視源代碼中的變更,自動構(gòu)建和測試代碼,然后將其從開發(fā)階段轉(zhuǎn)移到生產(chǎn)階段。在此過程中,CI/CD 系統(tǒng)必須通過各種測試或驗證來決定該過程是繼續(xù)還是失敗。

解決的問題

構(gòu)建和部署應(yīng)用程序是一個困難重重且容易出錯的過程,特別是當(dāng)過程中涉及很多人為干預(yù)和手動步驟時。如果不將代碼集成到代碼庫中,開發(fā)人員在軟件上花的時間越長,識別錯誤所花費的時間就越長,問題修復(fù)也就越困難。通過定期集成代碼,可以及早發(fā)現(xiàn)錯誤并更輕松地排除故障。畢竟,在幾行代碼中查找錯誤比在幾百行代碼中查找錯誤要容易得多。

盡管 Kubernetes 之類的工具為運行和管理應(yīng)用程序提供了極大的靈活性,它們也為 CI/CD 工具帶來了新的挑戰(zhàn)和機遇。云原生 CI/CD 系統(tǒng)能夠利用 Kubernetes 本身來構(gòu)建、運行和管理 CI/CD 流程(通常稱為流水線)。Kubernetes 還提供應(yīng)用程序運行狀況的信息,從而使云原生 CI/CD 工具能夠更輕松地確定給定的變更是否成功,是否需要回滾。

如何解決

CI 工具可確保開發(fā)人員引入的任何代碼更改或更新都能自動、連續(xù)地與其他更改進行構(gòu)建、驗證并集成。開發(fā)人員每次添加更新時都會觸發(fā)自動測試,確保只有良好的代碼才能將其導(dǎo)入系統(tǒng)。CD 擴展了 CI,能將 CI 流程的結(jié)果推送到類生產(chǎn)和生產(chǎn)環(huán)境中。

假設(shè)開發(fā)人員更改了 Web 應(yīng)用的代碼。CI 系統(tǒng)會看到代碼更改,然后構(gòu)建并測試該 Web 應(yīng)用的新版本。CD 系統(tǒng)獲取該新版本,并將其部署到開發(fā)、測試、預(yù)生產(chǎn)以及最終生產(chǎn)環(huán)境中。在流程的每個步驟之后測試已部署的應(yīng)用程序時,它會執(zhí)行此操作。這些系統(tǒng)一起構(gòu)成了該 Web 應(yīng)用的 CI/CD 管道。

對應(yīng)工具

隨著時間的流逝,市面上已經(jīng)有了許多工具來幫助將代碼從存儲庫移至運行最終應(yīng)用程序的生產(chǎn)環(huán)境。像大多數(shù)其他計算領(lǐng)域一樣,云原生開發(fā)的到來改變了 CI/CD 系統(tǒng)。類似 Jenkins (可能是市場上使用最廣泛的 CI 工具)的傳統(tǒng)工具已經(jīng)通過完善迭代,以更好地適應(yīng) Kubernetes 生態(tài)系統(tǒng)。Flux 和 Argo 等公司率先開發(fā)了一種稱為 GitOps 的持續(xù)交付的新方法。

通常,該領(lǐng)域的項目和產(chǎn)品是:

  • CI 系統(tǒng);

  • CD 系統(tǒng);

  • 幫助 CD 系統(tǒng)確定代碼是否準(zhǔn)備好投入生產(chǎn)的工具;和(或)

  • 前三者的合集(Spinnaker 和 Argo 就是如此)。

Argo 和 Brigade 是該領(lǐng)域中僅有的 CNCF 項目,但是你可以找到由持續(xù)交付基金會(Continuous Delivery Foundation)托管的更多項目。在此空間中尋找工具,可以幫助組織自動化生產(chǎn)路徑。

總結(jié)

應(yīng)用程序定義和開發(fā)層中的工具使工程師能夠構(gòu)建云原生應(yīng)用程序。該層的工具包括:

  • 數(shù)據(jù)庫:存儲和檢索數(shù)據(jù);

  • 數(shù)據(jù)流和消息傳遞工具:實現(xiàn)相互分離、精心設(shè)計的架構(gòu);

  • 應(yīng)用程序定義和鏡像構(gòu)建工具:包含可改善開發(fā)人員和操作員體驗的多種技術(shù);

  • CI/CD 工具:確保代碼處于可部署狀態(tài),并幫助工程師及早發(fā)現(xiàn)錯誤,從而確保代碼質(zhì)量。

CSDN協(xié)同行業(yè)大佬 打造13長熱門知識圖譜及IT成長路線 助力千萬IT人成長,快速實現(xiàn)職場進階! 更多精彩推薦 ?經(jīng)典永不過時!重溫設(shè)計模式?PassMark 更新排行,蘋果 M1 殺瘋了?干貨!Redis集群工作原理解析點分享點收藏點點贊點在看

總結(jié)

以上是生活随笔為你收集整理的云原生全景图之五:应用程序定义和开发层的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。