專訪京東科技張亮:本土開源需形成吸納開發者的靶心

伴隨着開源產業的蓬勃發展,開源技術成爲助力產業數智化變革的關鍵力量,開源企業更是受到資本的青睞。據不完全統計,僅在過去一年,國內先後有超過10家開源企業獲得新一輪融資,融資紀錄爲近年來開源賽道最高。與此同時,大公司開源步伐加速、國內第一家開源基金會正式成立等消息,也成爲了去年本土開源領域的重磅新聞。

隨着越來越多的企業、人才、資金等大量湧入,在本土開源這一賽道之上,未來將湧現出更多優秀的開源參與者。然而,在參與開源的過程中,更多有關於企業開源治理、社區運營等方面的難題,卻依然困擾着每一位投身開源的人。

去年4月16日,Apache軟件基金會宣佈Apache ShardingSphere畢業併成爲頂級項目,成爲基金會內首個分佈式數據庫中間件項目,這意味着Apache ShardingSphere在開源實踐上取得的成果,獲得了國際頂級開源組織的認可。而在這亮眼成績的背後,ShardingSphere項目經歷哪些階段?一個活躍的、健康發展的開源社區需要具備哪些因素?企業在開源生態建設中又該面臨哪些挑戰?

近日,由InfoQ特別策劃並推出「開源創新30人」系列採訪報道中,InfoQ記者與京東科技架構師,Apache ShardingSphere項目VP&創始人張亮進行了一次深入交流。部分答案可在對話中得以揭曉。

▲京東科技架構師,Apache ShardingSphere項目VP&創始人張亮▲

ShardingSphere的三次蛻變

在開始企業開源治理及開源社區建設的話題之前,首先得從張亮及Apache ShardingSphere的發展說起。

截至目前,ShardingSphere項目已有150+公司採用,並涵蓋金融、電商、數字化與雲服務、互聯網教育、出行、物流、醫療健康等各行各業,在京東內部也被廣泛採用。事實上,從寫下第一行代碼到取得今天這樣的成績,ShardingSphere主要經歷了三個階段的發展。

在開源初期,當時還被命名爲Sharding-JDBC的ShardingSphere主要由張亮個人主導,是一款基於Java JDBC接口實現的數據庫分庫分表管理框架。

據張亮介紹,當時決定寫下第一行代碼的原因,主要是因爲行業內的數據庫中間件長期沒有足夠成熟且能讓大家廣泛採用的產品。

張亮表示:

不同階段的開源項目都讓人覺得缺點什麼,比如說對SQL的支持度不高,工具也不成熟,而且開源一段時間就沒人維護了,都是些半成品

抱着改變這一現狀的初衷,當時對社區都沒什麼概念的他便寫下了Sharding-JDBC的第一行代碼。

而在第一個版本的產品成型併發布後,由於Sharding-JDBC很好地屏蔽掉了數據持久化過程中分庫分表等方面的實現細節,讓開發者能夠更輕鬆地實現數據庫的水平擴展,產品開源後便獲得了開發者的一致好評。

隨後,伴隨着Sharding-JDBC在開源社區得到認可,當時打算自研分佈式數據庫的京東科技團隊也找到了張亮,有意邀請他加入。再三考慮後,張亮最終加入京東科技,全職做起了Sharding-JDBC,也從此開啓了Sharding-JDBC第二階段的發展旅途。

據張亮介紹,由於設計之初Sharding-JDBC主要是 基於JDBC標準接口實現的, 整體上更像是一款Java數據分片框架,因此也存在只能用於Java上的侷限性。但事實上,業務應用開發語言不止Java一種,實現從一個Java框架到更爲通用的跨語言數據庫中間件產品的轉變,Sharding-JDBC還有許多需要提升的地方。

首先是品牌的升級,將Sharding-JDBC改名成爲了ShardingSphere,在保留原來開源框架累計下來的人氣與品牌關注度的同時,進一步強調自己已經跳出了最初Java框架的固有產品形象。

與此同時,張亮還開始着手運營與組建社區,考慮將ShardingSphere推入Apache基金會,將其發展成爲更加大衆化的、能夠成爲開源數據庫中間件領域標準的產品。

2018年11月,伴隨着ShardingSphere正式進入Apache孵化,隨後又於17個月之後正式畢業成爲Apache頂級項目,在先後完成了社區組建,同時遵循Apache的規則將ShardingSphere所有權從公司與個人轉向社區所有之後,ShardingSphere基本完成了第二階段的轉變。

