【IT168 评论】Java是微服务开发的理想之选吗?企业应该继续向这个方向投入资源吗?为了帮助大家解答这些问题,本文采访了七位DevOps技术大牛,和他们探讨了关于微服务、Java以及 container 的发展。
有没有一种理想的微服务语言?
这个问题是很多技术人都想要问的一个问题,但是可惜的是,目前我们所听到的答案并不统一。有些人认为Java是微服务的理想语言,但是另一些人则认为微服务没有理想的语言。
到底我们应该站在哪一边呢?根据,DevOps开发人员对特定技术,运行时或框架几乎没有忠诚度,相反有45% 的受访者相信应该使用"正确的工具来完成这项任务"。简而言之,技术人员更倾向于寻找最适合此时工作的工具来完成任务。
为了更好的看清楚DevOps在2018年的发展趋势以及优秀的DevOps实践者应该具备的特征,下面我们就一起来看看我们和七位DevOps大牛的深度对话。
探讨微服务和容器正当时!
containers-as-a-service将在2018年成为趋势吗?
Daniel Bryant:我更喜欢称之为"容器基础设施即服务"(CIaaS),当然这种说法是我从别人那里借鉴来的。去年底 AWS re:invent大会上宣布了,所有主要的云供应商现在都提供托管的产品。
随着的发布,亚马逊已经进入了一个阶段,工程师可以在不需要管理集群的情况下运行容器,这是我感兴趣的领域!
Michiel Rook: 说实话,我认为containers-as-a-service是2017年的事情,现在显然Kubernetes是一个更具吸引力的平台。尤其是现在Azure(AKS)、亚马逊(EKS)已经跳上Kubernetes列车,我不认为还有人怀疑这个平台的有效性。
Philipp Krenn:我认为这是合乎逻辑的猜测,是我们10年前承诺的平台即服务(PaaS)方向的又一个进展。AWS Fargate是一个有趣的方法,可以进一步远离基础设施方面的担忧。
Java是微服务开发的理想之选吗?企业应该继续向这个方向投入资源吗?
Daniel Bryant:我个人受Java和JVM影响很深,所以我的观点可能不是那么客观。但是我坚信Java是微服务语言很好的一个选择,尤其是在开发团队只熟悉Java的情况下。
Java语言和JVM都经过了20多年的生产测试,总的来说,Java代码易于阅读和维护(与Scala或Ruby相比)。像Spring Boot,DropWizard和Spark Java这样的Java微服务框架也为开发体验增添了很多价值。
当然在一些Java不怎么适用的微服务用例中,也有一些语言在发光,例如Ruby with the Sinatra framework、 Node.js,另外当基础设施或者平台资源有限制时,类似于Golang这样的静态编译语言更适用。
Tommy Tynj?:Java和JVM是拥有丰富生态系统的成熟平台,所以很多人在选择合适的工具时都会考虑这一点。JVM提供稳定的平台,但是并不是一定要运行Java,我在Groovy和Scala中编写了微服务,我觉得比选择Java更有意义。
微服务式体系结构的优点在于,它使得你可以轻松地尝试其他语言或框架,而无需投入大量资金。关键是要有足够小的服务,以便在必要时可以轻松更换。
Pierre Vincent:微服务在允许采取"正确的工具"的方式方面是强大的。在我看来,这也意味着没有一个理想的微服务开发语言。
然而,在太多的技术上传播专业知识会带来风险。当使用不同的堆栈时,团队将很难进行协作,并且会以大致一致的方式来做事情。同样,缺乏一致性也会使招聘的角度变得更加困难。
从Poppulo的角度来看,我们已经使用Java 十多年了,它仍然是我们产品开发的首选核心语言(与Go作为Ops / SRE语言一起)。Java可能不会是2018年的流行语言,但它是我们工程师拥有最好专业知识的地方:它使我们能够快速和放心地工作。
Michiel Rook:Java绝对有效。Spring Boot和Play!等框架已经建立并提供了很好的功能。这一切都取决于用例:使用什么工具适用于您的特定问题。
Antonio Cobo:我认为Java将继续成为微服务开发中最流行的语言选择。
Philipp Krenn:我很确定微服务的炒作将在Java之前结束。高度分布的应用程序避免了一些令人讨厌的问题,但没有银子弹。虽然Java不是解决所有问题的正确解决方案,但因为稳定性,成熟的工具和人才的可用性,Java不会丧失资格,尤其是它也正在进入精简应用和框架的领域。
Alexander Schwartz: Java为您提供了广泛的可能性:
"fat"微服务与Spring和完整的Netflix堆栈,
"medium"具有Spring 或 Dropwizard的微服务,将弹性能力委托给服务网格
"small" reactive Microservices,占用空间很小,启动速度很快。
而且你还可以自主选择云厂商,它们并没有云厂商锁定。
Containers 现在很火,2018年Containers 会延续这个气势吗?
Daniel Bryant:我认为Containers技术正处于Gartner Hype Curve的"inflated expectations"峰值(或者刚刚超过高峰期),所以我认为Containers采用将会持续稳定下去。
Docker在这个领域做了大量的"现代化传统应用程序" 的工作,然后社区中的用户也正在积极撰写关于如何打包和连续传输所有类型的应用程序的博客和文章。
Tommy Tynj?:多年前,当我开始使用容器的时候,并没有可用的编排工具,所以我们在Bash中编写了自己的编排工具。今天,起步的门槛要低得多,人们越来越意识到Containers带来的好处,这使得它成为自然选择。今天,容器技术很容易被采纳和受益。
但是,我不认为将很老旧的应用程序迁移到容器或Containers平台上是有价值的,主要原因就是这些应用程序的开发并没有考虑到容器化的条件和应用。
Michiel Rook: 总的来说,我认为在技术上,几乎每一个传统的应用程序都可以被容器化。容器技术的好处很明显,所以我想我们会看到更多的发生。
Philipp Krenn: Containers将成熟并保持增长,但这并不意味着它们将取代其他部署模型。他们是一个有用的工具,但不是唯一的工具。我们作为一个行业,应该停止假装这种只有一个正确的解决方案。没有使用容器作为核心技术的企业也会出现很多成功的企业。