Java中的微服务:是或否?

发布于:2021-01-19 13:59:44

0

107

0

容器 微服务 devops Java

Java是否适合微服务开发?公司是否应该继续朝这个方向投资资源?我们邀请了7位JAX DevOps演讲者来探讨微服务炒作,Java在所有这些方面的地位以及容器世界中正在发生的事情。

微服务是否有理想的语言?

这取决于你问谁。我们的一些受访者坚信Java是微服务的理想语言,而另一些人只是声称没有微服务的理想语言。你站在哪一边?

在下定决心之前,您应该知道,根据Red Hat的 最新调查,DevOps开发人员对特定的技术,运行时或框架几乎没有忠诚度。相反,有 45% 的受访者相信使用“正确的工具完成任务”。简而言之,他们在工具包中收集了一系列非常特定的工具,以确保他们的方法成功。

在本系列访谈的第一部分中,我们邀请了 7位JAX DevOps演讲者 分享他们对2018年的预测,并指出了每位优秀的DevOps从业人员应具备的特征。然后我们邀请他们谈论DevSecOps,公司向云迁移以及这种趋势在2018年将如何继续发展。

现在该讨论容器,微服务以及两者之间的所有内容。 

容器即服务将在2018年成为一件事情吗?

丹尼尔·布莱恩特(Daniel Bryant): 我喜欢称之为容器基础设施即服务(CIaaS),我相信我是从阿德里安·科克罗夫特(Adrian Cockcroft)那里借来的—是的,这已经是一件事情!随着去年下半年在AWS re:invent会议上发布Amazon EKS,所有主要的云供应商现在都提供托管的Kubernetes产品。

亚马逊通过发布AWS Fargate进一步迈出了一步,该技术使工程师无需管理集群即可运行容器,这是我感兴趣的领域!

Michiel Rook: 老实说,我认为容器即服务已在2017年成为一件事。 

显然,Kubernetes是值得关注的平台(也是我最兴奋的平台)。尤其是现在,Azure(AKS)甚至亚马逊(EKS)已加入Kubernetes火车,我认为没有人怀疑该平台的有效性。

Philipp Krenn: 这是下一步的逻辑步骤。我想说,这是十年前向我们承诺的那时平台上不会真正发生的向平台即服务(PaaS)方向迈出的又一步。

我发现AWS Fargate是一种有趣的方法,可以进一步摆脱基础架构的困扰。让我们看看这是否会兑现诺言。

Java是否适合微服务开发?公司是否应该继续朝这个方向投资资源?

丹尼尔·布莱恩特(Daniel Bryant): 我的背景在很大程度上受到Java和JVM的影响,因此我在这里可能会有一些偏见,但我相信Java是微服务语言的不错选择-特别是如果这是您的开发团队知道的唯一语言!

Java语言和JVM在生产中经过了20多年的实战测试,而且总的来说,我还发现Java代码易于读取和维护(与Scala或Ruby相比)。Java微服务框架(例如Spring Boot,DropWizard和Spark Java)也为开发经验增加了很多价值。

Java不发光的一些微服务用例是服务非常简单的地方-在这里像Ruby和Sinatra框架之类的语言或Node.js可能非常有用-或当您具有基础结构/平台资源约束时-在这里像Golang这样的(静态)编译语言可能会有用。

TommyTynjä:  Java和JVM是具有丰富生态系统的成熟平台。我相信您应该为这项工作选择合适的工具。JVM提供了一个稳定的平台,但是它不需要您运行Java。我已经在Groovy和Scala中编写了微服务,这些微服务比选择Java更有意义,但我们仍然可以利用我们在JVM上运行软件的知识。

微服务风格架构的优点在于,它使您可以轻松进行其他语言或框架的试验,而无需进行大量投资。关键是要提供足够小的服务,以便在必要时可以轻松更换它们。

皮埃尔·文森特(Pierre Vincent):微服务 具有强大的功能,可以采用“正确的工作工具”的方法。在我看来,这意味着微服务开发没有一种理想的语言。

但是,将专业知识分布在太多技术上会带来风险。当使用不同的堆栈时,团队将很难进行协作并采用大致一致的方式进行工作。同样,从招聘的角度来看,缺乏一致性会使工作变得更加困难。

我可以说,从Poppulo的角度来看,我们使用Java已有10多年了,它仍然是我们产品开发的首选核心语言(以及Go作为Ops / SRE语言)。Java可能不是2018年的流行语言,但它是我们的工程师拥有最佳专业知识的地方:它使我们能够快速,自信地工作。

Michiel Rook:  Java绝对有效。像Spring Boot and Play这样的框架!已经建立并提供强大的功能。但是,这完全取决于用例:使用有效的方法并适用于您的特定问题。

Antonio Cobo:  我认为Java将继续成为微服务开发中最受欢迎的语言选择。

Philipp Krenn: 我很确定微服务的炒作将在Java之前结束。高度分散的应用程序避免了讨厌的整体程序的某些问题,但是没有灵丹妙药。尽管Java并不是解决每个问题的正确解决方案,但我不会丧失Java的稳定性,成熟的工具,人才的可用性……尤其是因为Java也在向更精简的应用程序和框架领域发展。

Alexander Schwartz: Java为您提供了广泛的可能性:

具有Spring和完整Netflix堆栈的“胖”微服务,

具有Spring或Dropwizard的“中等”微服务,将弹性赋予服务网格,以及

具有Vert.x的“小型”反应式微服务具有最小的占用空间,并且可以快速启动。

您甚至可以选择要在其上运行的云-无需云供应商锁定!这绝对是我的“是”。

容器现在风靡一时。对集装箱的总体兴趣会在今年增长吗?

丹尼尔·布莱恩特(Daniel Bryant): 我认为容器技术处于Gartner Hype Curve上“夸大预期”的高峰(或者可能刚刚超过高峰),因此我将继续采用容器。

Docker在这个领域与“现代化传统应用程序”一起做了很多工作,然后社区中的许多人都在写博客和文章,介绍如何打包和持续交付所有类型的应用程序,例如我的“ “使用Java和Docker进行持续交付的容器化”,Arun Gupta的Java和Kubernetes教程,Viktor Farcic的DevOps 2.0系列以及Christian Posta的精彩博客文章。

TommyTynjä: 很多年前,当我开始使用容器时,今天没有可用的编排工具,因此我们用Bash编写了自己的编排工具。如今,入门的门槛已经大大降低,人们越来越意识到容器带来的好处,这使其成为自然选择。如今,容器技术易于采用并从中受益。

我不认为将非常老的应用程序迁移到在容器中或在容器平台上运行是否有价值,这主要是因为在开发这些应用程序时并未考虑这些因素。为了激励它,需要计算这种努力的价值。

Michiel Rook: 总的来说,我认为从技术上讲,几乎每个遗留应用程序都可以容器化。容器技术的好处很明显,所以我想我们会看到更多的事情发生。

Philipp Krenn: 容器将成熟并保持增长,但这并不意味着它们将替代其他部署模型。它们是有用的工具,但不是唯一的工具。作为一个行业,我们应该停止假装只有一个正确的解决方案,每个人都必须遵循。在没有使用容器作为其核心技术的情况下,将会有很多成功地成功的企业。