翻译自
https://medium.com/netflix-techblog/lumen-custom-self-service-dashboarding-for-netflix-8c56b541548c
Netflix产生大量数据。我们获得有用见解的方法之一是通过在仪表板中可视化数据,从而使我们能够快速理解大量信息。当出现操作问题时,这一点尤其重要,因为我们的工程师需要能够快速诊断问题区域并进行纠正。
但是,操作问题只是Netflix仪表板的一种潜在用例。我们还使用仪表板来跟踪和绘制关键业务指标,比较实验结果,监控实时数据,甚至找出午餐菜单上是否包含汉堡。
简而言之,仪表板对Netflix很重要,但并非只有任何仪表板平台都对我们有效。
尤其是,适用于Netflix的任何仪表板平台都必须满足以下约束:
我们的平台需要高度灵活,动态且高性能,同时为用户提供大量控制权。八年前,当我们首次为我们的运营指标投资一个仪表板平台时,没有一种能够满足上述约束同时又对Netflix保持成本效益的合理解决方案。因此,我们建立了自己的。它被称为Lumen
Lumen是一个仪表板平台,允许用户定义在运行时在浏览器中解析的JSON配置文件,以生成自定义仪表板。
从较高的角度看,Lumen的体系结构似乎相对简单。从后端存储加载配置,然后将其解析为内部数据结构。然后将该数据结构传递到渲染器,该渲染器为仪表板生成可视化效果和UI控件。然后,当用户与呈现的UI控件之一进行交互时,该过程会重复,并将新值应用于相同的配置。
这个简单的架构所隐藏的是流明配置可能非常复杂。用户可以配置其仪表板的大多数方面,包括显示的可视化效果,使用了哪些数据源以及要显示哪些UI控件,甚至可以编写可在运行时根据可变条件重新配置的配置。
通过JSON驱动,我们的用户可以轻松创建和编辑自己的仪表板,同时还可以与其他可以生成JSON的工具很好地集成。尽管这些配置可能很复杂,但由于我们改进了流明并消除了用户所需的常见模式,因此,我们确定了一些核心概念,可以通过组合实现大多数其他功能和模式。
因此,现在,Lumen中的每个仪表板主要由以下概念组成:
这四个概念的组合使我们的用户可以灵活地使用所需的任何数据自行构建动态和反应式仪表板。这些概念对于呈现的每个可视化“单元”也很好地融合在一起,以使它们在需要时可在多个仪表板上重复使用。
我们的用户可以从用户界面中精确控制他们希望动态和可控制的字段和值。这使一些用户可以针对非常特定的用例构建仪表板,而另一些用户可以构建针对非常广泛和探索性用例的仪表板。
虽然Lumen的体系结构为我们的用户提供了灵活而动态的平台,但默认情况下并不一定会为自己带来敏捷而响应迅速的用户体验。例如,Lumen几乎不了解给定仪表板的数据源将如何运行。他们会发送大型有效载荷吗?他们会需要大量的客户端数据处理吗?他们会有合理的延迟吗?
为了满足我们的业务用例的需求并提供令人愉悦的用户体验,我们很快意识到我们无法像通常在Web应用程序中那样进行数据获取和解析。
大多数Web应用程序都在浏览器的主要JavaScript线程上获取和解析数据。当您处理大量数据或复杂的用户逻辑时,这可能会在浏览器中导致“混乱”,这在您的应用开始滞后甚至在主线程繁忙时冻结时尤为明显。
为了避免这一问题和相关问题,流明的大多数数据操作都在 网络工作者。当仪表板加载其所有数据时,这使Lumen可以使主线程保持空闲状态,以便用户进行交互,例如滚动和与单个图表交互。
自从Lumen最初构想成为一个功能强大,灵活而又动态的平台,满足Netflix各种仪表板需求后,Lumen有了很大的发展。每周大约有1,500个唯一用户通过5,000个唯一的仪表板接收超过150,000次观看。这些视图每天从十几个不同的后端数据源中生成超过45万张图表。
该平台的灵活性极大地推动了Lumen在内部的采用,我们不断面对我们的用户,为该平台找到新的有趣的用例,包括有趣的“ hacks”,例如构建午餐食品仪表板。
随着Netflix的持续增长,我们预计对强大的仪表板平台的需求将继续增长,并为继续改进Lumen感到兴奋。我们认为流明目前有三个主要方面需要改进。
首先是减少不再适合Lumen现在所基于的核心概念的旧功能。与许多长期存在的项目一样,过去添加的某些功能不再有意义。一些解决方案只针对有限的用例,而另一些则被更通用的解决方案所取代,这些解决方案为用户提供了更多的控制权。
第二个是通过使用户更容易创建和管理仪表板来提高流明的可用性。当前,这意味着改进我们为用户提供的配置编辑工具。将来,这将意味着为用户提供一个强大的WYSIWYG风格的界面,该界面可以减轻认知负担,同时更容易发现Lumen提供的强大功能。
最后,我们要继续投资流明的可扩展性。尽管当前的体系结构可以轻松带来自己的数据源,但是创建自定义可视化效果或添加对与其他工具集成的一流支持都需要更改Lumen的源代码。我们计划使系统更加可插拔,以使用户能够扩展平台而无需维护人员的直接支持。
我们与Lumen的最终目标是应对众多用户的所有挑战,同时为他们提供体验,使他们能够专注于仪表板中的关键信息和价值,而不是所使用的工具。流明的未来是光明的!
Lumen由Netflix的Trent Willis,John Tregoning和Matthew Johnson开发和维护。 我们一直在寻找新的想法和改进方法。因此,如果您有兴趣在这个领域中贡献或只是谈论想法,请访问LinkedIn或Twitter!
Lumen: Custom, Self-Service Dashboarding For Netflix-By Trent Willis
原文:https://www.cnblogs.com/CherryTab/p/12098347.html