導讀:2020 年 8 月 18 日,首屆雲原生微服務大會於線上召開,會議首日,阿里雲資深技術專家、CNCF TOC 李響 Keynote 演講中正式發佈了《 2020 年微服務領域開源數字化報告》。
微服務體系就像是一劑催化劑,可以加速數據和業務結合的過程,更好地提升生產力,從而實現業務的提升。本項目旨在通過建立一份建立在微服務領域的相對完整、可以反覆進行推演的數據報告(報告、數據、算法均開源),分析微服務框架項目以及 Spring Cloud 項目的 GitHub 開發者行為日誌,通過多維度數據分析的視角,來觀察微服務領域的開源現狀、進展趨勢、演化特徵等問題。
本報告根據 2020 年 1 月到 6 月的 GitHub 日誌進行統計。值得一提的是,報告顯示 Apache Dubbo 作為中國本土開源的項目,在微服務框架中排名第 5,全球排名躋身 693;Spring 社區第一個國產 Spring Cloud 項目 Spring Cloud Alibaba 作為開源的微服務全家桶,在 Spring Cloud 榜單中居於榜首。
關鍵詞:微服務、開源、行為數據、GitHub
背景
隨著業務的擴張,單體應用架構的開發、部署和運維都會越來越慢,越來越複雜,甚至在單體架構應用開發中敏捷模式無法施展開。基於此,具有更高獨立性、可用性和彈性的微服務應運而生。從結構上看,微服務架構將一個應用拆分成多個鬆耦合的服務,這些服務之間通過某種協議(REST、rpc 等)進行互相協作,完成原單體架構功能,但提供更靈活的部署模式,更容易擴展,降低了開發、運維上的複雜度。微服務的核心思想就是分而治之。微服務是商業應用程序發中最熱門的新事物。微服務這個詞取代了敏捷、DevOps 和 RESTful。
2020 年 7 月 O’Reilly 公佈了一份關於企業微服務市場現狀的數據調研。報告顯示,在訪問了全球 1502 名軟件工程師、系統和技術架構師、工程師以及決策者後,有 77% 的組織反饋採用了微服務,其中 92% 的組織成功使用了微服務。瞭解並分析微服務領域開源項目的發展,有助於掌握該領域的發展趨勢,從而幫助提高企業的競爭力。
因此,進一步深入研究微服務領域的開源數字化現狀具有非常重大的意義。
總體宏觀統計結果
1. Key Takeaways
- Quarkus 作為雲原生微服務框架,在微服務框架中活躍度排名第一,全球 GitHub 開源項目活躍度中排名 40;
- Spring 作為 Java 微服務框架事實標準,Spring Cloud 和 Spring Boot 項目在微服務框架中活躍度分別位列第二和第三;
- Apache Dubbo 作為中國本土開源的項目,微服務框架活躍度排名第五,全球 GitHub 開源項目活躍度中排名躋身 693;
- 在廠商 Spring Cloud 項目中,Spring Cloud Alibaba 活躍度排名第一。
2. 微服務框架榜單
根據附錄中給出的項目活躍度定義,我們使用 2020 年 1 月~6 月的數據對微服務框架相關的項目及社區進行了活躍度的統計與排名,結果如下表所示,quarkusio/quarkus 項目、spring-cloud 社區、spring-projects / spring-boot 項目分別位於 Top1,Top2,Top3。需要注意的是,global_rank 是指該項目在全球 GitHub 開源項目中的活躍度排名。
(點擊查看大圖)
【注】:表格中的 developer 是指執行了五種動作:Issue comment、Open issue、Open pull request、Pull reuqest review comment 和 Pull request merged 的開發者。
3. Spring Cloud 榜單
根據附錄中給出的項目活躍度的定義,我們使用 2020 年 1 月~6 月的數據對 Spring Cloud 項目進行了活躍度的統計與排名,結果如下表所示:
(點擊查看大圖)
【注】:表格中的 developer 是指執行了五種動作:Issue comment、Open issue、Open pull request、Pull reuqest review comment 和 Pull request merged的開發。
展望
此次開源項目數據報告針對微服務領域的項目進行了研究,主要是提供了一些統計數據。未來,會對社區協作關係做可視化的呈現;在數據挖掘的層面,會基於真實數據挖掘數據背後的價值。希望報告所倡導的開源開放的業態有助於推動中國微服務領域的開源走向更深層次。
致謝
本次報告由 X-lab 開放實驗室撰寫。
X-lab 開放實驗室是由來自華東師範大學、同濟大學的師生所構成的開放創新共同體,專業背景包括計算機科學、數據科學及其相關跨學科,長期思考並實踐教育與開源兩大主題。
附錄:數據集及方法
1. 數據集
- 時間:2020 年 1 月~2020 年 6 月
- 微服務框架數據
- spring-cloud 數據集
2. 活躍度計算方式
(1)開發者活躍度
開發者活躍度,其定義為某特定 GitHub 賬號在一段時間內在某特定 GitHub 項目中的活躍評價指標。其活躍度由該賬號在該項目中的行為數據決定。本報告中所關心的行為包含如下幾種:
- Issue comment:在 issue 中參與討論是最基本的行為,每個評論計入 1 次;
- Open issue:在項目中發起一個 issue,無論是討論、Bug 報告或提問,對項目都是帶來活躍的,每個發起的 issue 計入 1 次;
- Open pull request:為項目提交一個 PR,表示已對該項目進行源碼貢獻,則每次發起一個 PR 計入 1 次;
- Pull reuqest review comment:對項目中的 PR 進行 review 和討論,需要對項目有相當的瞭解,並且對項目源碼的質量有極大幫助,每個評論計入 1 次;
- Pull request merged:若有 PR 被項目合入,即便是很小的改動,也需要對項目有較為深入的理解,是幫助項目進步的真切貢獻,則每有一個 PR 被合入計入 1 次。
以上 5 個種行為在該報告模型中,具有不一樣的權重,其加權值逐級增加,加權值分別為 1、2、3、4、5,即:
(2)項目活躍度
項目活躍度,其定義為某特定項目在一段時間內的活躍評價指標。其活躍度由該段時間內在本項目中產生活躍的開發者活躍度加權計算得到,即:
使用開方的加權方式,用於抹平因核心開發者活躍度過高而導致項目活躍度過高,在該計算方式下,活躍度計算方式對參與人數較多而活躍情況平均的項目更加友好。
本報告將週期性更新、發佈,報告長期沉澱地址:https://github.com/alibaba/OpenSourceReport
首屆雲原生微服務大會
首屆雲原生微服務大會正在火熱直播中,點擊 PC 端地址即可觀看:https://developer.aliyun.com/topic/microservices2020#/
“阿里巴巴雲原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的公眾號。”