【活动回顾】性能突破、REST API 构建新方法与用户授权解决之道

上周日,Tubi 高级研发副总裁陈天在 Tubi 北京办公室,与 60+ 位来自各个领域的资深工程师及直播间的 5500+ 伙伴,深入交流了三大话题:

-   当我们谈论性能时,我们在谈论什么
-   使用 AWS Smithy 优雅地构建 REST API
-   读论文学习解决方案: 用 Zanzibar 处理用户授权的难题

现场参与的同学普遍表示,这一场技术活动信息量实在是大,话题实在是重要,需要再回头多复习几遍。于是,我们为你准备了:

-   讲稿:点击「此处」下载
-   直播回放:点击「此处」观看
-   学霸观众的笔记:请继续阅读本文

当我们谈论性能时,我们在谈论什么

陈天老师以“性能”作为这场 Meetup 的开篇话题,并用“道”来贯穿性能的方方面面,是一场非常独特的思维盛宴。

首先,他收集观众对理想性能的认识,并引用了他喜欢的 Joe Armstrong 的名言“Make it work, make it beautiful, make it fast”,以此点明理想的性能应该是什么样子的。“如果它看起来很 ugly,它的表现就不可能太好。”

流畅的性能源于简洁美观的代码设计。如果基础薄弱、经验不足、缺乏思考、未经计算,就会产生复杂的代码堆砌,导致运维成本高昂、性能难以维系。

接着,陈天老师转向讨论“影响性能的核心要素”,以及构建高性能系统的方法。但这些都不是全部,一个优秀的程序员还需要具备广泛的见识,写过足够多的代码,有勤于思考的习惯和精于计算的大脑。成为一个好的程序员,才能构建具有优良性能的系统。

最后,他带领我们现场做了一项思维训练 —— “如何设计一个文档搜索系统”;由道入术,他在实践中告诉大家:只有亲自动手实验,才能找到最优解,解开性能瓶颈。

陈天老师从“人”的角度出发,以高屋建瓴的视角分享了他关于“性能、代码和写代码的人”的哲学思考,对初入行的新手和有着十多年工作经验的高手来说,都有新的启示。

—— 现场观众 贝拉

使用 AWS Smithy 优雅地构建 REST API

上周日,我非常开心在北京参加了 Tubi 的技术活动,并有幸见到了陈天老师。这次技术活动涵盖了三个话题,分别是软件性能、API 建模和用户授权。对于每个话题,陈天老师都是首先从方法论的角度出发,在整体上给出方向,然后在实际场景中对比不同的解决方案,最后通过 Demo 来进行具体的演示。其中,我最感兴趣的话题是使用 Smithy 优雅地构建 REST API。

以前,我没有很明确地理解“什么是优雅,如何建模才谈得上优雅”。我只是知道如 Open API 等 API 建设工具,但它们本质上并非专为数据建模而设计,很容易沦为无限打补丁的百家衣。听完陈天老师的这一分享后,我对建模有了新的理解。

相比 Open API 的特定语言和框架,Smithy 编程语言的选择范围更加宽泛,我们可以使用自己更为熟悉的语言来实现 API 的客户端和服务端。同时,Smithy 提供更丰富的的类型系统和结构来帮助我们清晰地建立 API 模型。在模块化和重用性上,Open API 大都是使用单个文件,而 Smithy 支持模块化 API 分割来实现不同项目重用的目的,因此更易于管理和维护 API。自此,我对“优雅地构建 API”有了更清晰的认识 —— 优雅的核心是高规范化和高可重用性,这也暗合了在第一场分享中陈天老师所阐述的理想的性能是什么样子的 —— just make it beautiful。

Smithy 通过强类型系统定义 API 规范,在编译过程中就可以发现很多问题,这在某种程度上提高了 API 的稳定性。同时,Smithy 支持多语种的编程,更方便生成各种语言的 SDK 和代码库;使用 JSON Schema 描述 API 规范,也使得文档更容易理解和维护,降低后续成本。

陈天老师还举例说明了 AWS 的数百个服务和主流客户端都是使用 Smithy 构建,从实践角度论证了 Smithy 的可靠性和稳定性。最后,陈天老师用 swagger UI 生成了一个简单交互的 Demo,中间出现了一点小插曲,但最后成功解决了问题,大家都非常开心,再一次在现场感受到了解决问题的成就和喜悦。