在進入第三階段之後,可插拔架構的提出,也開始成爲了ShardingSphere發展需要考慮的問題。

據張亮介紹,可插拔思路的成型,主要是由於在使用ShardingSphere的過程中,京東內部除了對數據分片和讀寫分離等需求外,也逐漸衍生出了包括數據加密、影子庫壓測等這一類的需求。這些功能如果分別讓各個系統部門自己去實現,就會出現重複造輪子的現象,但如果能夠將這些功能中比較通用的能力抽離出來,集成到ShardingSphere之上,這就會極大地減少公司整體的工作量。

而在將這些功能集成到ShardingSphere的過程中,如何實現功能之間的互相隔離,不影響主架構運行,成爲了ShardingSphere“可插拔架構”提出的關鍵。

 

據張亮介紹,在技術架構上,ShardingSphere的可插拔架構劃分爲面向數據庫內核、企業應用和開源生態的三個層級。

L1內核層:面向數據庫內核,包括查詢優化、分佈式事務、核心執行鏈路、調度引擎和分佈式治理等。L1內核層是ShardingSphere通過對行業的思考所提供的解決方案。通過可切換的雙引擎,在分佈式數據庫尚未成熟的變革階段提供中間件增量服務;並在終將到來的分佈式數據庫成熟之時提供面向分佈式的查詢優化、事務和存儲引擎。希望L1內核層的可插拔設計,能幫助傳統數據庫向分佈式和雲原生階段提供平穩的演進路徑。當然,目前內核層還屬於籌劃階段。

L2功能層:面向企業應用,包括數據分片、讀寫分離、數據庫高可用、強一致多副本、彈性遷移、數據加密、影子庫以及其他擴展。它是開發者可以自行拓展的重點部分。L2功能層對於企業級應用意義重大,目前L2功能層已經較爲完善。

L3生態層:面向開源生態,包括SQL方言、數據庫協議以及數據網關。除了對單一數據庫兼容度的提升,對異構數據源的打通數據網關也在探索中。L3生態層將是ShardingSphere對接和融入開源生態的標準。

從最初基於Java語言開發並開源的數據庫分庫分表框架開始,ShardingSphere一路隨着市場的需求不斷更新,先後經歷了功能升級、治理模式切換,進入開源基金會等過程,逐漸演化成爲了一個分佈式的數據庫生態體系。

 

社區大於代碼的含義是“獨行致快,衆行致遠”

一路轉型升級的過程中,張亮對於開源的理解也在不斷地提升。

從寫下第一行代碼到第一個開源版本發佈,張亮用了三個月就完成了所有工作,在之後兩年的運營過程中,張亮個人貢獻的代碼量也一度達到80%以上。但是開源之後,如何讓整個項目長期穩定地運行下去,卻成爲了讓張亮思考最多的問題。

一個項目的代碼再好,但如果他是屬於一個人的,那其實它的風險是非常大的。因爲隨着維護者的心情變化,可能這個項目可能會忽然就失去維護,或者開始維護很慢。從企業使用的角度來看,這樣的項目是不被看好的。

在張亮看來,一個開源項目想要真正取信於人,一定是它要有一個穩定的基座,這個基座不能是第二天就會消失的東西。

而在親歷了ShardingSphere從進入Apache孵化到畢業的全流程之後,他爲自己的這一理念找到了新的解釋。

在Apache基金會內,“社區大於代碼”的理念滲透到整個基金會運營決策的每一個環節,一句話便高度概括了Apache的運營發展之道。但在張亮看來,“社區大於代碼”其實又可以解釋爲“獨行致快,衆行致遠”。

張亮表示:

一個人去寫代碼可能會很快,但是隻有更多的人一起參與進來,即使當項目的創始人累了不想走了的時候,背後也有別人在推着他向前走,並且經常會有一些有趣的新方法出現,刺激大家一起往前

關於如何打造一個持續活躍、健康發展的社區?張亮總結了以下五點經驗:

第一,需要多去聽多看。通過GitHub和郵件列表這些渠道,再小的聲音都能夠反饋到社區內部,項目運營人員通過這些渠道傾聽參與者的聲音,能夠提煉出更加通用、普適的需求,進一步迭代出更加完善的功能,讓開源項目的社區變得更加有活力,發展更爲穩健。

