IBM混合多云平臺(tái),助力企業(yè)實(shí)現(xiàn)應(yīng)用現(xiàn)代化和容器化
IBM 與 Red Hat 的強(qiáng)強(qiáng)聯(lián)合,正中開發(fā)者們的下懷?;?Red Hat OpenShift 構(gòu)建的 Cloud Pak,可以實(shí)現(xiàn)任意云平臺(tái)的應(yīng)用開發(fā)。
作為開發(fā)者,您的目標(biāo)是編寫出色的代碼并解決業(yè)務(wù)問(wèn)題。效率對(duì)開發(fā)者是一個(gè)重要部分,但在團(tuán)隊(duì)中保持高效并不僅僅取決于您的頭腦。您需要正確的工具和技術(shù)才能快速開展工作,創(chuàng)建最佳應(yīng)用程序。
將新工具和框架集成到某種平臺(tái)中的挑戰(zhàn)可能會(huì)分散您的精力,讓您無(wú)法集中全力完成解決業(yè)務(wù)問(wèn)題這一主要任務(wù)。雖然 Kubernetes 已成為廣受開發(fā)者歡迎的平臺(tái),但它本身并不是一個(gè)完整的開發(fā)平臺(tái)。
您如何才能獲得所需的基于容器的開發(fā)平臺(tái),一站式整合架構(gòu)師、運(yùn)維人員和開發(fā)者的需求?您可以自行構(gòu)建,但這需要花費(fèi)時(shí)間和資源,而您的團(tuán)隊(duì)目前也可能并不具備必要的知識(shí)。
這就是 IBM 基于開源的全新產(chǎn)品的用武之地。IBM Cloud Pak for Applications (ICPA) 將基于 Kubernetes 的 Red Hat OpenShift 平臺(tái)與開源項(xiàng)目 Kabanero 結(jié)合在一起,幫助企業(yè)更快速、更輕松地針對(duì) Kubernetes 和 Knative 開發(fā)和部署應(yīng)用程序。
在這篇博客中,我們仔細(xì)研究了 ICPA 所基于的底層開源軟件及其解決的一些常見開發(fā)問(wèn)題。
問(wèn)題探究
團(tuán)隊(duì)采用 Kubernetes 的目的通常是為了簡(jiǎn)化開發(fā)和部署,并獲得容器化的所有好處。但他們并未考慮到容器環(huán)境所帶來(lái)的復(fù)雜性。雖然 Kubernetes 在管理服務(wù)器基礎(chǔ)架構(gòu)上的容器放置、將工作路由到這些容器以及在發(fā)生故障后恢復(fù)正常等方面表現(xiàn)出眾,但它還無(wú)法為嘗試構(gòu)建云原生應(yīng)用程序的開發(fā)者和架構(gòu)師提供全面支持。
為開發(fā)團(tuán)隊(duì)構(gòu)建平臺(tái)是一項(xiàng)重大任務(wù)。您需要做到事無(wú)巨細(xì)、面面俱到——從選擇和集成正確的開源項(xiàng)目集,到選擇 IDE 和構(gòu)建工具、管道、源代碼控制、安全掃描和測(cè)試,無(wú)一遺漏。添加更新和安全修訂時(shí),這會(huì)成為一項(xiàng)全職開發(fā)工作。我們的目標(biāo)是解決這些問(wèn)題并降低復(fù)雜性,進(jìn)而提高團(tuán)隊(duì)中所有開發(fā)者的工作效率。
那么如何才能做到呢?
首先,我們要認(rèn)識(shí)到,具有一定程度的一致性當(dāng)然很好。一致的工具可幫助團(tuán)隊(duì)有效積累和分享知識(shí)。一致的工具最終可促成人人都能理解一致的交付流程,而一致的流程則可以降低人為錯(cuò)誤風(fēng)險(xiǎn)。自動(dòng)化則可以成為制勝法寶。
改善組織各部分和團(tuán)隊(duì)內(nèi)部之間的協(xié)作,對(duì)于提高生產(chǎn)力至關(guān)重要。架構(gòu)師和開發(fā)者需要采用一致的機(jī)制來(lái)確定他們的技術(shù)決策,然后在更廣的范圍內(nèi)進(jìn)行分享。
對(duì)于許多團(tuán)隊(duì)而言,使用容器是朝這個(gè)方向邁出的一步,并且也是在與 Kubernetes 配對(duì)使用。然而,容器的自由度和靈活性意味著人們最終使用的容器往往太多。選擇過(guò)于豐富,最終帶來(lái)了復(fù)雜性、不一致和低效率這些問(wèn)題。
原型順暢地過(guò)渡到生產(chǎn)
Kabanero 簡(jiǎn)化了構(gòu)建基于容器的應(yīng)用程序以部署到混合云上這一任務(wù)。Kabanero 使用 OKD(Red Hat OpenShift 的上游項(xiàng)目)在 Kubernetes 上為您奠定了穩(wěn)固而可靠的基礎(chǔ)。在此基礎(chǔ)上,添加必要的基礎(chǔ)架構(gòu),進(jìn)而提供持續(xù)集成/持續(xù)交付 (CI/CD) 管道和基本服務(wù),例如,日志記錄、監(jiān)控、服務(wù)網(wǎng)格和 Knative 無(wú)服務(wù)器功能。到目前為止一切都還不錯(cuò),但是,是什么讓 Kabanero 出類拔萃呢?
稍后我們將更詳細(xì)地介紹具體的開發(fā)工具,在這之前,我們先要了解 Kabanero 如何提供一種通用方法,通過(guò) IDE 擴(kuò)展所利用的一組基于容器的一致工件來(lái)定義、管理和構(gòu)建應(yīng)用程序。
Kabanero 引入了“集合”的概念。集合可將語(yǔ)言、運(yùn)行時(shí)和框架選擇以及允許其插入 Kabanero 基礎(chǔ)的基礎(chǔ)架構(gòu)綁定結(jié)合在一起。集合為捕獲開發(fā)者和架構(gòu)師共同制定的決策提供了一致的方法。通過(guò)一組預(yù)定義的集合,在集成基礎(chǔ)架構(gòu)時(shí)就避免了無(wú)謂的猜測(cè)。
Appsody 及其相關(guān)的命令行工具(CLI) 為創(chuàng)建基于容器的應(yīng)用程序提供了基本構(gòu)建塊。Appsody 堆棧結(jié)合了容器中的運(yùn)行時(shí)和框架以及通用代碼和服務(wù)。例如,Java MicroProfile 堆棧包括預(yù)定義的運(yùn)行狀況和度量標(biāo)準(zhǔn)端點(diǎn),因此使用該堆棧構(gòu)建的所有應(yīng)用程序都具有即取即用的通用功能。
開發(fā)者可以快速采用堆棧,并開始構(gòu)建新的云原生應(yīng)用。Appsody 使用預(yù)定義的堆棧不斷地為您的應(yīng)用重建容器鏡像。因此,您的應(yīng)用始終構(gòu)建在最新的堆棧上,并且可以自動(dòng)準(zhǔn)備在容器中進(jìn)行測(cè)試,就像它在生產(chǎn)中運(yùn)行一樣。
通過(guò)管道自動(dòng)化和 IDE 集成
更快速地構(gòu)建應(yīng)用
Kabanero 基礎(chǔ)架構(gòu)與 GitHub 集成,因此提交代碼會(huì)觸發(fā)自動(dòng)化 CI/CD 管道。通過(guò)使用屬于 Kabanero 集合的預(yù)定義集成點(diǎn),管道基礎(chǔ)架構(gòu)會(huì)針對(duì)最新版本的 Appsody 堆棧來(lái)構(gòu)建應(yīng)用程序代碼。
由于應(yīng)用使用的是通用堆棧,因此開發(fā)者可以確信應(yīng)用程序在生產(chǎn)環(huán)境中的運(yùn)行狀況與在開發(fā)環(huán)境中并不會(huì)有什么不同。這就提高了一致性,降低了代碼進(jìn)入生產(chǎn)環(huán)境時(shí)出錯(cuò)的風(fēng)險(xiǎn)。如果您需要隨時(shí)待命,但又不想在半夜被叫醒的話,這非常重要!
Kabanero 不僅僅是 Kubernetes 上的基礎(chǔ)架構(gòu)。它最初開始于與 Eclipse 和 VSCode 等流行的 IDE 集成的開發(fā)者工具。Eclipse Codewind 項(xiàng)目從一開始就幫助開發(fā)者在容器中構(gòu)建云原生微服務(wù)和基于功能的應(yīng)用程序。它提供能夠理解 Appsody 堆棧的擴(kuò)展,因此您可以使用預(yù)定義的堆棧開始構(gòu)建,并直接在 IDE 中從 Codewind 的自動(dòng)容器構(gòu)建獲益。Eclipse Codewind 中的性能儀表板可幫助您在開發(fā)周期的早期立即開始了解新應(yīng)用或服務(wù)的性能特征。
從開源入手
按需添加支持
Kabanero、Appsody 和 Codewind 以及創(chuàng)建 Kabanero 基礎(chǔ)的其他基礎(chǔ)架構(gòu)組件全都是開源的。有了這些技術(shù),團(tuán)隊(duì)就可以更加方便快捷地專注于解決業(yè)務(wù)問(wèn)題,而不是基礎(chǔ)架構(gòu)決策。
當(dāng)您的團(tuán)隊(duì)需要支持時(shí),可以通過(guò) IBM Cloud Pak for Applications 獲得支持。IBM Cloud Pak for Applications 可以集成、保護(hù)和認(rèn)證這些開源項(xiàng)目,為您提供一站式解決方案,幫助您在云原生模型中重構(gòu)應(yīng)用程序。通過(guò)使用 ICPA,只需稍作修改便可將現(xiàn)有應(yīng)用程序移至基于 Kubernetes 的更高效的運(yùn)作模型中。您的開發(fā)者也可以回過(guò)頭來(lái)編寫能夠解決實(shí)際業(yè)務(wù)需求的出色代碼。