SREWorks數智運維平台開源一週年 | 回顧與展望

語言: CN / TW / HK

2022年3月SREWorks項目正式開源,到目前為止已經整整一週年了。自開源以來,我們始終立足雲原生運維場景,秉承“數據化、智能化”的運維思想,採用“小步快跑”的快速迭代方式,使得整個SREWorks項目也取得了長足的進步。於此同時,得益於社區用户、企業夥伴的積極參與和貢獻,也為SREWorks項目的發展注入了新的活力。下面我們來回顧一下SREWorks的開源故事並展望其未來的發展。

開源故事

相信大家或多或少聽説過飛天的5K項目,這是中國雲計算領域的一個里程碑式的項目,我們團隊承擔了其中的運維工作。超大規模集羣的運維保障任務,讓我們意識到:如果沒有系統性的運維工程,即便我們再殫精竭慮,集羣穩定性也是會是一件靠天吃飯的事情。於是我們逐步將大量的運維實踐進行工程化落地,使之成為了一個可靠的運維平台,在內部我們稱之其為ABM:Apsara Bigdata Manager -- 飛天大數據運維平台。

有了ABM之後,我們常常會對外分享平台化的運維工程實踐,也收到了較好的同行反饋。本着 "Talk is cheap. Show me the code." 的想法,我們進一步探索如何將這些平台工程實踐代碼進行開源,幫助更多從業者提升運維效能。

隨着雲原生以及Kubernetes集羣的大量推廣,我們發現這些大規模的工程實踐,同樣適用於k8s集羣。於是,我們對ABM進行了分層改造,升級為應用引擎 + 運維平台的模式。抽取其核心引擎部分為AppManager,使用OAM作為應用模型,其原理及實現可以參考如下文章:

QCon演講實錄(上):多雲環境下應用管理與交付實踐

QCon演講實錄(下):多雲管理關鍵能力實現與解析-AppManager

同時,我們將運維平台ABM移植到k8s集羣下,並進行了優化裁剪,這個過程有點像從Mac OS X中裁剪iOS--我們將這個裁剪出來平台命名為SREWorks。有了SREWorks之後,我們的各種對外經驗分享對於同行來説不再處於隔靴搔癢的狀態,我們有方案有實踐有代碼可落地。

開源歷程

在這一年時間裏,SREWorks進行了幾次重要的版本發佈:

日期 版本 説明
2022/3/22 v1.0 工程代碼首次公開推送
2022/5/9 v1.1 組件插拔場景化部署能力  SREWorks v1.1 版本發佈 組件插拔場景化部署能力
2022/6/21 v1.2 公共應用市場上線,數據平台能力增強 SREWorks v1.2 版本發佈 新增運維市場能力
2022/11/16 v1.3 應用插件機制上線 SREWorks v1.3 版本發佈 插件機制發佈
2023/1/6 v1.4 純內網離線安裝方案支持,底座支持熱升級 SREWorks v1.4 版本發佈 離線安裝 & 前端重構

承蒙廣大開發者和用户的支持與認可,SREWorks在2022年底被InfoQ評為開發者最喜愛的十大開源項目。

image.png

開源意義

在這開源的一年裏,在與外部的討論溝通上,我們常常會不可避免的碰到這麼一個問題:為什麼國內開源項目做成功的這麼少?我們可以從開源項目使用者的角度,來思考這個問題:一個開源項目應該更像個工程還是更像個工具?似乎優秀的開源項目通常兩者兼有之:方便快捷的工具幫助開發者快速解決問題,吸引他們快速入坑;工程的深度吸引業界高手持續往裏填坑。 反之,缺乏工程深度項目能幫助用户解決短平快的問題,但無法持續發展,而缺乏快捷工具的工程如無源之水無本之木,還未積累足夠的用户基數用户案例就枯竭了。

再往深分析一層,為什麼國內開源項目常常會陷入上段提到這些困境?因為開源項目的推廣並不像朋友圈的點贊,認同這個項目的人,會將這個項目實際用起來,繼而接納開源項目作者在項目中所傳達的思想及方法。所以開源項目必須要有其獨創性,才能服眾,否則使用者就會產生一種“好像我也行”的衝動另起爐灶。這就像老生常談的那句話“一流企業做標準、二流企業做品牌、三流企業做產品”,一個優秀的開源項目常常引導了這個領域的一些標準的落地。

我們希望通過SREWorks數智運維平台,讓更多從業者利用“大數據和人工智能”的能力做好運維,進入到“數據化、智能化”時代。從代碼到線上業務服務的全流程,我們劃分了“交付、監測、管理、控制、運營、服務”六大場景,每個場景中都其有代表性的核心功能。

image.png

開源生態

圍繞着SREWorks數智運維平台,我們秉承開放協作共享的理念,致力於構建一個人人可參與的生態圈。

前端可視化生態

前端可視化常常成為一個產品功能快速迭代的瓶頸,SREWorks中提供了自由的前端低代碼組件佈局方案,無需前端開發同學配合,只需要輕鬆地拖拉拽一把,就可以快速將幾個前端頁面落地。大家在SREWorks中看到的所有功能頁面,均是通過這種可視化佈局產生的,我們的前端研發提供了豐富的前端組件庫供佈局使用,具體對此感興趣的同學可以參考下面兩篇文章或直接上手體驗一把:

SREWorks前端低代碼工程設計概覽

SREWorks前端低代碼組件生態演進:monorepo架構重構和遠程組件加載實踐

image.png

