Mozilla的Elixir的社会虚拟空间

2021-06-05 02:55:32

欢迎我们对使用Elixir生产中的公司的一系列案例研究。查看我们到目前为止发布的所有案例。

集线器是Mozilla的虚拟社会体验。您可以建立自己的私人空间,并与您的朋友,同事和社区分享。这个空间中的头像可以在3D社会环境中自由移动,观看视频,交换信息,与附近的其他人交谈。您所需要的只是浏览器和麦克风!

集线器是完全开放的来源,您可以通过集线器云托管您的基础架构。社区经理,教育工作者和活动组织者一直在使用集线器云来运行对其特定品牌和需求量的虚拟事件和在线活动。运行自己版本的集线器所需的只是一个点击 - 这可能会使集线器成为有史以来最部署的凤凰申请!

集线器团队在3.5年前的混合现实队伍中始于Mozilla。他们的主要目标是通过头像和混合现实探索在线社交互动的方式。

他们很快专注于建立他们的第一个概念证明,其中头像可以沟通,四处移动,加入不同的房间,一切都直接在浏览器中运行。这是从无处不在的虚拟现实艺术的最终偏离的重要偏离,因为迄今为止的入门经历是繁琐的,并且经常要求VR耳机形式的陡峭投资。

初始原型是成功,它推动了团队建立产品。然而,概念证明的所有沟通都是对等的,这限制了他们可以提供的功能和经验。因此,集线器团队知道他们需要一个有能力的后端技术来提供扇出通信并协调所有不同的化身在虚拟空间内交互。 John Shaughnessy,Mozilla的员工软件工程师,评论:“当你在同一个空间得到很多人时,无论是虚拟还是在现实世界中,都没有只有一个谈话。一旦你在一个房间里获得十或二十个不同的人,会议电话不起作用。在集线器中,人们通过四处移动时,人们通过移动即可转换多个同时对话。

随着这种大胆的愿景,他们评估了他们的整个堆栈。他们在前端使用JavaScript使用了三个,并为后端选择了Phoenix Web框架。 Greg Fodor当时是Mozilla的工程经理,解释了选择:“我们首先列出了我们必须实现的所有功能,从休息端点等琐碎的东西,更复杂的使用情况,例如聊天消息传递和跟踪头像在虚拟世界中。一旦我开始学习凤凰城,我看到所有这些功能已经存在!我们建造的应用程序必须管理大量与实时低延迟的联系,我们知道Erlang VM非常适合“。

集线器于2018年1月居住。枢纽的几乎所有东西都经过凤凰城。唯一的例外是WebRTC语音通道,由指定的语音服务器处理,最初用Janus和后来移植到MediaSoup。但是,Phoenix应用程序仍然管理语音服务器以及如何将连接分配给它们。

该部署由栖息地策划并在Amazon EC2上运行。栖息地提供包装和编排。当语音服务器加入栖息地环时,Phoenix服务会收到一条消息并开始为语音服务器分配声音。总的来说,他们在4个凤凰和4个语音服务器上运行。

生产中的Elixir经验非常顺利。 Dominick d'Aniello,Mozilla的员工软件工程师指出,他们讨论了一些改进的区域:“凤凰申请主要是作为代理的,所以我们避免解码和重复数据,除非我们真的需要。但有时我们必须在有效载荷上偷看,JSON不是最有效的格式。“他们还考虑依赖于Elixir过程和Erlang分布。 Dominick继续说:“当一个新的客户加入时,它需要询问所有其他客户在世界上的状态,他们拥有的是什么,以及他们关心的东西。一个选项是在群集中使用elixir进程来保存虚拟世界中的不同实体和对象的状态。

随着许多投资在线沟通的大公司,Mozilla团队看到了虚拟空间的可能性成为现有的社交平台内的壁挂花园。这导致集线器团队在集线器云上工作,使任务通过允许任何人使用单击运行自己的集线器版本来商用虚拟空间。

集线器云于2020年2月推出,它已被击中。纽约大学在集线器云实例上做了毕业典礼。 IEEE虚拟现实会议拥有包含更可访问和可持续的活动的集线器,谈话和海报会话全部发生在虚拟房间,而明尼苏达州双胞胎棒球队在平台之上推出了一个虚拟名人堂。

他们的云版本使用Amazon CloudFormation来实例化用户帐户内的集线器。这种方法对集线器团队带来了不同的挑战:“我们希望集线器云尽可能地实惠和直接。 Phoenix应用程序已经在这方面是一个巨大的帮助。我们还向亚马逊Lambda移动了一些功能,使它们成为可选的,如图像调整大小和视频转换“ - 详细信息John。

由于集线器也是开源,因此开发人员可以在他们选择或更改的任何平台中运行自己的集线器实例。这就是Log Greg Fodor最近在他宣布JEL时服用:“JEL是工作的视频游戏。这是一个MINECRAFT和Discord的混搭,一切都是3D。我的目标是激发新的方向和想法,让人们对VR感到兴奋“。

今天,集线器团队有10个贡献者,其中一半是开发人员。他们的工程团队是一般的,学习Elixir有机地发生:“你被你正在努力的功能的动机。如果它需要更改后端,您可以在团队的帮助下学习Elixir,然后做出贡献“。

总的来说,凤凰上的赌注是一个成功的赌注。 Greg Fodor亮点:“凤凰的最显着的好处是在使用解决方面的堆栈来解决各种各样的问题。曾经坐在凤凰上,有一个巨大的表面积我们的工程师可以触摸。他们提出的任何功能,他们都可以运行它。由于集线器是开放的来源,我们的贡献者也会有同样的经验。总体而言,Elixir和Phoenix减少了导致我们整个产品最大影响所需的努力“。

最近,他们甚至进一步倾向于生态系统,因为他们在苦艾酒的帮助下开始将集线器API暴露在GraphQL上。它们还迁移到Phoenix V1.5,并使用Phoenix LiveCasboard,为集线器云用户提供指标和仪器。