如何構(gòu)建IDP(內(nèi)部開(kāi)發(fā)者平臺(tái))?(ip內(nèi)容開(kāi)發(fā))
什么是IDP?
在講IDP之前,先講下平臺(tái)工程。平臺(tái)工程是軟件工程中比較火的一個(gè)話題。Gartner預(yù)測(cè),到2026年,80%的軟件工程組織將建立平臺(tái)工程團(tuán)隊(duì),作為應(yīng)用程序交付的通用組件、服務(wù)以及工具的內(nèi)部提供商。
平臺(tái)工程是設(shè)計(jì)和構(gòu)建工具鏈和工作流的學(xué)科,為云原生時(shí)代的軟件工程組織提供自助服務(wù)功能。平臺(tái)工程師需要提供一種集成的產(chǎn)品,即IDP,涵蓋應(yīng)用程序整個(gè)生命周期。
簡(jiǎn)單總結(jié)的話,技術(shù)體系中會(huì)新增一個(gè)平臺(tái)團(tuán)隊(duì),該團(tuán)隊(duì)會(huì)按照平臺(tái)工程的思路,提供一個(gè)IDP。
為什么需要IDP?
從業(yè)務(wù)來(lái)看,業(yè)務(wù)變得越來(lái)越復(fù)雜。比如一家內(nèi)容公司,內(nèi)容形式從過(guò)去的文本擴(kuò)展到圖片、視頻以及直播,同時(shí)又會(huì)考慮增加社交屬性。有了流量,就會(huì)考慮商業(yè)化和電商。為了更大程度增加APP用戶使用時(shí)長(zhǎng)和使用效果,又會(huì)引入推薦系統(tǒng)。
實(shí)際上業(yè)務(wù)復(fù)雜意味著對(duì)技術(shù)的要求也是越來(lái)越高。比如使用到的存儲(chǔ)類型的產(chǎn)品,除了過(guò)去的關(guān)系型數(shù)據(jù)庫(kù)、redis,也會(huì)有KV存儲(chǔ)、圖數(shù)據(jù)庫(kù)、數(shù)據(jù)倉(cāng)庫(kù)等。
從底層基礎(chǔ)設(shè)施來(lái)看,從單一的公有云或是私有云演進(jìn)到混合云。
如果讓業(yè)務(wù)研發(fā)需要感知這些復(fù)雜性,簡(jiǎn)直無(wú)法想象。所以需要在業(yè)務(wù)研發(fā)和基礎(chǔ)設(shè)施團(tuán)隊(duì)之間,增加一個(gè)平臺(tái)團(tuán)隊(duì)。
平臺(tái)團(tuán)隊(duì)通過(guò)IDP,讓業(yè)務(wù)無(wú)需感知底層基礎(chǔ)設(shè)施,專注在業(yè)務(wù)迭代上,提高應(yīng)用交付效率。
簡(jiǎn)單總結(jié)的話,當(dāng)業(yè)務(wù)規(guī)模到一定程度的時(shí)候,需要IDP來(lái)解決復(fù)雜性的問(wèn)題。
如何構(gòu)建IDP?
humanitec 有一些關(guān)于IDP的實(shí)現(xiàn)方案。在不同的云上,根據(jù)實(shí)際情況替換部分組件。
AWS
GCP
Azure
通過(guò)上邊三幅圖,可以知道一個(gè)IDP,包括:
- 開(kāi)發(fā)者控制層
- 開(kāi)發(fā)工具
- 服務(wù)目錄、API目錄、Portal
- 版本控制
- 代碼版本控制
- 應(yīng)用描述版本控制
- 基礎(chǔ)設(shè)施版本控制
- 集成和交付層
- CI
- 平臺(tái)編排
- CD
- 可觀測(cè)層
- 監(jiān)控和日志
- 安全層
- 資源層
- 云資源和云服務(wù)
實(shí)際上,核心是構(gòu)建一個(gè)以應(yīng)用為中心的,可以支持業(yè)務(wù)自助管理應(yīng)用并且持續(xù)交付應(yīng)用到不同異構(gòu)基礎(chǔ)設(shè)施的平臺(tái)。
其實(shí)想實(shí)現(xiàn)這樣的目的,需要抽象很多東西。此處想一下,平臺(tái)團(tuán)隊(duì)在技術(shù)體系中的位置,我個(gè)人理解關(guān)鍵主要是應(yīng)用模型、資源模型(IaC)以及workflow三塊。
應(yīng)用模型
應(yīng)用模型不僅包括服務(wù)自身的描述,也會(huì)包括所依賴服務(wù)的描述。該模型是以應(yīng)用為中心思想的關(guān)鍵。
圖中的方案是score。
類似的解決方案有OAM和radius。
資源模型
資源模型是對(duì)異構(gòu)基礎(chǔ)設(shè)施的抽象,向上提供標(biāo)準(zhǔn)化的體驗(yàn),并且自動(dòng)化基礎(chǔ)設(shè)施的管理和交付。
圖中的實(shí)現(xiàn)方案是terraform。類似的解決方案有crossplane、pulumi。
Workflow
Workflow會(huì)涵蓋整個(gè)應(yīng)用的交付過(guò)程。不僅包括CI、平臺(tái)編排、CD,也會(huì)包括風(fēng)險(xiǎn)管控、預(yù)算審批等環(huán)節(jié)。所以workflow一定需要支持其他工具以插件化的形式接入的能力。
總結(jié)
本文簡(jiǎn)單介紹了平臺(tái)工程和IDP。并且基于humanitec的平臺(tái)架構(gòu)方案給出了自己的一些觀點(diǎn)。