神器 TiDE 在手,一鍵快速上車 TiDB | TiDB Hackathon 2020 優秀項目分享

近日,由 TiDB 社區主辦,專屬於全球開發者與技術愛好者的頂級挑戰賽事——TiDB Hackathon 2020 比賽圓滿落幕。今年是 TiDB Hackathon 第四次舉辦,參賽隊伍規模創歷屆之最,共有 45 支來自全球各地的隊伍報名,首次實現全球聯動。經過 2 天時間的極限挑戰, 大賽湧現出不少令人激動的項目。爲了讓更多朋友瞭解這些參賽團隊背後的故事, 我們將開啓 TiDB Hackathon 2020 優秀項目分享系列,本篇文章將介紹 B.A.D 團隊賽前幕後的精彩故事。

社區開發者參與開發 TiDB 需要比較長的前期學習週期,其中除了複雜的編程語言外,另外一個最大的困難主要來自於項目本身的複雜度。作爲一個多語言、多運行時組件的分佈式項目,TiDB 的開發和調試門檻遠遠高於一些類似於移動端 App、Web 服務端、遊戲客戶端的常規軟件項目。

**B.A.D 團隊的項目 TiDE 是一個基如今最流行的代碼編輯器 Visual Studio Code 的 TiDB 插件,可以開發和本地/遠程調試 TiDB 集羣,讓開發者不需要搞清楚 TiDB 的內部機制也能方便地在本地啓動測試集羣和實時調試編寫,極大地提升了開發者開發和調試 TiDB 項目的體驗。**本項目在本次 TiDB Hackathon 2020 中一舉奪得了二等獎與 CTO 特別獎兩項殊榮。

項目背景:一切要從 CTO 的一個 idea 說起

大賽前一週,我司 CTO 黃東旭突然在羣裏說他有一個特厲害的 idea,這個想法起源於幾周前,東旭本來想給 TiDB 加點功能,但是 TiDB 的代碼太複雜,折騰了三天才把環境搭好,最後也沒把代碼寫成。所以他想做個 VSCode 插件,有點類似腳手架,當開發者想加一個功能時,可以一鍵幫他把模板代碼在 TiDB/TiKV/PD 組件中都直接生成出來,只需要自己往裏面填充邏輯代碼就行了。

團隊成員李逸龍從這個 idea 受到了啓發,他發現 TiDB/TiKV/PD 的研發同學在日常開發時,需要自己手動替換服務器上的二進制和修改組件配置,重啓後再手動去撈日誌看結果,過程非常繁瑣,同時在本地對各大組件同時進行 debug 單步調試也很複雜。他就想到能不能用 VSCode 插件把這些工作都自動化處理呢?類似 K8S 的 VSCode 插件,通過這個插件不用敲一行代碼就可以管理 K8S 集羣。於是研發工程師李逸龍、前端工程師黃寶靈和 K8S 專家吳葉磊三個人一拍即合,都覺得這個 idea 太好了,直擊痛點!

通過討論,三個人大致確定了項目方向,開發一個爲 TiDB 開發者打造的一站式 IDE,提升效率的神器!

項目設計:做一個造福所有 TiDB 開發者的項目太有成就感了

項目開發之初完全是原生態開發模式,大家一邊實現自己擅長和最想做的部分,一邊把想法記錄下來列爲 TODO。初步分工爲寶靈哥負責實現腳手架及集羣管理功能;阿磊負責調試功能的實現;小龍擔任隊長,負責產品及 K8S 部分功能的實現,同時他還是團隊的靈感擔當,不僅輸出項目靈感,還根據三個人的 GitHub 首字母將團隊取名爲 B.A.D,很霸氣的名字,全員好評。

經過幾天緊張且充實的發開,TiDE 終於初見雛形,它主要實現了以下幾個重要功能:

腳手架功能

一鍵爲 TiDB 生態中某個或某幾個組件添加一項新功能,目前已經擁有一鍵爲 TiDB Dashboard 添加一個 APP 的能力,添加之後用戶只需要修改默認實現就能快速將自己想要的功能添加到 TiDB 生態當中。

爲 TiDB Dashboard 添加一個新頁面並實時預覽

本地開發

TiDB 生態是由多個項目構成的,很多功能的開發調試需要橫跨多個項目,TiDE 能夠一鍵將工作目錄中各組件的代碼編譯打包並部署或更新到本地集羣中,同時提供查看日誌、拓撲管理、配置管理能力,讓本地開發絲般順滑。

從工作目錄中的代碼啓動一個本地集羣

遠程開發

TiDB 作爲分佈式系統,在分佈式環境下進行遠程開發也是很多場景下必不可少的能力。TiDE 提供了針對遠程集羣的一系列能力封裝,包括集羣啓停,修改配置,替換本地編譯的二進制到遠端節點,查看日誌,一鍵 SSH 到遠程節點等操作。

操作遠程集羣

管理遠程集羣配置

調試 TiDB 集羣

包括調試本地集羣和遠程集羣。同樣遵循“TiDB 的典型開發運行模式是集羣”這個思想,TiDE 能夠一鍵對集羣中所有組件啓動單步斷點調試,當然,調試單個組件或進程也能輕鬆搞定。

單步斷點調試本地集羣

「TiDE 確實好用,懂的都懂」

