來源:計算機世界
現代軟體系統日益增長的複雜性正在慢慢扼殺軟體開發者。你如何才能重新獲得控制權,同時又不會失去這些技術所帶來的優勢?
“複雜性會致命,”Lotus Notes 的建立人和微軟資深人士 Ray Ozzie 在 2005 年的一份內部備忘錄中寫道,“它榨乾了開發者的生命,使產品難以被規劃、構建和測試,它帶來了安全挑戰,並且會令使用者和管理員感到失望。”
如果Ozzie認為當時的情況已經很複雜了,那麼他又該如何看待軟體開發者在雲原生時代所面臨的複雜性?
從在你可以觸控到的伺服器上託管的單體架構中構建應用程式,到將它們分解為多個微服務,打包進容器,與 Kubernetes 協調並託管在分散式雲環境中,這個轉變標誌著軟體的複雜程度顯著提升。再加上人們對功能豐富和對良好消費體驗的期望,這些體驗還需要設計成安全且有彈性的。過去,開發者從來沒有遇到過如此多的要求。
亞馬遜的CTO Werner Vogels在2019年AWS峰會期間表示:“當你進入非常普遍的微服務環境時,複雜性在明顯增加。把一切都放在一個整體中的做法會讓事情更容易嘛?對於某些方面來說肯定會更好。”
又或者像Werner的同事、AWS 的 DevOps 產品營銷主管Emily Freeman 在2021年所說的那樣——現代軟體開發是“一項關於無序狀態的研究,它並沒有變得更簡單。”
另一方面,複雜的技術從未如此簡單地使用現成的方式實現,只要透過一個 API,就能實現從基本的庫和框架到影象識別功能,甚至整個支付堆疊,你只需在上面組裝和構建業務邏輯。但真的有那麼簡單嗎?
“做軟體開發者從未像今天這樣困難,”迪士尼(Walt Disney)公司企業技術戰略顧問兼前總監Nigel Simpson說,“雖然我們已經看到功能的升級,使開發者能夠透過使用高階框架進行應用程式開發和機器學習來做更多事情,但這需要付出代價。選擇的爆炸式增長和開發速度使開發者很難跟上時代潮流,許多開發者都因此陷入了困境。”
本質複雜性與偶然複雜性
軟體代理公司Simple Thread的聯合創始人Justin Etheredge對於區分本質複雜性和偶然複雜性提出了建設性意見。他表示:“基本複雜性是指你所工作的業務領域的複雜性,事實上,企業本身就是個極其複雜的環境,所以他們試圖解決的問題在本質上都是複雜的。另一方面是偶然複雜性,就是我們使用的工具所帶來的複雜性,也是我們在解決問題時最重要的一環。”
雲原生時代帶來了比以往任何時候都更多的偶然複雜性,這形成了開發者和老闆之間的衝突,開發者希望利用他們可用的完整工具包,而老闆則希望他們專注於為客戶提供價值。
Etheridge說:“鑑於當今對軟體開發者的需求,公司沒有能力推動開發者建立一種主要為客戶提供價值的思維模型。讓更多工程師去考慮這件事是一個挑戰。”
選擇的缺點
雲計算和開源軟體的流行,意味著開發者在構建和執行更具可擴充套件性、彈性、模組化和可更新性的應用程式上有更多的選擇,且可選項在以不可阻擋的速度增加。
Humanitec是一家幫助公司構建開發者平臺的初創企業。Humanitec的創始人Kaspar von Grünberg在接受採訪時表示:“以前一切都簡單得多,不是因為我們這個行業犯了錯誤,而是因為我們必須加快上新速度,以應對這些系統需求的急劇增長。”
雲原生計算基金會 (CNCF) 在維護一個互動式圖形專案,其中包含構成雲原生生態系統的近 1,000種獨特服務,其中許多是免費且開源的。此外,三大雲提供商:亞馬遜雲、微軟雲和谷歌雲也都為客戶提供了大約200種獨特的服務,涵蓋計算、儲存、資料庫、分析、網路、移動、開發者工具、管理工具、物聯網、安全和企業應用程式。
RedMonk分析師Stephen O'Grady在2020年的一篇部落格文章中寫道:“在這一點上,應用程式開發過程過於分散。每個企業架構都是三層的,每個資料庫都是關係型的,每個業務應用程式都用 Java 編寫並部署到應用伺服器的時代已經結束了。當今的基礎設施是多種多樣的,它的一個最具決定性的特徵就是沒有一個決定性特徵。”
或者,正如Tumblr前CTO Marco Arment在2015年寫的那樣,“由於大多數現代網路開發環境中涉及大量的工具數量和快速的變化,網路開發從未像今天這樣複雜或混亂。”
利用小型、獨立和兩個比薩原則來構建服務,以響應客戶需求,是雲供應商對產品開發採取的久經考驗的方法。這種方法使開發者有權去選擇如何組合大量的構建模組,以提供業務價值。
金融服務公司Two Sigma平臺工程主管Camille Fournier在接受採訪時表示:“你就像一個在雲端糖果店裡的孩子。當你成大並試圖把‘糖果’融合在一起,複雜性絕對會成倍增加。”
這也讓許多人質疑,這種選擇水平對普通軟體開發者來說是否有利。或者,正如 O'Grady 在2020年的博文中總結的那樣,“在某些情況下,龐大的可用服務所帶來的複雜性可能不再是一種優勢,而是一種負擔。”
預告
高速發展的科技會給開發者帶來更多的選擇和複雜性,也讓開發者陷入了難關。那麼在現代開發中還有哪些操作會給開發者帶來麻煩?請持續關注《計算機世界》的乾貨分享!
本文來自【計算機世界】,僅代表作者觀點。全國黨媒資訊公共平臺提供資訊釋出傳播服務。
ID:jrtt