本文來自微信公眾號“開源云中文社區(qū)”。
不管你喜不喜歡,你已經(jīng)有了一個內(nèi)部開發(fā)人員平臺,即使你的組織從未建立過一個平臺,也沒有“平臺工程”人員。它可能不是正確的平臺,可能難以擴展或使用,但它確實存在。
這意味著你可能不需要構(gòu)建平臺;你只需要讓它更好。你面臨的真正問題是,是否應(yīng)該在平臺之上使用內(nèi)部開發(fā)人員門戶,因為它是平臺工程堆棧中最成熟的元素。
我們在這篇文章中要討論的是,門戶很重要,它們也會影響平臺工作的質(zhì)量和有用性,隨著它們和技術(shù)的發(fā)展,它們基本上會成為平臺的一部分。
但是等等!內(nèi)部開發(fā)者平臺?內(nèi)部開發(fā)者門戶?有什么區(qū)別?為什么要在另一個之上使用一個?讓我們首先定義兩者,并就這將帶我們走向何方提出一些大膽的論點。
什么是內(nèi)部開發(fā)人員平臺?
讓我們從基礎(chǔ)知識開始。平臺是幫助工程師完成工作的工具。它可以讓他們編碼,留在區(qū)域內(nèi),不必太擔(dān)心他們無法控制或沒有專業(yè)知識的運維問題。
現(xiàn)代架構(gòu)是復(fù)雜的,由許多底層技術(shù)和數(shù)百個微服務(wù)組成,軟件開發(fā)生命周期對于任何人來說都變得太長了,需要太多運維和開發(fā)方面的專業(yè)知識。
解決方案是抽象掉一些復(fù)雜性,并創(chuàng)建一個統(tǒng)一的開發(fā)人員體驗,這將減少開發(fā)人員和運維人員的認(rèn)知負(fù)荷。這些更好的開發(fā)人員體驗將提高生產(chǎn)力。這就是平臺的意義所在。
受Gartner啟發(fā),分類的定義是,平臺是關(guān)于自助服務(wù)功能和具有自動化基礎(chǔ)設(shè)施運維的可重用工具。該平臺由平臺工程師構(gòu)建,使開發(fā)人員從“粘合工作”中解放出來,并為開發(fā)人員制定標(biāo)準(zhǔn)和黃金路徑。
所有這些都可以歸結(jié)為開發(fā)人員自助服務(wù)。你不必構(gòu)建自己的臨時云環(huán)境,也不必執(zhí)行第二天的運維,不需要DevOps的人來做,只需訪問一個界面并獲得所需的內(nèi)容。想象一個Jenkins自助表單或Terraform無代碼。
當(dāng)然,這并不完美。例如,使用Jenkins進行自助服務(wù)意味著缺乏上下文和狀態(tài),用戶界面扁平,無法設(shè)置組織標(biāo)準(zhǔn)(工程質(zhì)量可以而且應(yīng)該是良好的門戶/平臺工作的結(jié)果)。它也沒有解耦。如果你改變了Jenkins,你也需要改變開發(fā)者的體驗。這不太管用。
該平臺的另一部分是為開發(fā)人員提供底層基礎(chǔ)設(shè)施的某種程度的透明度,以便他們能夠做出明智的決定。為了提高生產(chǎn)力而將所有內(nèi)容都抽象出來在紙面上聽起來不錯,但需要顯示一些數(shù)據(jù),從依賴關(guān)系到Kubernetes設(shè)置、內(nèi)存或CPU使用情況等。
如果沒有一些數(shù)據(jù),你就無法做到“建造它,擁有它”。一個很好的例子是GitOps(它可能構(gòu)成現(xiàn)有平臺的核心)。純粹的GitOps對開發(fā)人員來說不太好,因為它包含了太多的信息,并且為開發(fā)人員提供了太多自由漫游和犯錯的空間。在這種情況下,用一個平臺替換GitOps或在其上添加一些平臺元素可能會奏效。
什么是內(nèi)部開發(fā)人員門戶?
門戶是平臺的界面,幫助用戶訪問底層的異構(gòu)軟件開發(fā)生命周期資源,并使用門戶中提供的自助服務(wù)。門戶為開發(fā)人員和運維人員創(chuàng)造了類似的體驗,因此每個人都可以自助服務(wù),并獲得對基礎(chǔ)設(shè)施的適當(dāng)可見性,從而做出正確的決策。這些體驗類似于產(chǎn)品,旨在提供簡單的黃金路徑自助服務(wù),以及執(zhí)行質(zhì)量標(biāo)準(zhǔn),提高工程質(zhì)量。否則,生產(chǎn)力就無法實現(xiàn)。
自助服務(wù)
開發(fā)人員在開發(fā)人員門戶中使用自助服務(wù)。行動越多越好。首先,開發(fā)人員不僅需要構(gòu)建微服務(wù);他們需要許多第二天的運維,以及權(quán)限請求(TTL或生存時間)、設(shè)置臨時環(huán)境等。一個好的自助服務(wù)體驗應(yīng)該盡可能像產(chǎn)品一樣,幫助開發(fā)人員輕松地工作,在黃金路徑內(nèi),并盡可能少地出錯。這樣做時,軟件目錄會通知開發(fā)人員,但自助服務(wù)操作本身需要立即反映在目錄中。
內(nèi)部開發(fā)人員門戶是否“只是開發(fā)人員自助服務(wù)的UI”?不是。為了理解原因,讓我們檢查一下軟件目錄,然后解釋它如何演變成平臺API。
軟件目錄是一切的中心
軟件目錄通常被描述為包含微服務(wù)、云資源和基礎(chǔ)設(shè)施的目錄,顯示上下文中的所有元素。它顯示并可以幫助管理權(quán)限、臨時環(huán)境和幾乎所有其他內(nèi)容。它包含了你可以驅(qū)動到其中的所有元數(shù)據(jù)。它將被抽象出來供開發(fā)人員使用,只向他們顯示需要的內(nèi)容。
然而,即使你可能正在抽象其中的內(nèi)容,軟件目錄仍然充當(dāng)通用元數(shù)據(jù)存儲。因此,你可以對其運行任何查詢并獲得所需的答案,即使是對于被認(rèn)為復(fù)雜的問題,如包漏洞計劃。這是運維人員開始對軟件目錄感到興奮的地方。
軟件目錄需要在一開始就足夠中立,這樣你就可以構(gòu)建它以適合所擁有的任何數(shù)據(jù)模型,從而創(chuàng)建一個符合組織正在構(gòu)建的任何內(nèi)容的有見解的軟件目錄。
中央目錄不僅僅是關(guān)于其中的所有數(shù)據(jù),或者它對開發(fā)人員和運維人員都有什么用處。使用記分卡,目錄還反映了特定實體(例如在給定環(huán)境中運行的特定服務(wù))上下文中的質(zhì)量、健康狀況和其他度量。這有助于在有許多微服務(wù)、存儲庫和區(qū)域的環(huán)境中優(yōu)先采取行動并提高質(zhì)量。它也有助于通過在一個中心位置確定質(zhì)量來改變組織行為。
軟件目錄也適用于機器和運維
你可能已經(jīng)注意到,作為一個通用的元數(shù)據(jù)存儲,我們談?wù)摰氖且粋€超越開發(fā)人員體驗的軟件目錄。換言之,盡管名稱如此,內(nèi)部開發(fā)人員門戶中的目錄也是為機器和管理機器的運維人員創(chuàng)建的。
事實上,與我們交談的許多運維人員都希望自己開始使用門戶,以管理軟件和系統(tǒng)的擴展。他們抱怨混亂的微服務(wù)跟蹤和太多的DevOps工具,抱怨需要集中控制的復(fù)雜AppSec問題。然后他們明白了:他們想根據(jù)軟件目錄運行工作流。
這是工作流自動化,工作流檢查軟件目錄中所有內(nèi)容的狀態(tài)。我們經(jīng)常聽到這樣的消息,情況是這樣的:“如果軟件目錄包含有關(guān)服務(wù)鎖定/包/版本等的所有信息,我可以讓CI工作流作為工作流的一部分檢查軟件目錄嗎?”
如果服務(wù)被鎖定,工作流自動化將在目錄中檢查它,并且不允許它部署。如果服務(wù)運行狀況關(guān)閉,則將采取另一項操作。在這方面,前面提到的記分卡是有價值的,因為自動化可以并且確實可以檢查記分卡信息,作為其流程的一部分。
門戶的核心原則
讓我們了解一下內(nèi)部開發(fā)人員門戶背后的核心思想:
——自帶數(shù)據(jù)模型。軟件目錄應(yīng)支持常見的數(shù)據(jù)模型(如后臺C4模型),以及唯一的數(shù)據(jù)模型。它應(yīng)該足夠中立,這樣你就可以在其中建立一個自己覺得好的數(shù)據(jù)模型。
——軟件目錄應(yīng)包含所需的所有數(shù)據(jù),作為軟件和資源的通用元數(shù)據(jù)存儲。開發(fā)人員可以將數(shù)據(jù)抽象出來,但數(shù)據(jù)將保留在目錄中,供其他用戶使用,例如運維團隊或工作流自動化。
——產(chǎn)品般的體驗。UI應(yīng)該為開發(fā)人員提供黃金路徑體驗。產(chǎn)品思維是內(nèi)部開發(fā)人員門戶的核心,UI應(yīng)該是可配置的,支持無代碼創(chuàng)建來支持這一點。
——與底層基礎(chǔ)設(shè)施和自動化松散耦合。平臺一直在發(fā)展,無論它們是隨時間隨意構(gòu)建的還是新技術(shù)堆棧的結(jié)果。因此,內(nèi)部開發(fā)人員平臺(IDP)應(yīng)該與它們松散耦合。如果底層云資源、CI或CD系統(tǒng)被替換,開發(fā)人員應(yīng)該具有相同的體驗。
——以最廣泛的方式允許開發(fā)人員自助服務(wù)。為了確保采用,開發(fā)人員需要在IDP中滿足他們的所有需求。只關(guān)注一個自助服務(wù)行動,平臺進度和IDP都不會增長。
——API優(yōu)先。
——設(shè)計符合要求且安全。
未來是平臺API
開發(fā)人員門戶的未來是成為一個平臺API,為與平臺交互提供統(tǒng)一的接口。開發(fā)者門戶還將托管軟件目錄,為平臺狀態(tài)提供上下文,并負(fù)責(zé)觸發(fā)平臺自動化,作為其自助運維的一部分。開發(fā)人員門戶將使用平臺API作為前端接口,平臺內(nèi)部組件將使用該API根據(jù)存儲在API中的上下文信息進行自動決策。
要進行平臺工程,需要從門戶開始
無論你是否同意你已經(jīng)擁有一個平臺,內(nèi)部開發(fā)人員門戶可能是可以開始使用的加入平臺工程運動的最成熟和定義最明確的元素。內(nèi)部開發(fā)人員門戶非常有價值,足以推動開發(fā)人員生產(chǎn)力的顯著提高,并為運維人員帶來秩序。