JAVA 仍是開發企業應用程序最流行的語言之一。那么,為什么無服務器serverless開發人員對它望而卻步?
幾十年來,企業已經在各類平臺上開發了關鍵業務應用程序,包括物理服務器、虛擬機和云環境。這些應用程序在各行各業都有一個共同點,那就是無論需求如何,它們都需要持續可用(24x7x365),保證穩定性、可靠性和性能。因此,即使實際資源利用率低于 50%,每個企業都必須付出高額成本維護基礎架構(如 CPU、內存、磁盤、網絡等)。
無服務器架構是為了幫助解決這些問題而產生的。無服務器允許開發人員按需構建和運行應用程序,保證高可用性,不必在多云和混合云環境中管理服務器。在幕后,無服務器拓撲中仍有很多服務器,但它們是從應用程序開發中抽象出來的。相反,云提供商使用無服務器進行資源管理,例如配置、維護、聯網和擴展服務器實例。
由于其高效性,無服務器開發模式現在是一些企業的需求,這些企業希望按需啟動服務,而不是一直運行服務。
許多新建的開源項目用來在 Kubernetes集群上通過 linux 容器包來管理無服務器應用程序。CNCF 的《交互式無服務器全景》 是一份關于開源項目、工具、框架和公共云平臺的指南,幫助 DevOps 團隊處理無服務器應用程序。
開發人員可以編寫代碼,然后將其快速部署到各種無服務器環境中。然后,無服務器應用程序響應需求,并根據需要自動伸縮擴展。
你可能想知道什么編程語言和運行環境最適合無服務器應用程序開發,以便與上圖中的技術集成。這個問題不只一個答案,但是讓我們退一步來討論在企業生產環境中開發業務應用程序最流行的應用程序運行環境:Java。
據 Developer Economics稱,截至 2020 年第三季度,仍有 800 多萬家企業開發人員在使用 Java 來實現其業務需求。然而,根據 2020 年的一項調查,Java(占比 6%)顯然不是有前瞻意識的開發人員的首選,他們使用當前云服務做開發。
來自 NewRelic 無服務器基準報告的數據(Daniel Oh, CC BY-SA 4.0)
資源使用、響應時間和延遲在無服務器開發中至關重要。公有云提供商提供的無服務器產品通常是按需計量的,只有在無服務器應用程序啟動時,才會通過事件驅動的執行模式收費。因此,當無服務器應用程序閑置或縮減為零時,企業無需支付任何費用。
帶有容器的 Java 狀態
在這種背景下,你可能會問:“既然現有業務應用程序很可能是在 Java 技術上開發的,那么開發人員為什么不嘗試使用 Java 棧進行無服務器應用程序開發呢?”
隱藏的真相是:很難在新的不可變更的基礎設施(例如 Kubernetes 這樣的容器平臺)中優化 Java 應用程序。
該圖描述了 Java 進程與競爭的語言、框架(如 Node.js和Go)之間內存資源使用的差異。Java HotSpot 占用資源最大,其中包括每個Java 虛擬機Java Virtual machine(JVM)實例分配的堆內存。中間顯示了 Node.js 每個進程要比 Java 小得多。最后,Go 是一種流行的云服務編程語言,因為它的內存消耗最低。
如你所見,當你在這張圖從左到右走,你會看到更密的節點。這就是開發人員在云、容器和 Kubernetes 上編寫無服務器應用程序時回避 Java(包括 Spring Boot,一種頑固的微服務 Java 框架)的原因。
下一步是什么?
企業可以通過實現無服務器應用程序獲得明顯的好處,但是資源密度問題導致他們避免使用 Java 堆棧在 Kubernetes 上開發無服務器應用程序開發。但是選擇其他語言會給全球數百萬 Java 開發人員帶來學習負擔。因此,在本系列的下一篇文章中,我將指導你如何開始使用 Java 無服務器函數,而不是使用其他語言。
via: https://opensource.com/article/21/5/what-serverless-java
作者:Daniel Oh選題:lujun9972譯者:DCOLIVERSUN校對:wxy
本文由 LCTT原創編譯,Linux中國榮譽推出






