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
總結
以上是生活随笔為你收集整理的Java程序员:不要因未知而让云成本大涨的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作系统/etc/hosts文件配置
- 下一篇: zabbix监控(三)