Java程序员:不要因未知而让云成本大涨

Java应用程序框架Grails的创建者Graeme Rocher近日表示,在云原生世界,通过对Java程序逻辑进行注释和编译细节优化,可以节省云服务器运行成本,开发人员对这些潜在细节的无知可能导致企业付出高昂代价。

在日常开发中,Java程序员主要和框架、工具、API和文档等打交道,好像跟云沾不上边。直到应用程序被推向生产,研发人员可能才意识到这个应用需要千兆字节内存才能运行,此时再开始优化显然来不及,如果基于云平台运行,则会造成大量资源浪费。

虽然Java研发人员主要在运行时管理应用程序,但随着容器化和Kubernetes的普及,不少研发人员也会将应用程序直接部署到Kubernetes,因为其可以大规模协调容器化应用程序。

无论是Kubernetes还是管理应用程序的Oracle云基础架构环境,编写云应用程序的开发人员都需要以不同的方式思考编程和优化方式。相比本地运行,开发人员必须让应用程序对重启、故障转移、启动时间和内存消耗等优化做出响应。毕竟,一旦应用程序在云平台运行,消耗的所有资源都直接与金钱挂钩。

无服务器和微服务优化

当然,上述问题可以通过一些新计算模式得到缓解,但每一种新计算模式的出现都会随之带来一些陷阱。在云计算领域,显著风险来自应用程序的隐藏成本,从表面来看,微服务应该是相对经济的解决方案。

Grails的创建者Graeme Rocher最近因名为Micronaut开源项目获得Oracle Code One颁发的开创性奖项。与开源Web应用程序框架Grails一样,Micronaut基于JVM,但这也是二者唯一相似之处。Micronaut是一个模块化、易于测试的开源框架,用于构建现代微服务和无服务器应用程序。

那么,Micronaut和Java程序员有什么关系?和云计算成本又有什么关系呢?

一般来说,在Java生态系统,研发人员会学习很多关于让应用程序更高效,针对低内存占用进行优化的知识。云平台同样运行着不少用Java语言编写的框架,比如Hadoop、Kafka和Cassandra,这些框架支持长时间运行进程,这些进程可从JVM即时编译中受益。

但是,对于运行时间较短的进程而言,无服务器计算变得很受欢迎,这更适合快速冷启动和低内存占用及短期运行进程的情况,如果进程只是短暂执行然后消失,那么JVM提供的优化就会丢失,就像在效用计算模型中一样。

Micronaut的作用就是将传统架构过渡到更快、更灵活且基于微服务的系统。Micronaut能以亚秒速度执行关键操作,同时支持精益云部署。应用程序的启动时间和内存消耗不会根据程序中的代码行数自动增加。因此,Micronaut不仅适用于公用计算,还是通用开发环境,可以轻松运行在诸如Android等小型内存占用设备和Raspberry Pi等微控制器上。

换句话说,Micronaut满足云原生、多语言、独立于设备的需求,并与GraalVM等项目完美集成,用于编译运行速度更快的Java代码。 当然,研发人员也不必局限于Micronaut这一种选择。

Java不一定很沉重

研发人员通常认为Java意味着重量级,这种判断更多地与JVM提供的用于构建框架的API和工具有关,这些历来基于运行时使用,运行时注释分析及构建应用程序的方式不可避免地导致内存消耗增加。

相比之下,预编译将编程语言转换为Java字节码或将字节码转换为机器代码的过程 ,对许多开发人员来说是未知的,但在某些应用程序平台被大量使用。Micronaut所做的是采用这一理念并将其应用于服务器端编程。

Java应用程序需要等待几秒钟才可启动的日子已经过去,这要归功于微服务的出现,但这并不是Micronaut的唯一优势,它还集成了追踪和安全工具,并且不必容器化。如果使用Java应用程序,研发人员可能需要依赖容器实现许多功能。Micronaut让这些功能都在运行时编译,因此容器需求就会消失,这让测试变得更加容易。

参考链接:
https://www.forbes.com/sites/oracle/2019/01/07/grails-founder-what-java-developers-dont-know-about-memory-can-cost-them-money-in-the-cloud/#2792bb3044e1

Micronaut项目开源地址:https://github.com/micronaut-projects/micronaut-core

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章