在生产中使用Hlasticnate Search与Elasticsearch版本alpha 3有什么危险?

时间:2016-05-20 05:49:29

标签: java spring hibernate elasticsearch hibernate-search

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

1 个答案:

答案 0 :(得分:2)

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

当我们发布任何内容时,我们认为 好的代码,我们认为我们实现的功能是可靠的。您可能会认为它类似于为您自己的项目编写任何代码并考虑某些事情"完成后,这将很好地完成工作"。

但是,尽管我们为编写出色的代码而感到自豪,但我们是人类,有时候我们会出错。

我们在各种环境和操作系统组合中进行测试,任何拉取请求都由另一个提交者进行同行评审,并且可以从任何人(全部public on github)开始审查,所以我会说质量一般都很高。

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

<强>环境

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

当您下载Alpha / Beta并在您的环境中进行测试时,您可能会遇到一些我们不了解的问题。 帮自己一个忙,让你的团队定期测试我们对你很重要的环境的预览版本:如果它失败并且你可以报告它,我们将确保它适用于最终版本。

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

因此,当您在生产中推动Alpha时,它可能仍然存在与我们尚未了解的某些环境相关的问题。您可以查看我们的问题跟踪器,看看是否有任何其他志愿者报告的问题可能会打扰您:如果没有报告任何问题,则更改是下一个版本不会更加可靠&#34;比阿尔法还要一样。

测试覆盖率

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

其他人可能会尝试以我们没有预料到的方式使用新功能,或仅仅使用我们未对您的测试进行覆盖的字段和类型组合。

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

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

当然,如果你尝试过并且它的工作正常 - 正如我们所期望的那样 - 那么你也可以把它投入生产,只要你理解了Alpha与决赛的不同之处。

那么Alpha版和Beta版之间有什么不同?

一般来说,它与功能覆盖有关。

对于Beta版本,我们通常要求它完成功能#34;:要实现我们认为所需的所有内容,您需要从新功能中受益。< / p>

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

Beta版将包含有关您在测试Alpha版本时告知我们的所有问题的修复程序。所以它有可能只是工作&#34;你的环境甚至更高。

Beta和候选人发布或决赛之间有什么不同?

publishing the Beta1 release之后,我们可能还有一些待完成的工作要做,但我们希望新功能的API不再发生变化。除非有人有重大而合理的关注。

所以我们希望有更多的人乐意测试一个测试版,当我们收到足够的反馈时,例如&#34;它的工作效果很好!&#34; (我们很乐意听到这个消息,请告诉我们!)然后我们打电话给有足够的人测试它,我们称之为最终版本 - 可能会有一个候选版本给人们最后的机会尝试它。

此时可能为时已晚,告诉我们某些API令人困惑,您建议使用不同的方法命名等等。所以请务必尽早尝试适用于您的项目。

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

准备生产而言:我认为Alpha就像编写自己的集成一样准备好了;只需确保按照您自己的团队代码进行测试,并详细研究发布说明,以便同时了解已知的限制。

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