第二,要保持英文化。社區是多元的,上面聚集了來自不同國家、地區乃至於文化背景的人,我們不希望社區是一個割裂的狀態,統一用英文溝通,是對社區多元化的一個最基本的保障,它不會讓一些想參與它的外國人,因爲語言壁壘最終無法參與。

第三,每一次問題提交都要做到可檢索。所有用戶提的問題都需要儘量留痕,如果某一用戶提了一個他自己沒想清楚的問題,或者拋了一個空指針之後又關掉了頁面,最好的方式就是提醒他將自己的問題完善或改到容易被檢索的狀態,因爲這些問題可能之後會有其他的人看到,能給他人帶來啓發,這是存在價值的。與此同時,也需要定期去做一些問題的梳理與標籤設置,讓社區能夠更好地瞭解項目當下的進展。

第四,需要有一個強大的測試系統。因爲參與開源的人比較多,溝通的工作量也非常大,如果提交者上傳的代碼沒有經過必要的前期測試就通過了,這導致的結果是,項目正確性的責任全部由後面代碼審覈的人負責,代碼實現的分工將變得不那麼合理。

第五,要避免重複造輪子。需要站到更高的維度去看問題,開源的生態還包括社區的交流共享,別人可能會用你的項目,你也需要適當地去採用別人的項目,避免做一些重複造輪子的事情。

“對於開源而言,最重要的不是代碼的實現,而是代碼背後的服務,及其對應的整個社區生態所蘊含的價值。”張亮表示。而在這一經驗的指導和超200名社區參與者的共同努力下,ApacheShardingSphere在2020年Linux基金會旗下的OpenSSF的開源項目關鍵評分中,取得了Java語言類第72名,國人主導的開源項目第1名的亮眼成績。

 

企業需要開放更多的開源崗位

在剛過去的2020年,伴隨着越來越多基於開源模式的企業在商業上獲得市場認可,國內出現了一批被投資者選中的開源項目,開源創業的春天,已然來臨。

然而對於本土開源而言,在開源越來越熱的當下,本土開發人員底層研發能力薄弱,工程能力大多停留於運用層的侷限性,也正在制約着本土開源生態的發展成型,這些問題並不是短期內能夠解決掉的。

在參加了無數場國際頂級的開源峯會之後,張亮最大的一個感觸是,國外參會的開發者在40歲到60歲之間的人員依然很多,但是國內的參會者卻普遍在30多歲之間。

張亮表示:

技術本身還是一個熟練工種,你在這個領域沉澱得越深了,累積的能力也便越強

在其看來,一個人在某一領域的思維變得非常活躍,而且經驗也很豐富的時候,往往是這個人在這個領域耕耘了超過十年以上的時候,但國內的工程師在整個時間段的時候,可能已經轉移到其他崗位上了。

未來本土開源生態的完善,仍有很長的路需要走。而針對這一現狀,張亮給出的建議是——大型企業在參與開源治理的同時,需要開放更多全職的開源崗位。

張亮表示:

大型科技公司其實是希望有自己開源方面輸出的需求的,這種輸出的目的,其實是希望尋求對於行業標準的影響,進一步佔領更多的話語權,贏得行業關注和口碑

在其看來,雖然大型企業參與開源本質上並不是100%奔着開源去的,但如果能讓這些企業內參與開源的人投入50%的時間去做開源,就已經很足夠了。

張亮表示:

一個開源項目如果全部是通過業餘時間去完成的話,那麼這個項目的發展在一定程度上是會很慢的

國內從來不缺優秀和聰明的開發者,但缺少的是能夠讓開發者去持續付出心血的環境,以及穩定的項目基石。

張亮表示:

當一個人的熱情被投入到一個不合時宜的地方時,也許第二天承載着這些熱情的項目就沒了,這將會很糟糕,投入的價值也不大

他希望能夠將ShardingSphere打造成一個能夠吸納開發者熱情的靶心,帶給開發者更多正向的回報,爲本土開源生態的建設貢獻一份自己的力量。

點擊此處【鏈接】,瀏覽ShardingSphere技術社區專欄號,查閱更多ShardingSphere技術解析與項目文檔。

推薦閱讀

 

歡迎點擊【京東科技】,瞭解開發者社區

更多精彩技術實踐與獨家乾貨解析

歡迎關注【京東科技開發者】公衆號

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章