在生产中将 Hibernate Search 与 Elasticsearch 版本 alpha 3 结合使用有哪些危险?

What are the dangers of using Hibernate Search with Elasticsearch version alpha 3 in production?

我正在开发电子商务 application.I 我正在使用 Spring 基于 MVC 4 注释的配置和 hibernate 并且 MySQL.I 需要集成搜索引擎所以我决定使用 hibernate elastic search.我想知道在生产环境中使用 Hibernate search alpha 3 是否会对我的电子商务 Web 应用程序造成任何威胁?如果 alpha 版本是一种威胁,那么对我来说有什么替代解决方案?

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

当我们发布任何东西时,我们认为 好的代码并且我们认为我们实现的功能是可靠的。您可能会认为这类似于您为自己的项目编写任何代码并考虑 "done, this will do the job nicely".

但是,尽管我们为编写出色代码的目标感到自豪,但我们也是人,有时我们也会犯错。

我们正在各种环境和 OS 组合中进行测试,任何拉取请求都由另一个提交者进行同行评审,并开放供任何人审查(都是 public on github)所以我会总体来说质量还是挺高的。

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

环境

虽然我们测试了 OS、JDK、数据库、硬件类型(小型嵌入式到超高端服务器)的多种组合,但我们可以测试的组合是有限的:Red Hat 慷慨地赞助了我们,但预算有限不是无限的。

当您全部下载 Alpha/Beta 并在您的环境中对其进行测试时,您可能会遇到一些我们不知道的极端情况。 帮自己一个忙,让您的团队定期测试我们的预览构建在对您来说很重要的环境上:如果它失败了并且您可以报告它,我们将确保它适用于最终版本。

有几个人帮忙做这件事,所以总决赛的报道会好得多。但是请考虑在您自己的环境中对此进行测试,以便满足您的特定要求。

因此,当您在生产环境中推出 Alpha 版时,它可能仍然存在与我们尚不了解的某些环境相关的问题。不过,您可以查看我们的问题跟踪器,看看其他志愿者报告的任何问题是否会打扰您:如果没有报告任何问题,变化是下一个版本不会比 Alpha "more reliable",但又是一样的.

测试覆盖率

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

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

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

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

当然,如果您尝试过并且效果很好 - 正如我们所期望的 - 那么您不妨将其投入生产,只要您了解以下关于区分 Alpha 版和最终版的要点。

Alpha 版和 Beta 版有什么不同?

通常是关于功能覆盖。

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

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

Beta 版本将包含所有关于您在测试 Alpha 版本时告诉我们的问题的修复程序。因此,它 "just work" 在您的环境中出现的可能性更高。

Beta 与候选版本或最终版本有何不同?

publishing the Beta1 release 之后,我们可能还有一些悬而未决的工作要做,但我们希望 API 的新功能不会再改变。除非有人有重大且合理的担忧。

因此,我们希望更多的人乐于测试 Beta,当我们收到像 "It's working great!" 这样的足够反馈时(我们很高兴听到这样的消息,请告诉我们!)然后我们会打电话已经有足够多的人对其进行了测试,我们将其称为最终版本 - 可能会发布候选版本,为人们提供最后一次尝试它的机会。

此时告诉我们某些 API 令人困惑、您建议使用不同名称的方法等可能为时已晚。因此请确保尽早尝试对您的项目实用。

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

生产准备就绪:我认为 Alpha 版已经准备就绪,就像您编写自己的集成一样;只需确保像测试您自己团队的代码一样对其进行测试,并详细研究发行说明以同样了解已知的局限性。

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