本文為 CODING 創始人兼 CEO 張海龍在騰訊雲 CIF 工程效能峰會上所做的分享。
文末可前往峰會官網,觀看回放並下載 PPT。
大家上午好,很高興能有機會與大家分享 CODING 最近的一些新動作。今天主要分享的內容是 CODING 的戰略升級和新產品介紹。在講整個戰略升級之前,我們先來講一講“為什麼要做雲原生時代的標準化工具”。大家都知道 CODING 一直在做開發者相關的工具,從程式碼託管開始,後來又做了 CI/CD、專案管理、製品庫等等一系列工具。那麼為什麼我們認為在這個時代做這些工具會有更高的價值?
首先 CODING 在這個行業耕耘了很多年,我們發現一個對社會資源可能造成浪費的現象:每家公司往往都有自己的開發工具團隊,並且做的工作大同小異。比如騰訊、美團這種大型企業,或者包括百果園(零售)、更美(醫美)、中手遊(遊戲)等等,這些企業都有一個或大或小的開發工具團隊,基本佔到研發人員的 1% - 5% 不等。對於一家企業來說,這部分投入並不大,但對於整個行業或者整個社會來講,累計起來的投入也很客觀。
這些團隊做的工作,基本上是把一些現成的單點工具串聯起來,比如 Jira、GitLab、Jenkins、JFrog,包括監控的 Prometheus 等等。將這些工具串聯,再加上一些上層的定製化開發,就是這些團隊的工作。每個企業都在做這樣的工作,其實造成了很大的重複浪費。
通過這一現象,我們看到了優化整個行業效率的機會。那麼為什麼這件事在當下有機會實現,則是因為基礎設施發生了很大的變化——雲原生帶來了基礎設施統一的可能性。
以前構建一個應用時,很多基礎設施,包括作業系統、資料庫、快取、閘道器等等,都是每個企業團隊自行搭建的。無論是自行開發,還是利用開源的工具去搭建,都存在明顯的非標性,不同團隊做的應用都不一樣。在雲時代,包括騰訊雲在內的雲廠商,提供了非常標準化且高效能的基礎設施工具,把閘道器、資料庫等全部納入進去。作為雲的使用者,企業在開發應用時,就不用再去重複建設這些工具,那麼底層的基礎設施就有統一的可能。基礎設施的統一帶來了架構上的統一,從而有可能帶來整個開發工具鏈、開發模式上的統一。這是我們看到的一個很大的趨勢上的變化。
另一方面,我們看到軟體工程經歷了將近 60 年的發展,發展過程也是由作坊式不斷轉變為工業化,到現在開始向自動化方向發展。整個社會的資訊化與數字化變革,帶動了產業網際網路的發展,對軟體開發的需求迅速增長,也催化了軟體工程化的程式。軟體工程化一定會對標準化工具提出更高的要求,這也是整個行業的需求。
此外,標準化的統一和數字化帶來的開發需求,也帶來了軟體開發在效率上的更高追求。從效率的角度來講,我們認為分為兩種:單點效率和團隊效率。單點效率是指一位開發者個人用的工具如何提高個人的編碼除錯效率。現在大家更關注團隊效率,比如 DevOps、敏捷開發,都是團隊協作的方法論和相應工具。
上圖列出的工具,有些更偏向單點效率,有些更偏向團隊效率,中間可能會有一些交叉點,不是 100% 的區分,但大致能分為兩個維度。在這個大背景下,我們也對 CODING的戰略進行了升級,希望能夠在新的時代創造更高的價值。
大家都知道 CODING 最早是做程式碼託管,在 14 年成立。後來經過不斷演進,引進了非常多的上下游產業鏈相關工具,包括持續整合、敏捷專案管理、持續部署、製品庫等等。我們過去的定位是說要做 DevOps 工具的領跑者,但是基於上文提到的大背景,基於團隊效率和單點效率雙向的改進,以及雲原生時代的標準化,我們現在將戰略升級為——雲原生時代的研發工具領跑者,不侷限於 DevOps。下文將會詳細講解,以及我們的新產品,大家會看到其中差異化的東西。
CODING 戰略全新升級
剛才講到單點效率和團隊效率,我們其實是有對應的產品,來服務這兩個不同的維度的需求。CODING 作為一個研發管理平臺,更多的是著眼於團隊效率,所以側重於協作;Nocalhost 和 Cloud Studio 則更多的是偏向於提高單點效率,即提高單個開發者在開發雲原生應用的效率。
再講講 CODING 目前的發展狀況。我們在開發者領域深耕了很多年,也積累了非常多的客戶,現在有兩百多萬開發者,以及五萬多家企業都在使用我們的產品。我們對這些企業做了一些整體調研,發現無論是在降低研發工具的成本,還是在提高產品交付效率,或是在提升整個團隊的效能上,都有比較顯著的進步。下圖列舉了在不同行業我們的一些典型客戶。總體來講分為四大類,第一大類是金融,第二類是網際網路,第三類是政企,第四類是遊戲。這四大類企業對於整個研發工具的訴求會有所不同。
比如金融行業,更多的強調的是安全性和可控性。我們的私有化產品能夠很好地服務這些金融行業的客戶,他們對一站式的訴求也非常強烈,這是金融行業的特性。網際網路行業的客戶更多的則是公有云客戶,我們的 SaaS 產品能更好地幫助網際網路行業實現敏捷迭代、快速交付的需求。關於政企,接下來會展示一個案例,也會有很多數字化轉型帶來的需求。遊戲行業則對大型倉庫有速度上的需求,這也是我們的產品出色服務的一個行業。
我們做 To B 的企業服務,也是騰訊當下的價值觀,要持續關注社會價值,展現科技向善。我們的產品雖然不是直接去服務 C 端的使用者,但是能幫助很多 B 端的企業更好地開發產品,去服務 C 端使用者。
比如在疫情期間,大家每天都會用到健康碼,通過各種小程式或 App 登記掃碼,我們也參與到了整個開發的過程中。比如四川的天府健康通小程式,我們幫助開發團隊十天上線了這個小程式,我們用一天時間完成了整個工具鏈的流水線配置,包括製品的遷移等等;然後又做了一些關於小程式開發跟 TCB 開發的整合工作,能夠更好地幫助開發團隊去交付小程式相關的應用。這個案例也是眾多案例的一個縮影,在政企領域裡也有很多類似的需求。
接下來為大家介紹 CODING 與合作伙伴共建生態的計劃,也是為了能夠創造更多的價值。CODING 的產品定位和服務都是專注於做雲原生時代的研發工具,擁有很多合作伙伴。比如線上索和商務這一板塊,會與騰訊雲、安暢、網商雲端計算等夥伴合作;在交付實施這一板塊,則與安暢、憶享、騰雲悅智一起合作,去做客戶現場的一些個性化支援,包括後續的持續性維護等等;除此以外,我們發現在開發效能,研發工具領域,對於諮詢的需求也很大,所以我們跟整個行業的頭部諮詢廠商都會有一些合作,比如優普豐、安暢、Thoughtworks 等等,配合工具和實施的落地,幫助團隊不僅僅是購入一款工具,而是能更好的匯入方法論,帶動組織變革。我們希望能夠共建研發效能和研發工具的生態,在雲原生時代更好地去服務客戶。
講完戰略上的變化以及對於行業的理解,第三部分我們來講一講 CODING 產品上變動和更新。首先回顧一下 CODING 作為一個一站式 DevOps 平臺,我們對它的定位和目前的進展。
高效雲上研發工作流
如上圖所示,這朵雲類似工廠流水線,這也是我們思考很久得出的結論,希望能把雲和整個研發工具 SaaS 的關係準確表述出來。最底層是計算、網路、儲存,中間是容器、虛擬化等等,往上是一些安全性的內容,包括配置管理、微服務等等。而我們則是在所有這些基礎設施上,又做了一層整個研發工具的 SaaS。這跟雲有緊密的關係,但客戶可以無縫使用這個產品,不需要去關注底層雲的複雜性。這便是我們對於 DevOps 平臺,乃至整個雲產業的定位。
從功能上講,我們希望能給客戶提供一個高效的雲上研發工作流。下圖中基本包含了一個企業,從知識管理到專案管理、程式碼管理,再到構建、測試、製品、上線、使用者反饋,直到團隊的績效、OKR,這整個完整閉環的功能關係圖,這也是 CODING 目前能夠提供給客戶的完整價值。多年來我們一直在完成整個閉環的打造,投入了非常多的研發去完善整個工具鏈,希望能夠給客戶提供 Total Solution,帶來一站式體驗。
但我們也關注到,有很多客戶已經有自己的工具投入和基礎設施,他們很多時候需要的只是一個單點產品,並不需要一站式的工具。比如能不能只需要一個製品庫,或者只需要一個釋出產品。在這樣的訴求下,我們也開始重新思考產品的邏輯,所以部分產品也可以單點拿出來,讓客戶能夠整合到自己的研發工具流的系統裡。
- WePack -
助力企業漸進式 DevOps 轉型
首先來看的就是「製品」。其實在整個中國來講,對製品的認知相對是比較緩慢的,可能在五年前都很少有人提到這個概念,最近才開始慢慢提及。我們認為開發軟體沒有製品庫,就相當於製造業沒有倉庫一樣,是一件不可想象的事情。
但其實以前很少有團隊擁有很正規的製品庫,要麼就是資料夾、FTP,甚至在各種通訊工具上以傳包的形式來管理生產的製品。經過調研,60% 以上的企業基本沒有一個完整的製品管理模組;從整個產業來看,也有一些開源工具,但也不是特別完善,國外會有一些工具,但是無法達到自主可控和一些信創的要求。所以針對這一痛點,我們將製品庫產品單獨拿出來,作為一個獨立的製品產品,定位是企業級的製品管理平臺:WePack。它是 CODING DevOps 的一部分,也可以成為客戶自有 DevOps 工具鏈的一部分。
- Orbit -
全新雲原生應用交付工具
一般在製品後就是釋出環節,也是很多團隊研發和運維最緊密的合作與最激烈的矛盾產生的地方。因為 DevOps 就是要讓開發能夠去完成一部分的應用運維的工作,而不是說應用、系統有了問題就直接先找運維,而這裡的矛盾就會很激烈。
在雲原生時代,需要逐步把應用的運維左移給開發,但資源的運維還是由傳統的運維來做,甚至直接交給雲來做。在把應用運維左移給開發的過程中,因為要讓開發低門檻地去看到這個應用的狀態,去擴縮容,去監控日誌報警的各種配置,就勢必會對應用運維的工具提出很高的要求。這是一個行業的趨勢,也是目前面臨的挑戰。在這個背景下,我們在今年全新的設計了持續交付的產品,在內部叫做 CD 2.0,正式對外推出時,全新命名為:Orbit。大家可以想象一下,這個名字帶來的意境 - 軌道,跟我們想要交付的意境和給客戶提供的價值,是很類似的。
這張圖上展示了產品內的截圖,左上角是當前的微服務雲原生應用,可以看到微服務的架構是什麼樣,微服務之間的關係是什麼樣,有多少個微服務,有多少個資料庫的表,我們也可以做資料庫表的變更;右上角可以看到應用視角,展示了應用有多少變更沒有釋出到生產環境,包括之前的釋出歷史、每次釋出都由誰操作、什麼時間釋出、釋出了哪些內容;下面可以看到這個應用部署的環境,有測試環境、預釋出環境、生產環境等等,包括每個環境當前部署的是什麼版本,現在執行的是什麼狀態,點進去可以看到每一個環境的監控日誌報警都能進行配置。相當於把以前傳統的運維做的一部分工作,完整搬到了 Orbit 系統裡,開發可以在不去打擾運維的情況下,完成整個應用生命週期的管理,這是我們希望 Orbit 能夠交付給開發的價值。
- Compass -
讓研發井井有條
除了剛剛講到的製品庫,以及持續的交付應用運維的左移,讓開發能夠更好地管理自己的應用之外,我們在整個研發過程中也發現了其他痛點。因為每個企業都有自己的研發文化和研發規範,那麼這些研發規範如何在團隊不斷擴大的情況下,落實到每一個團隊和每一個人。很多時候是靠宣導、靠人事不斷去做公司文化的建設,靠每個團隊的小組長人工做反覆的檢查,這也是很多企業的痛點。另外從更上層的管理視角來看,研發團隊做的工作往往是一個黑盒,這是很多老闆的一大痛點。
針對這些問題,我們也不斷在思考,如何才能把軟體工程真正工程化、標準化、規範化。所以我們推出了 Compass,簡單來說就是指南針:我們希望能夠在開發過程中給團隊一個非常清晰的指南。這個指南是產品化的,而不是一個規章制度,定位是讓企業的 DevOps 全流程管控能夠透視整個研發流程,而不是黑盒,並且能夠對整個研發流程做一些價值流的分析。
如下圖所示,這是 Compass 產品頁面的一個縮影,我們可以配置整個研發過程,從一個 Idea 到需求的分析與評審,到之後程式碼的構建、測試用例的編寫,再到後面的持續整合與交付,每個環節是怎樣的流程,環節上有怎樣的規範,比如程式碼、測試用例的規範,都可以在這裡進行配置。當整個研發團隊按照配置好的流程運作時,如果不符合規範,就沒有辦法繼續流轉下去,這樣就可以通過產品的方式來幫助團隊遵守規範,真正實現整個研發過程的規範化、自動化與透明化。同時因為規範化,每個環節是誰做的,花費了多少時間,為什麼慢了/快了,都會有記錄,可以作為事後分析的基礎。
- Cloud Studio -
雲的開端
講完 DevOps,讓我們再來看看雲原生時代新的挑戰和機會。前文提到 CODING 時已經說過,我們以前定位於 DevOps,現在的定位是雲原生的開發套件,除了 DevOps 以外,我們也看到了在開發工具和開發方式上,存在一些新的機會與亟待解決的問題。首先是 IDE,其在過去的發展已經非常的成熟,比如桌面端的 IDE,但是這些 IDE 是不是真的適合用來做雲原生應用開發呢?開發環境的配置是不是越來越複雜?是不是需要一個隨時隨地可以寫程式碼的 IDE?基於這些思考,我們於 2018 年推出了 Cloud Studio。
這個產品做了挺多年,今年我們對其做了一個非常大的改版,希望定位是一個真正好用的雲原生的 IDE 平臺,我們不是要取代本地 IDE。而是說在不同的應用型別上,在開發雲原生應用時,可以為開發者提供超越本地 IDE 的流暢、便捷的編碼體驗。目前 Cloud Studio 支援的語言環境已有二十多種,開發者在上面建立的工作空間有十萬多個,每天開發者在 Cloud Studio 平臺上的開發時長已經累計超過 120 小時。並且我們做了非常多的開放的工作,包括協同程式設計,你可以進入其他開發者的工作空間,一起做一些開發、除錯工作,這在本地 IDE 很難做到;開放的生態也支援各種外掛,Cloud Studio 的啟動速度基本上是 3 - 5 秒的秒級啟動;並且我們做了非常多的模板以及開發環境的配置方式,對新手也非常友好。
除了開發通用的雲端的 IDE 之外,這個技術也希望能夠幫助不同的行業去落地不同的解決方案,比如線上課堂可以做編碼 Demo,低程式碼開發是否需要一個編碼環境,招聘筆試等等,包括我們跟騰訊會議也會有一些整合,在開會的過程中如果需要對程式碼互動,是不是可以有這樣的工具來更好地支援這樣的場景?我們希望能夠幫助更多的行業去更好地協同。
- Nocalhost -
讓雲原生開發迴歸原始而又簡單
在雲原生的開發上,除了 IDE 的問題,我們還發現整個研發測試環境的搭建也存在問題。想象一下,如果你有一個 100 個微服務的應用和一個新入職的員工,你該如何讓他上手開發這個應用?要給他一個怎樣配置的開發機器,才能夠讓他把這個應用的開發環境跑起來?整個開發測試過程能不能更高效?我們發現其實很多企業都有這樣的痛點,在微服務的應用越來越龐大的時候,很少有企業能夠讓每一個開發都有自己的開發環境。而共享一個開發環境,相互之間就會有各種各樣的影響。所以我們在思考,有沒有辦法可以像開發單體應用一樣,開發一個複雜的雲原生應用呢?於是我們推出了——Nocalhost。這個產品是去年年底對外發布的,經過將近一年時間的開發和迭代,現在有很多使用者已經用在了自己的開發工作中。
在這裡解釋一下 Nocalhost 名字的由來。十幾年前我們做開發都是用 Localhost 來除錯,因為當時不需要網路就能模擬網路情況,實現開發網站的反饋迴圈。而在雲原生時代,已經沒有 Localhost,或者從理論上講沒有本地的,所以是 No localhost,但是我們仍期望能夠達到像本地一樣的開發反饋。
如圖所示,左圖是目前開發雲原生應用的流程,如果需要除錯,檢視改一行程式碼的效果,需要經過大概六個步驟,從編譯到上傳製品,甚至需要重啟某個微服務或容器,這個反饋迴圈很慢,至少是分鐘級,甚至 5 - 10 分鐘。而在 Nocalhost 的機制下,反饋直接降低為三步,並且不需要編譯,不需要上傳製品,體驗上基本能做到跟本地的 Localhost 一樣。我們也希望在整個開發體驗上完全媲美本地開發,所以我們做了很多工作,包括容器的快速部署、快速啟動,一鍵 Debug,多人共享的開發環境等等;同時也提供了 Server 端,能夠讓企業的資源管理人員擁有管理能力,去分配不同研發人員的開發資源,更好的回收以及重複利用開發資源。我們希望 Nocalhost 這個產品能夠給雲原生應用開發帶來全新的體驗。
展望未來
最後展望一下未來,在這個領域還有哪些我們目前還沒有做,但是認為非常有價值,我們將來會去做的事情。這裡例舉了三個我們認為比較有價值的行業發展方向。
第一個是 Value Stream。我們談到交付效率的提升是不是一定代表了業務的成功呢?這個問題很多時候答案是否定的。開發團隊覺得做了很多的工作,但是業務側好像沒什麼用,這也是很多業務團隊和開發團隊的矛盾所在。所以不光要提升開發團隊的交付效率,如何衡量交付的東西的價值,就是 Value Stream。那麼我們如何衡量這裡的價值,到最後交付上線後,整個價值流是否能夠管控起來?
第二個是 AI。在這個領域,我們是不是可以開發更多的能力,幫助開發者寫出更加完備、高質量的程式碼,通過 AI 的能力做出輔助開發者 Code Review,甚至 Coding Assistant 的產品?
第三個是在安全領域。也是目前大家關注的一個重要方向。因為整個雲原生裡所有東西都上雲,對於很多企業來講,對安全有著巨大的擔憂。傳統的安全往往是獨立的團隊在做,跟開發測試是相互分離的,我們認為這種組織結構,或者說工作方式相對來說比較低效,有很多返工或者重複勞動的情況。現在更強調的是 DevSecOps,就是把安全性融入到整個研發測試環境裡,這也是我們值得去關注的一個方向。
那麼本次分享的內容就到這裡,感謝大家的參與。CODING 一直以來都堅持「讓開發更簡單」的 Slogan,在雲原生時代,我們也希望能夠讓雲原生開發的研發管理變得越來越簡單,謝謝大家。
點選此處連結
觀看 CIF 峰會回放並下載會議資料