ConfigCat 的 Elixir SDK
作者:Randy Coulman / 用例, 开发者
2021 年 5 月 18 日
导航至
这是最初发布在 The New Stack 上,2021 年 5 月 3 日的文章的重新发布。
SaaS 应用程序的优点之一是平台中的用户可以自动访问任何可用的软件更新。然而,拥有一个 beta 计划需要一个单独的环境,这给用户和开发团队带来了潜在的挑战。
在这种情况下,拥有一个可以控制功能和标记某些用户的工具非常重要,因为有时某些功能为时尚早或与所有用户无关。这就是为什么去年我们在 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,现在任何人都可以使用它了!