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

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