近日,由 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 才刚刚开始,将来还很长,让咱们一起期待