Tubi 是受益于 Elixir 这门函数式编程语言最大的公司之一,Tubi 也在这门语言的使用上积累着珍贵且大量的生产实践经验。
比如,Tubi 使用 Elixir / OTP 构建了多媒体 E2E 处理平台,Tubi 在提供视频内容的标题列表、内容元数据时结合使用了 Elixir 和 gRPC 1,在实践中修复了一个潜藏在 Elixir 代码库里 7 年的性能问题,将 API 的 P99 从 500 毫秒减少到了 10 毫秒。
自 2019 年中旬开始,秉承回馈与开放的心态,Tubi 赞助并组织线上线下 Elixir Meetup,迄今已完成七期。
来自不同公司的 Elixir 开发者,带来了包括 Elixir 编程入门、Elixir 函数式编程语言的研究及生产实践方面的 24 个主题分享,参与观众达近万人次。
第八期 Elixir Meetup 线下活动开始报名了!
2023/5/27 周六|14:00-17:30|北京望京浦项中心
分享【一】用 Elixir 开发 HLS 直播后端服务
在本次分享中,Tubi 后端工程师 Horvo 将介绍 Elixir 在 Tubi 直播业务后端的应用,并分享 HLS manifest 文件中的 URL 保护,以及如何使用 AES-128 对 HLS 媒体文件进行加密。欢迎对 Tubi 直播业务感兴趣、想了解 Elixir 生产实践的同学来听!
本话题来自 Tubi 后端工程师 Horvo。Horvo 从事 Elixir 开发工作已有五年。之前从 Ruby on Rails 开始入门 Web 开发,后续因为团队更换技术栈到 Elixir,开始写 Elixir。谈起和 Elixir 的故事,Horvo 分享说“曾经误打误撞在 Elixir Conf 和 Jose Valim 同坐一桌,心中感叹“本人比电视上瘦啊”;也曾在 Lonestar Elixir 会场的洗手间,与 Chris McCord 擦肩而过 ”。
分享【二】Lexical —— 下一代 Elixir 语言服务器
语言服务器 (LS) 是一个人人都用的工具,编程的乐趣往往与其息息相关。然而,多年来,Elixir 的 LS 贡献者屈指可数,甚至一度陷入单人贡献者的困境。希望通过本次分享让更多人了解 LS,并清楚地知道如何为 LS 做出贡献。如果能激发听众创造适合自己需求的 LS 功能,那更为理想。
本话题来自热衷于 Elixir 和函数式编程语言的 Scott。自 2019 年起,Scott 一直在使用 Elixir 做后端开发,曾用其开发过教育平台、写作编辑器和内部支付平台等。此外,也用 Elixir 写过在短短几天内完成价值数百亿美金转账的安全可靠的内部服务工具。
分享【三】通过 eBPF 查看服务依赖
这一话题由 Elixir Meetup 的老朋友杨淼带来。他所服务的公司有着多种语言的项目,如 Elixir、Ruby、Go;在维护这些项目的过程中,需要了解服务的网络依赖,但由于技术栈不统一,类似 Distributed Tracing 这样的常用方案并不能很好的满足需求。
因此,在生产实践中尝试使用了 eBPF 分析网络依赖。
本话题来自后端开发工程师杨淼。杨淼曾使用 Erlang/Elixir 开发长连接服务,并在往期 Elixir Meetup 中分享过 Erlang Emulator 实现分析。
报名 Elixir Meetup
2023/5/27 周六|14:00-17:30|北京望京浦项中心
方式【一】线下参会
扫码报名,选择“现场票”,现场票数量有限,请确认能到再报名。
报名后添加微信 15600819309,备注 Elixir Meetup 加入活动交流群,届时会统一发送活动地址。
方式【二】预约直播
方式【三】提出技术难题,共同讨论
如果你有技术难题,欢迎写邮件给 huixiaoliu@tubi.tv,描述在 Elixir 相关项目上你遇到的技术挑战,请尽可能包含足够多可公开的背景信息。
本次 Meetup 中,大家将就你提出的技术难题,一起讨论,做出贡献!
Tubi Elixir 工程师热招中
Tubi 正在热招高级后端工程师
高级后端工程师 - 多媒体 & 内容|Elixir 方向
TMPP 团队主要负责 Tubi 多媒体内容的处理,开发并且维护多个 pipeline,包括长视频的转码处理、字幕、图片、metadata 等内容的处理,并且为客户端提供可使用的多媒体资源。
在这个角色中,你将与 Video Team、Content Operation Team 等多个团队合作,搭建并维护多个分布式系统,完成对原始媒体内容的处理。
高级后端工程师 - CCS(平台)| Elixir 方向
Tubi CCS 平台团队作为众多后端技术的入口,负责创建供内部和外部合作伙伴使用的后端 API,维护各种服务,例如帐户管理、内容管理、图片处理和存储、用户观看历史记录。
在这个角色中,你将负责改进我们的日常(Elixir)开发工具、共享库和组件(如数据库),以更好地支持后端系统的开发。我们团队的目标不仅是 为我们的客户,合作伙伴和成长团队提供功能,而且要为我们所做的一切工作中的可靠性负责。