我們的前端研發同學生怕各種組件無法完全滿足業務需求,想方設法提供了各類組件擴展及能力增強方案:

  • 組件不夠多? 我們利用monorepo架構將組件部分變成一個獨立的npm工程,方便開發者二次開發以及往裏新增組件。
  • 接口數據格式無法完全匹配組件? 我們在組件中提供各種數據處理插槽,允許用户直接寫js函數來處理數據。
  • 組件的文字格式上希望做一些調整? 各種展示文本均支持使用React JSX進行格式渲染增強。
  • 想嵌入一些自己開發的組件?也不是基於React開發的? 沒關係,遠程組件加載滿足你,Vue組件輕鬆加載。
  • 不想在本地開發代碼,但想快速把幾個頁面元素合成一個新組件? 我們支持使用React JSX在前端直接編寫新組件。

應用及插件生態

在應用開發中,構建環節是至關重要的。有時候線上環境看起來十分井井有條,但是構建環境卻會為了快速出包,暗藏各種腳本或有狀態的小魔法。時間一長,這條清澈的小溪就會佈滿各種巖石、急流、暗礁,大多數情況能有驚無險地通過,但總會有那麼幾次問題的排查讓人刻骨銘心。SREWorks基於k8s提供完整的雲原生研發及構建方案,沒有有狀態的構建機,每次構建都是一個獨立Pod,用完即毀,保持良好的彈性伸縮能力。具體技術細節可以參考 SREWorks持續交付雲原生化: 鏡像構建

SREWorks中所有功能都是由標準的OAM應用構成的,應用就是組成平台的最小原子。 同時,我們將SREWorks中的應用劃分成兩個大類:運維應用和企業應用:在運維應用中,我們如上文提到的“交付、監測、管理、控制、運營、服務”六大場景,內置了豐富的運維應用;在企業應用中,研發同學可以藉助SREWorks的雲原生研發流程快速落地功能。

image.png

在v1.2版本之後,所有的SREWorks平台實例中都上線了公共應用市場,也就意味着已經部署SREWorks的用户可以通過這個公共應用市場,來持續安裝以及升級應用、增強能力。我們鼓勵SRE同學將各種經驗沉澱成一個應用,進而設計成一個完整的應用產品,上架到市場供更多的同行使用。

另外一方面,為了能夠滿足更豐富的應用形態需求,我們在v1.3版本上線了插件機制,提供了工作負載等插槽允許用户通過插件進行擴展。當前工作負載中已有插件是微服務和Helm,後續會上架更多的插件,也歡迎有需求的公司進行插件共建。

數智運維生態

在SREWorks中我們提供了基於ElasticSearch的完整的數據運維平台以及智能運維平台,但説實話,數據化和智能化這塊能力讓公司來一鍵接入還是有難度的,於是我們基於SLS(阿里雲日誌服務)的SREWorks微應用,無需部署SREWorks,幫助部分用户一鍵體驗輕量級SREWorks的數智服務,需要深入瞭解的同學可移步這篇文章 SREWorks 數智服務嚐鮮,你的數據準備好了嗎?

在智能運維算法這塊,對外我們不斷規劃更多的算法開源,對內我們不斷夯實算法理論基礎:

  • 在2021年,我們與阿里雲達摩院合作的時序多週期檢測相關論文《RobustPeriod: Robust Time-Frequency Mining for Multiple Periodicity Detection》被SIGMOD 2021接收,這也是阿里首次以第一單位在 SIGMOD 的Research Track發表的論文。
  • 在2021年,我們與達摩院決策智能團隊合作撰寫的論文《CloudRCA:面向雲計算平台的通用根因分析框架》,國際頂會CIKM2021的Applied Research Track錄取。
  • 在2022年,我們與達摩院時序智能團隊合作的《NetRCA: An Effective Network Fault Cause Localization Algorithm》在 ICASSP‘22 AIOps Challenge通信網絡智能運維大賽獲得冠軍。

我們歡迎在數智運維領域與使用SREWorks的公司有更多的共建與合作,持續打磨工程及算法,使之產生更廣泛更更普適的價值。

後續規劃

引擎(Appmanager) 上我們會進一步完善插件機制,同時引入更多的工作負載(workload)和運維特徵(trait)來實現更豐富的應用場景。在應用持續集成(CI)鏈路上,我們會根據已有案例持續進行打磨能力,使得應用開發及構建方案對其他公司更加適配。

平台層(PaaS) 上我們會進一步增強權限體系和接口服務,使得SREWorks在其他公司中嵌入集成更加簡單。同時我們會將中台能力進一步抽取,使得運維應用之間通過中台能力交叉引用更加方便高效。

應用層(SaaS)上我們會根據內部新上線的功能情況進行開源,可能會包含應用管理的增強以及業務流程編排相關的功能點。

數智能力(DataOps&AIOps) 上我們在今年會開源基於Flink ML的日誌聚類算法服務,更強的異常檢測服務,大敬請期待。

開發者生態(Developer Ecosystem) 上我們今年會進一步擴充應用市場的應用,提供更多的培訓課程及文檔,方便更多用户,能快速基於SREWorks完成雲原生的應用開發。同時今年會上線SREWorks應用測評系統,在日常組織一些比賽進行基於SREWorks的應用開發比賽。

寫在最後

開源並非一件易事,曾有人這樣問我:“你們開源是怎麼活下來的?” 通過內部大量的工程實踐的打磨,使得我們孵化了這樣的平台,磨合了這樣的一種工作方式:我們希望將這其中的價值以及思考傳遞給更多的人,路雖遠行則將至,事雖難做則必成。