關(guān)于 IDP 的五大認(rèn)知誤解
?內(nèi)部開發(fā)者平臺(IDP)是近年來在希望加快軟件交付和改善開發(fā)者體驗的企業(yè)中得到普及的一個概念。然而,大眾對于什么是 IDP 以及它能為開發(fā)者和企業(yè)帶來什么也有很多困惑和誤解。在這篇文章中,我們將嘗試解開一些關(guān)于平臺工程以及 IDP 的常見誤解,以及關(guān)于企業(yè)該如何避免進入這些誤區(qū)給出一些建議。
關(guān)于 IDP 的常見五大誤解
之前我們了解過 IDP 和平臺工程的基本概念。IDP 實際上是一套標(biāo)準(zhǔn)化的工具和技術(shù),能夠?qū)崿F(xiàn)開發(fā)人員的自我服務(wù),為他們在日常工作中創(chuàng)建和部署符合要求的代碼提供便利的途徑。IDP 抽象了底層基礎(chǔ)設(shè)施的復(fù)雜性,并與現(xiàn)有的 CI/CD 和部署流程相結(jié)合,使開發(fā)人員能夠?qū)W⒂谒麄兊拇a和業(yè)務(wù)邏輯。在本文中,我們總結(jié)了關(guān)于 IDP 的五大誤區(qū)。
IDP 僅僅是一個工具集合
有些人可能會簡單地認(rèn)為 IDP 僅僅是一個開發(fā)者常用的工具集合,幫助開發(fā)者們?nèi)?zhí)行各類任務(wù),例如版本控制、測試、CI/CD、監(jiān)控等等。實際上,IDP 的用處遠(yuǎn)不止這些,IDP 不僅僅是一個工具鏈,它更是一個以無縫和連貫的方式整合這些工具的產(chǎn)品,同時為開發(fā)者提供清晰的界面和工作流程。
當(dāng)然,IDP 并不是完美適配一切公司的萬能解決方案。各個企業(yè)的堆棧、文化、代碼庫和工具集都會因業(yè)務(wù)內(nèi)容有所區(qū)別,因此企業(yè)及開發(fā)者需要根據(jù)自身的需求和偏好對 IDP 進行定制。例如,有一些企業(yè)更偏向于使用 Kubernetes 作為他們的協(xié)調(diào)層,而其他企業(yè)則傾向于選擇不同的解決方案。IDP 還應(yīng)當(dāng)允許企業(yè)在保持定制和可拓展性的同時,仍然保持一致性和操作的簡便性。
只有大型企業(yè)才能用 IDP
在之前我們提到過,當(dāng)企業(yè)擁有復(fù)雜和分布式系統(tǒng)、多個團隊和環(huán)境,并對可拓展性和可靠性有高要求,構(gòu)建 IDP 能夠使這些大型組織受益。但這里并不是說只有大型企業(yè)才能使用 IDP,相反,任何旨在提高軟件交付速度、效率和質(zhì)量的企業(yè)都可以構(gòu)建自己的 IDP 并從中受益。
IDP 同樣可以有效幫助中小型企業(yè)組織,讓他們從最開始就采用最佳實踐和標(biāo)準(zhǔn),而不必在建立和維護自己的基礎(chǔ)設(shè)施和工具方面投入過多的時間和資源。IDP 可以通過自動化重復(fù)性任務(wù)和減少人工錯誤來降低 DevOps 團隊的操作負(fù)荷。這樣 DevOps 團隊就可以專注于建設(shè)和維護平臺,而不是花費大量時間來回應(yīng)和解決來自開發(fā)人員的 tickets 和 requests。同時,IDP 通過提供一個簡單和一致的界面來訪問平臺的功能,有效改善開發(fā)者體驗。開發(fā)人員可以進行自我服務(wù),在不用了解復(fù)雜的工具鏈和配置的情況下運行他們的應(yīng)用程序。最重要的是,IDP 能夠允許開發(fā)人員使用平臺上的功能嘗試和實驗新的想法,測試不同場景,并進行相應(yīng)優(yōu)化,從而提高軟件產(chǎn)品的創(chuàng)新程度和價值。
IDP 無所不能
我們想聊的關(guān)于 IDP 的另一個認(rèn)知誤區(qū)是,人們認(rèn)為 IDP 能夠解決開發(fā)者在日常工作中面臨的所有問題和挑戰(zhàn)。現(xiàn)實是,IDP 只是一個幫助開發(fā)者高效工作的平臺,為開發(fā)者提供一個標(biāo)準(zhǔn)化過程、可靠的平臺和一個具有支持性的環(huán)境,但它并不是一個無所不能的萬能解決方案。
直白地講,IDP 無法消除開發(fā)者溝通、協(xié)作、反饋、學(xué)習(xí)、測試或創(chuàng)新的需要。也就是無論企業(yè)是否擁有 IDP,開發(fā)人員始終需要與其他團隊及他們的客戶進行交流。開發(fā)人員需要了解他們的業(yè)務(wù)領(lǐng)域、技術(shù)領(lǐng)域、用戶需求等,開發(fā)者還是得編寫代碼,然后進行測試、調(diào)試、監(jiān)控和改進。
IDP 總能零失誤構(gòu)建/部署
另一個關(guān)于 IDP 的誤解是 IDP 可以保證應(yīng)用程序的構(gòu)建或部署完美無缺。
事實上構(gòu)建軟件、系統(tǒng)和平臺是十分復(fù)雜的過程。構(gòu)建是將源代碼打包成應(yīng)用程序工件的過程,構(gòu)建可能由于各種原因而失敗,例如語法錯誤、缺少依賴項、不兼容的版本或配置。而部署是將應(yīng)用程序構(gòu)件從暫存環(huán)境轉(zhuǎn)移到生產(chǎn)環(huán)境的過程,部署也會由于各種原因失敗,例如網(wǎng)絡(luò)問題、配置錯誤、資源限制、安全漏洞或性能問題。
在這個過程中有各種范式和技術(shù)需要采用,工程師們需要進行大量的篩選和選擇。而在構(gòu)建或部署的過程中,開發(fā)人員還需要根據(jù)業(yè)務(wù)內(nèi)容需求和調(diào)整學(xué)習(xí)新的東西。因此,即便擁有 IDP,企業(yè)在構(gòu)建和部署應(yīng)用程序時需要測試、監(jiān)控和故障排除,以確保構(gòu)建和部署的質(zhì)量和可靠性。同時,擁有 IDP 也依舊需要在進行部署時考慮對用戶和客戶的影響。企業(yè)仍然需要遵循持續(xù)集成、持續(xù)交付和按需發(fā)布的最佳實踐。
平臺訪問總是安全的
最后一個誤解是大家想當(dāng)然地認(rèn)為平臺的訪問是絕對安全的,符合企業(yè)的所有政策和法規(guī)。然而安全性和合規(guī)性并不是靜態(tài)的概念或一次性的要求,恰恰相反,安全和合規(guī)是動態(tài)且持續(xù)的過程,需要企業(yè)不斷地跟進、適應(yīng)并相應(yīng)調(diào)整。結(jié)合企業(yè)內(nèi)部和外部因素,安全威脅及合規(guī)要求可能隨時發(fā)生變化。
因此企業(yè)的 IDP 需要有一個強大的安全態(tài)勢和合規(guī)性框架,涵蓋平臺生命周期的方方面面,例如認(rèn)證、授權(quán)、加密、審計、日志、監(jiān)控、報告等。同時 IDP 應(yīng)當(dāng)遵循安全最佳實踐和標(biāo)準(zhǔn),比如最小權(quán)限原則、深度防御策略及安全設(shè)計方法等。與此同時,企業(yè)需要定期對 IDP 進行更新和修補,預(yù)防潛在的漏洞和風(fēng)險帶來的安全威脅。
企業(yè)如何避免陷入 IDP 認(rèn)知誤區(qū)
那么企業(yè)應(yīng)當(dāng)如何避免陷入 IDP 認(rèn)知誤區(qū)以更好地利用其優(yōu)勢呢?這里我們總結(jié)了三個要點供企業(yè)參考。
采用產(chǎn)品思路
IDP 不僅僅是一個技術(shù)項目,而是一個為企業(yè)開發(fā)人員提供服務(wù)的產(chǎn)品。因此,在建立和運行 IDP 時,企業(yè)需要采用產(chǎn)品的思路心態(tài)。在構(gòu)建 IDP 時,建議企業(yè)考慮并嘗試做到:
需要盡可能去了解內(nèi)部開發(fā)者的需求、期望、偏好和反饋。
在設(shè)計 IDP 時以用戶為中心,同時考慮到 IDP 可用性、可及性和使用簡易性。
以敏捷性、質(zhì)量、可靠性和安全性為前提來交付 IDP。
通過數(shù)據(jù)驅(qū)動的洞察力、實驗和創(chuàng)新來改進企業(yè)的 IDP。
采用產(chǎn)品思維將會助力企業(yè)創(chuàng)建一個實用且有價值的 IDP,為開發(fā)人員解決實際問題,為企業(yè)提供價值,并以良好的開發(fā)人員體驗更好地服務(wù)于企業(yè)用戶。
讓開發(fā)者盡早參與進來
這里我們需要明白 IDP 并不是企業(yè)為開發(fā)者建立的平臺,而是企業(yè)和開發(fā)者共同建立的。因此,企業(yè)需要讓開發(fā)者們盡早并積極參與到 IDP 建設(shè)項目中,并嘗試做到:
- 征求開發(fā)者們對 IDP 的愿景、戰(zhàn)略、功能和設(shè)計的意見和反饋。
- 讓開發(fā)者們參與 IDP 的開發(fā)、測試、部署和操作。
- 賦予開發(fā)者們使用 IDP 的自主性、靈活性和自我服務(wù)的權(quán)力。
- 對開發(fā)者們進行相關(guān)培訓(xùn),以深入了解 IDP 的好處、使用方式和最佳實踐。
盡早和經(jīng)常地讓企業(yè)的開發(fā)人員參與進來,有助于企業(yè)與開發(fā)者們建立信任關(guān)系,這樣能夠更好地了解他們的需求和期望,確保他們對 IDP 的采用度和滿意度,從而培養(yǎng)合作和創(chuàng)新的文化氛圍。
平衡抽象和透明度
一個好的 IDP 應(yīng)該抽象出底層工具和技術(shù)的復(fù)雜性和操作。當(dāng)然,這并不意味開發(fā)人員可以對底層工具和技術(shù)一無所知。企業(yè)在建立和使用 IDP 時,需要對底層技術(shù)與工具的抽象和透明度進行平衡。具體來說就是:
- 充分將底層工具與技術(shù)抽象出來,從而簡化和規(guī)范開發(fā)者的工作流程。
- 保證底層工具和技術(shù)的透明度,以便開發(fā)者更好地進行了解。
- 提供足夠的訪問和控制,讓開發(fā)人員能夠定制他們的應(yīng)用程序并在需要時進行故障排除。
- 保證 IDP 可見性和可觀察性,以監(jiān)測和優(yōu)化其應(yīng)用程序的性能和質(zhì)量。
平衡好抽象和透明度能夠幫助企業(yè)更好地構(gòu)建 IDP,從而為開發(fā)者們提供充足的背景信息和知識,有效降低開發(fā)人員的認(rèn)知負(fù)荷,這樣開發(fā)人員就可以更高效地構(gòu)建高質(zhì)量的軟件。
總 結(jié)
IDP 是一個強大的工具,它可以幫助企業(yè)通過簡化應(yīng)用開發(fā)流程,更快更有效地交付數(shù)字產(chǎn)品。但是如果企業(yè)帶著對 IDP 的認(rèn)知誤區(qū)和誤解,可能會大大降低其采用的效果,因為這些誤區(qū)往往會導(dǎo)致企業(yè)產(chǎn)生不切實際的期望、作出錯誤的決定、最終浪費資源或錯過商業(yè)機會。為了避免這些誤區(qū),企業(yè)需要充分了解 IDP 的真正性質(zhì)和價值,以及最佳實踐。
參考鏈接:
https://sdtimes.com/softwaredev/the-eight-fallacies-of-your-internal-developer-platform/
https://www.infoworld.com/article/3611369/how-to-build-an-internal-developer-platform-from-those-who-have-done-it.html