項目開發的過程運用了邊開發邊推廣策略,團隊成員也表示參賽意圖之一就是爲了推廣 TiDE,從而得到更多種子用戶的反饋,再進而優化功能,在這其中也發生了幾件意想不到的趣事。在 Hackathon 比賽現場,有一位友 team 的開發者遇到了 TiUP 的使用困難,在小龍的熱心幫助下,使用 TiDE 解決了 TiUP 部署的權限問題,意外當場收穫用戶一枚,這位開發者在試用 TiDE 後不禁發出了感嘆“TiDE 能提升我的開發效率,解放我的思路,確實好用,懂的都懂。

幾位成員還在項目答辯前將初版 Demo 給幾位同事小小的劇透了一下,沒想到把大家都震驚住了,直呼「這也太爽了吧!」,並且立即開始向團隊成員提需求“誒,這個重啓能不能支持一下只重啓單個實例或單個組件呀?”,“誒,bench 功能能不能支持一下呢?”嗯,很合理,可以有,加到 TODO 裏!看到大家的認可,B.A.D 的三位同學都表示非常開心,因爲他們看到自己的項目確實是有價值的,做一個造福所有 TiDB 開發者的項目真的太有成就感了!

項目意義:功在當代,利在千秋

功在當代,利在千秋」是黃東旭對 TiDE 的評價,尤其對於 TiDB 這樣一個擁有龐大並且活躍社區的開源項目來說,TiDE 的實現就是在爲整個社區添磚加瓦。它不僅能反映到某一個產品上,而是能反映到未來和 TiDB 相關的所有產品上,具有極大的社會價值。具體項目意義可總結爲以下兩點:

降低 TiDB 的開發和調試門檻,從此上車 TiDB 不再困難。 由於 TiDB 的代碼非常複雜,讓很多想學習或者想加入開源社區的小夥伴們望而卻步,但有了 TiDE 這個神器後,大幅度降低了大家開發 TiDB 的門檻,讓更多人能夠快速上手 TiDB,融入社區。同時,小龍也表示 TiDE 有望替代開源項目中傳統的文檔先行吸納成員的模式,傳統開源社區一般是在項目首頁放一些例子和文檔來讓人瞭解項目,而 TiDE 可以直接讓用戶快速上手操作,並且把文檔裏面死的內容變成交互式展現,迅速且直觀的讓用戶瞭解到 TiDB 的各個功能,從而產生興趣加入社區。

提高開發效率與用戶體驗,真正享受編程過程與結果。 有了 TiDE,我們再也不用把 90% 的時間花費在搭建環境上,而是讓開發者們迴歸初心,盡情享受寫代碼快樂與編程的結果。阿磊也認爲 TiDE 最大的意義就在於讓更多的人目光聚焦到提升開發者體驗上來。“在各類技術社區中,致力於提升開發者體驗的小組相較之下往往顯得不夠關鍵也不夠 sexy,甚至於我自己以前也有這樣的成見。但 TiDE 打動了我自己,用實際效果告訴我提升開發者體驗這件事空間極大並且能夠做得非常有意思——我想這種啓發是每一個使用過 TiDE 的人都能感受到的。”

未來方向:Just a Beginning

這屆 Hackathon 雖然已經結束了,但對於 TiDE 來說,纔剛剛是一個開始,TODO LIST 還很長,未來可以大致分爲以下幾個發展及優化方向:

  • 部署集羣功能:一鍵佈署用於開發測試的各種類型集羣

  • 機器管理:管理用於佈署集羣的物理機或虛擬機 、

  • TiUP 自動安裝:自動安裝和升級 TiUP

  • 優化 TiDB 在 K8S 上的開發體驗:一鍵更新本地代碼到 K8S 集羣中並進行調試,讓 K8S 上的開發流程如同本地一般簡單輕鬆

  • 聯動 UDF:與本次 Hackathon第一名的項目 WASM UDF功能結合,提供腳手架和調試功能,輕鬆開發 TiDB UDF,讓自定義 TiDB 功能變得輕而易舉

  • 進入 TiDB Incubator Program:一個好漢三個幫,如此好用的工具項目當然希望所有 TiDB 社區小夥伴參與進來,自己的痛點自己最清楚

本次 Hackathon 之旅 TiDE 以攬得二等獎以及 CTO 特別獎兩項大獎完美收官,在談及本次參與黑客馬拉松的感受時,三位成員也都表示收穫滿滿:

黃寶靈:“ 非常開心的一次 Hackathon,尤其是我們的項目得到了大家的認可,幫大家解決了痛點。開闊了眼界,感覺大家都太強了。我們能同時收穫兩個大獎,也是特別地驚喜。”

吳葉磊:“ 興奮、震撼和滿足。興奮於自己組的產品收到的認可與讚許,震撼於各種大膽又巧妙的 idea 和 Demo Show,滿足於收穫了兩天深刻的回憶與一羣新朋友(當然還有兩個大獎!)。”

李逸龍:“ 收穫了滿滿的 idea 和大家的熱情,真的是神仙打架。比賽中展現的技術深度和廣度都令人歎爲觀止,我覺得貴司不愧是 Hackathon Driven Company,這個傳統一定要延續下去,畢竟中文開發者社區中很少見到過這麼硬核的 Hackathon 比賽了。我們都非常享受比賽的過程,覺得與其說是比賽,更覺得是一個派對。同時也認識了非常多有趣的小夥伴,這就夠了。”

最後,https://github.com/dragonly/ticode,目前已經在 GitHub 上收穫了 46 顆星,在 VSCode 應用商店也有近 40 的下載量。

TiDE 纔剛剛開始,未來還很長,讓我們一起期待

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