非常感谢陈天老师的分享,我从中收获了许多。无论是方法论层面的眼界高度,或是解决问题的思考逻辑、分享知识的严谨程度,还是他所展现的对技术的执着精神和谦和的态度,都让我深受鼓舞。

—— 现场观众 涵

读论文学习解决方案: 用 Zanzibar 处理用户授权的难题

Meetup 的主讲人 —— Tubi 高级研发副总裁陈天老师给人很亲切的感觉,三个多小时的分享,既有深入的哲学讨论,也有直接的代码实践。期间还穿插了问答互动和抽奖环节,让人非常有参与感。

在这一场分享中,陈天老师带领现场程序员一同研究了一篇经典论文,分享内容从性能的形而上抽象理论,也转换到了用 Zanzibar 解决实际具体的问题。

他一开始就清晰地指出身份认证和身份授权是两个不同的概念,并且在思考权限问题时,必须首先明确权限的实现目标。参考行业的最佳实践,采用精密设计的架构,可以避免临时编写的代码带来的诸多问题。他以“Group Revoke”为例解释了基于角色的方案为何无法逃脱“即使代码写得再漂亮,后期也有可能要增加大量 if else”的困境。

他演示了 Zanzibar 如何将所有的关系梳理为有向无环的图,使复杂的权限问题清晰可见。他还讨论了在 Zanzibar 中一个有趣的问题 —— New Enemy。他以自己亲手做过的实验和由此而生的猜想为例,深入解释和补充了论文中未详细阐述的部分。此外,除了传统的写入处理 / 回写方法,Zookie 的引入让系统能每 30s 询问一次权限,同时还可以引入新的变元来解决相关问题。

陈天推荐了和 Zanzibar 相近的一个 Github 实现:SpiceDB,并亲自演示了他基于 SpiceDB 方法做的实验,为现场的程序员们验证了 Zanzibar 论文中的假设。陈天的实验直观地证明了使用 Zanzibar 不需要复杂的操作,只需考虑如何将 SpiceDB 和应用集成。他鼓励大家努力寻找全局最优解,不要陷入局部最优,迷失大方向,偏离了实际目标。

—— 现场观众 贝拉

观众反馈

除了富有层次的三个分享话题,现场观众对活动体验和流程安排也纷纷给出了满分好评:

“Tubi 的办公环境宽敞明亮,装修简单大方,非常现代,这充分体现了 Tubi 作为一家既富有创新、领先且富有活力的科技公司的特点。整体上,办公环境给人的感觉既放松又舒适。”

“Tubi Meetup 组织得井井有条,活动开始前就已经收到了详细的入场指导;活动当天下午,Tubi 同事在一楼入口处迎接大家,感觉很温暖;当我们走进 Tubi 办公室,更是收到了精心准备的 Tubi 小礼物,体验感很好。”

“感觉这次活动准备很充分,不仅分享内容涵盖了对于软件工程师来说最重要的几个方面,现场还有好喝的,对我来说是一个充实的周末。”

看到现场观众热烈的讨论氛围、四处拍照留念的场景、收到抽奖礼物的惊喜表情,我们更加坚定了自 2019 年以来始终坚守的回馈与开放精神,希望能继续投入到线上线下函数式编程 Meetup 的赞助和组织中。

关注和加入 Tubi

欢迎关注🌟比图科技公众号,了解科技行业动态,获取近期活动信息。也欢迎在后台留言,申请加入 Meetup 交流群!

Tubi Data Team 目前正在寻找一位大数据平台开发 Lead,坐标北京,他 / 她将领导数据开发团队,创建高质量、可扩展的流数据管道,与所有用户建立联系;将在开放创新的环境中与机器学习团队、产品经理、DevOps 团队和数据科学家合作,推动用户增长;对系统架构设计全面负责,解决性能、可扩展性、可重用性和灵活性等问题;并倡导工程最佳实践,培养与保持团队内的工程师文化;负责技术招聘和指导团队成员的职业发展,建立一支高效的开发团队。

欢迎加入!

  • 14
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值