ConfigCat的Elixir SDK
作者:Randy Coulman / 用例,开发者
2021年5月18日
导航到
这是原发表在The New Stack 上,2021年5月3日的文章的重发。
SaaS应用程序的伟大之处在于,平台中的用户可以自动访问任何可用的软件更新。然而,拥有一个测试计划需要单独的环境,这可能会给用户和开发团队带来潜在的挑战。
在这种情况下,拥有一个可以控制功能和标记某些用户的工具很重要,因为有时功能对于所有用户来说太早或不相关。因此,去年,我们在InfluxData开始使用ConfigCat来完成这项工作。
什么是ConfigCat?
ConfigCat 是一个用于功能标志和配置管理的托管服务。它允许您将功能发布与代码部署解耦。ConfigCat可以用作
- 使用ConfigCat仪表板在代码部署后开启/关闭功能。
- 基于地区、电子邮件、订阅或其他任何自定义用户属性来定位用户群体。
去年,我们开始在InfluxDB Cloud中使用ConfigCat在整个平台上共享功能标志。在众多功能中,ConfigCat允许我们全局开启或关闭功能,或将它们开启给特定的用户或用户组。我们甚至可以为一部分用户开启功能。
为了便于与各种应用程序集成,ConfigCat为多种不同的语言提供了SDK。不幸的是,对于我们电商团队来说,Elixir并不是其中之一,并且不在即将推出的路线图中。
ConfigCat在功能标志方面有一个有趣的方法。它提供了一个用于创建和管理功能标志和目标规则的Web应用程序,但实际工作是在各种SDK中完成的。SDK定期下载一个JSON有效负载(配置),它描述了功能标志和目标规则,然后使用缓存的配置来评估功能标志。这提供了一些好处
- 确定功能标志的值: 无需等待HTTP往返
- 不依赖于不可靠的网络通信: 每个功能标志评估都更有效的通信
- 网络流量大大减少:应用程序只需在需要时或每隔特定时间获取更新的配置
- 敏感用户信息保持本地化:可能敏感的用户信息不会通过网络传输;它保持在您的应用程序本地
- 所需的服务器基础设施大大减少:ConfigCat服务使用较少的服务器基础设施,从而降低客户成本
缺点是构建新语言的SDK需要更多的工作。ConfigCat的SDK都是开源的,因此我们能够审查其中的一些,看看编写新SDK可能涉及哪些内容。最终,我们决定继续前进。
在InfluxData使用ConfigCat
我们首先在我们的应用程序内部构建了ConfigCat SDK,并计划稍后将其提取出来并开源。这使得迭代并确保它对我们有效变得更容易。我们尽量使代码尽可能地独立于我们的其他应用程序。一旦它运行正常,我们就开始在生产中使用它。不幸的是,其他优先事项占据了上风,我们没有时间提取SDK,使其可供他人使用。
随着十月的临近,我开始考虑今年想为Hacktoberfest做什么。我决定提取我们的ConfigCat SDK,开源并发布到Elixir的hex.pm软件包注册库。
我开始时,注意到ConfigCat有一个新的Elixir SDK的GitHub仓库。我很快意识到那里还没有代码,所以我打开了一个问题,询问我们是否可以帮助。
另一家公司Drover也对ConfigCat的Elixir SDK感兴趣,并愿意做出贡献。经过一些简短的讨论,我们决定以我们的初始ConfigCat SDK作为起点。在Lajos Sz?ke和ConfigCat团队的反馈下,Drover的Igor Escobar和我花了接下来的几周时间对项目进行迭代。我们添加了我们在InfluxData中尚未需要的功能,重构以使SDK与其他语言SDK保持一致,以便于未来的维护,支持了我们最初编写客户端时不存在的新设置和选项,并添加了Elixir社区期望的文档。
之后,Lajos这样评价这项工作
“这是ConfigCat的第一个完全由社区驱动的SDK开发。看到Igor [来自Drover] 开始讨论开发Elixir SDK后,Randy [来自InfluxData] 通过他的‘我们能帮忙吗?’GitHub问题加入了对话,真是太棒了。不仅仅是一个,而是两个我们的客户都想帮助我们开发这个SDK。开发阶段是卓越的。看到三个完全不同的公司能够为伟大的目标联合起来,真是太棒了。”
一旦我们所有人都对结果感到满意,我们就将软件包发布到hex.pm,现在任何人都可以使用它了!