在生产中使用Hibernate Search和Elasticsearch alpha 3版本有什么危险



我正在开发一个电子商务应用程序。我在hibernate和MySQL中使用了基于Spring MVC 4注释的配置。我需要集成一个搜索引擎,所以我决定使用hibernate弹性搜索我需要知道在生产环境中使用Hibernate搜索alpha 3是否会对我的电子商务web应用程序构成任何威胁?如果阿尔法版本是一个威胁,那么对我来说,有什么替代方案

代表Hibernate搜索团队回答(我是项目负责人)。

当我们发布任何东西时,我们认为是好的代码,我们认为我们实现的功能是可靠的。你可能会认为这类似于你为自己的项目编写任何代码,并认为"完成了,这会很好地完成工作"。

但是,尽管我们为自己编写优秀代码的目标感到自豪,但我们是人,有时我们错了。

我们正在各种环境和操作系统组合中进行测试,任何拉取请求都会经过另一个提交人的同行评审,并接受任何人的审查(这在github上都是公开的),所以我想说质量通常都很高。

使用任何非最终版本的风险是什么

环境

虽然我们在操作系统、JDK、数据库、硬件类型(小型嵌入式到非常高端的服务器)的许多组合中进行测试,但我们可以测试的组合是有限的:Red Hat善意地赞助我们,但预算并非无限。

当你们下载一个Alpha/Beta并在自己的环境中进行测试时,你们可能会发现一些我们不知道的角落案例。帮你自己一个忙,让你的团队定期测试我们的预览构建在对你来说很重要的环境上:如果它失败了,你可以报告它,我们将确保它适用于最终版本。

有几个人通过这样做来提供帮助,所以决赛的报道会更好。但是,请考虑在您自己的环境中进行测试,以便满足您的特定需求。

因此,当你在生产中推动Alpha时,它可能仍然存在与一些我们还不知道的环境有关的问题。不过,你可以查看我们的问题跟踪器,看看其他志愿者报告的任何问题是否会困扰你:如果没有报告任何问题,变化是下一个版本不会比Alpha"更可靠",而是再次相同。

测试覆盖率

我们开发了各种单元测试、集成测试和性能测试,以涵盖新功能并防止倒退。

其他人可能会尝试以我们没有预料到的方式使用新功能,或者只是在我们没有在测试中涵盖的字段和类型组合上。

当您下载我们的预览并使用它来解决您的需求时,可能会发现我们没有涵盖的问题。确保最终版本适合您的需求的最佳方法是尽早试用,并让我们知道哪些地方还不好。

如果您向我们发送一个补丁,其中添加了一个单元测试来覆盖您的用例,您可以获得非常高的投资回报:我们将在代码库中包含该测试,以便持续集成将确保您的需求也将被未来的版本所覆盖。

当然,如果你试过了,而且效果很好——正如我们所期望的那样——那么你也可以把它投入生产,只要你了解阿尔法和决赛的区别。

那么Alpha和Beta版本有什么不同呢

一般来说,这是关于功能覆盖。

对于Beta版本,我们通常要求它"功能完整":要实现我们认为的所有功能,您需要从新功能中受益。

这种情况下的一个例子可能是5.6的Alpha版本——支持Elasticsearch的第一个版本——没有重建索引的功能。出于各种实际原因,我认为拥有这个选项是必不可少的,但如果你的特定用例不需要它(你可能有自己的策略?),那么缺乏这样的功能可能不会困扰你。

Beta版本将包含您在测试Alpha版本时告诉我们的任何问题修复。因此,它对你的环境"起作用"的可能性甚至更高。

测试版和候选版本或最终版本有什么不同

发布Beta1版本后,我们可能还有一些悬而未决的工作要做,但我们预计新功能的API不会再改变。除非某人有重大且合理的担忧。

因此,我们希望更多的人乐于测试Beta版,当我们收到足够多的反馈,比如"它运行得很好!">

在这一点上,告诉我们一些API是令人困惑的,你会建议一个方法以不同的方式命名,等等,可能已经太晚了。所以一定要尽早在你的项目中试用它。

我希望这有助于为您的特定用例做出明智的选择。

准备生产而言:我认为Alpha已经准备好编写自己的集成;只要确保你像测试自己团队的代码一样测试它,并详细研究发行说明,以同样意识到已知的局限性。

这在很大程度上取决于你如何处理它的潜在问题:我不建议在任务关键型系统上使用它,但有些人最终会获得更好的集成,因为他们可以在与生产环境非常相似的环境中测试早期版本,或者他们可以处理已经将其生产的风险。

相关内容

最新更新