一份關於.NET Core雲原生採用情況調查
調查背景
Kubernetes 越來越多地在生產環境中使用,圍繞 Kubernetes 的整個生態系統在不斷演進,新的工具和解決方案也在持續釋出。雲原生計算的發展驅動著各個企業轉向遵循雲原生原則(啟動速度快、記憶體佔用低)的平臺, .NET Core正是在雲原生背景下發展起來的平臺,.NET Core的啟動速度快,記憶體佔用很低,反而Java平臺在雲原生時代大大的落後了。這也是可以給很多人解釋為什麼.NET Core 平臺下沒有Spring Cloud這樣的框架。微軟完全是面向未來的設計系統,使用kubernetes 和 service fabric來協調服務,在這兩個框架之下Spring Cloud這樣的框架已經毫無意義。由於軟體定義基礎設施方興未艾,編排和自動化領域kubernetes佔據了主體地位,在平時的工作中和身邊的同學聊天的過程中很多人對kubernetes 有一種畏懼心理,所以7月份我在微信公眾號“dotnet跨平臺” 進行了一項關於.NET Core雲原生採用情況的調查,參與人數741,這個調查今天也結束了,所以這裡寫一篇文章總結一下。
調查結果
1. 是否使用.NET Core開發
我的公眾號裡使用者多是使用.NET,使用.NET core的使用者69%,還有31%的開發者沒有把.NET Core投入生產,從概率角度還是反映了一個趨勢,記得2017年初我也在公眾裡做過類似的調查,當時的資料倒過來的,只有20%的使用者在使用.NET Core, 畢竟那時候.NET Core 才釋出1.1版本,還缺乏很多API,隨著.NET Core 2.1的釋出,.NET Core的可用API得到極大改善,很多新專案開始使用.NET Core,現在.NET Core 3.0 Preview7 也已經go live,可以投入生產。
2. 是否使用docker 容器化.NET Core
使用docker容器化.NET Core的比例下降到了53%,這個資料相比.NET Core的使用人群比例還是超過了50%的,這是需要向大家多多推廣的地方了,期望更多的同學能夠把容器化技術用起來,.NET Core對容器非常友好,特別是.NET Core 3.0在docker 執行環境上有著更好的改進,.NET Core的容器化也是.NET Core有優勢的地方,我經常在微信群裡給大家介紹.NET Core容器化的優勢,特別是對於Java來說,如果公司裡同時有Java團隊,大家都跑在docker上,這個優勢領導一定看得見。
3.Kubernetes 採用情況
60%的受訪者使用 Kubernetes 進行容器編排,基本上kubernetes的專業調查資料相驗證,這個數字是使用 Docker Swarm 的兩倍,Service Fabric的使用也有11%,相信到明年,Kubernetes 將可以全面用於生產環境中的工作負載。 在使用kubernetes的方式上更多人選擇了自建k8s叢集,略多於使用雲託管的k8s
4.採用 Kubernetes 的障礙
Kubernetes 這項技術還很年輕,圍繞它的生態系統也還在形成過程中。Kubernetes 的功能和生態中的多種工具正在逐步演化,但步調卻不一致。因此,團隊在評估和執行 Kubernetes 的時候遇到了不同程度的問題。一些痛點包括:內部團隊對通用技術的統一認識(22%), 內部缺少專家資源(42%),在關鍵任務中保證可靠性(14%),複雜策略的管理(21%)。
5.採用 Kubernetes 時需要哪些幫助
對於這個問題,45% 的受訪者的回答是“架構設計”。架構設計確實對很多團隊都造成了困擾,因為對於架構設計有很多要考慮的地方:評估物理和軟體基礎設施,如何整合新技術,如何以新的方式運維等。31% 的受訪者表示在 Kubernetes 的日常管理上需要幫助。排名第三的回答是“部署” ,僅佔 24%
6.遇到問題時向誰求助
團隊尋求建議的資訊源差不多,主要包括編排工具供應商(11%),獨立諮詢公司(6%),業內同行(28%)和相關論壇(50%)。僅有 6% 的受訪者在部署 Kubernetes 的時候不需要幫助。這個結果表明,組織在尋求所需幫助時存在一定的問題。我已經在使用.NET Core + kubernetes這條道路上探索了大半年時間,積累了很多經驗,你們需要幫助時歡迎找我,我公司可以提供相關各方面的諮詢服務。
如果你正在考慮 Kubernetes 或在評估/部署過程中,可以從已經在使用 Kubernetes 的人那裡得到有用的建議。使用雲原生技術(包括 Kubernetes)很難,但對於那些優先考慮軟體開發並希望縮短開發週期,更好地利用資源以及獲得最佳開源技術的團隊來說,顯然是值得的。特別是使用.NET技術的團隊,轉向.NET Core這艘大船時,kubernetes 一定是最好的舵手, .NET Core 針對雲原生開發的重新定義,免費開源跨平臺,效能接近C++。