GSS 資安電子報 0236 期【AWS 架構師指南:使用 Optimizer Hub 提升 Java 效能 】

訂閱電子報
2025-09-03 00:00
翻譯及整理:叡揚資訊 資安直屬事業處
 

AWS 架構師指南:使用 Optimizer Hub 提升 Java 效能

 
01.jpeg

若您曾聽過 Azul Optimizer Hub,一個提供Java最佳化的快取,可以更快、更經濟地滿足 JVM 所需的最佳化需求,那是否也曾想過如何在 AWS 架構裡能怎麼發揮作用。對 AWS 架構師來說,在容器化與雲原生環境中執行 Java 工作負載的效能問題並不陌生,特別是 JIT 編譯造成的啟動延遲和額外資源消耗。Optimizer Hub 是一個 Kubernetes 原生的解決方案,能在 Amazon EKS 上執行,並徹底翻轉現有狀況,讓應用程式從第一筆請求開始就能達到最佳化效能。本文提供範例架構,帶您了解,該如何在 AWS 環境中整合這項顛覆性的技術。

 

在傳統 Java 的執行模式下,程式一開始會先以較慢的直譯方式跑,直到建立出最佳化的效能分析檔後,才會進行優化。也就是說應用程式必須等到實際接收到流量並執行到關鍵程式碼時,才會啟動最佳化。偏偏這經常發生在系統需要因應大量流量而擴充的時候,此時機器的效能卻是最慢的,CPU 不僅要處理請求,還得分心進行高耗能的 JIT 編譯。

透過 Optimizer Hub,Java 應用程式能更快進入最佳效能狀態,並且幾乎不會增加客戶端的 CPU 負擔。

 

 

Optimizer Hub 提供兩項服務來解決傳統 Java 的啟動預熱問題:

  • ReadyNow Orchestrator:監控整個 Java 系統的使用模式,建立最佳化分析檔來驅動 JVM 的編譯流程。新啟動的 JVM 可以跳過分析階段,一初始化就開始編譯程式方法,讓大部分的 JIT 編譯能在應用程式啟動時就完成,而不必等到接收到流量後才進行。
  • Cloud Native Compiler (CNC):它會將 JIT 編譯的工作卸載到專門的伺服器群上,在伺服器端進行效能優化。CNC 會快取最佳化結果,避免重複編譯,讓客戶端可以將 100% 的 CPU 權利用於處理請求,而不必為初始 JIT 編譯高峰預留額外資源。

 

搭配使用這兩項服務,可以讓應用程式更快達到最佳效能,在啟動預熱期間的 CPU 使用更平順,並減少資源浪費。而且與 Graal Native Image 等其他預熱技術不同,Optimizer Hub 支援任何 JDK 版本,能處理所有 Java 程式碼模式,且不需要對程式碼做任何修改。

 

架構說明

Optimizer Hub 以 Kubernetes 叢集的形式提供,通常部署在 Elastic Kubernetes Service (EKS) 中,並在您的 VPC 內運行【圖 1】。

 

DIAGRAM: Optimizer Hub is shipped as a Kubernetes cluster that you run in your VPC to improve application performance.

圖 1:Optimizer Hub 以 Kubernetes 叢集形式提供,可在您的 VPC 中運行,以提升應用程式效能。

 

這個實作的重要細節:

  • 安裝的最佳方式是使用我們的Helm chart(版本需為 v3.8.0 或更新版本)。
  • 所有映像檔都在 Docker Hub 上,但大多數客戶會先下載到內部的 artifact 管理系統,再更新 Helm chart 指向內部的位置。
  • 使用Kubernetes operator技術負責所有的擴充與縮減,並需要有呼叫 Kubernetes API 的權限。Optimizer Hub並不使用 HPA(Horizontal Pod Autoscaler)來做自動擴充與縮減。
  • Optimizer Hub 需要與 S3 連線,您可以開放「對 S3 bucket 讀寫的權限」給需要的節點,或設定 AWS 服務帳號來管理存取權限。
  • Optimizer Hub 是共享服務,同一可用區域內的所有 JVM 都可以共用同一個實例,不需要針對每個應用程式各自建立。建議將 Optimizer Hub 實例放在與它服務的應用程式相同的可用區域。
  • Optimizer Hub 提供完整的高可用性,即使完全失去 Optimizer Hub 存取,JVM 仍能正常運作。

 

DIAGRAM: One instance of Cloud Native Compiler services many JVMs for better application performance and lower cloud costs.

圖 2:一個 Cloud Native Compiler 實例可服務多個 JVM,提升應用程式效能並降低雲端成本。

 

在 EKS 上安裝

基礎架構需求:

  • 實例類型:可使用On-demand或reserved的 EC2 Instances(不支援 Spot Instances)
  • 規格:每個節點至少 8 個 vCore 和 32GB RAM
  • 推薦實例:m6 或 m7 系列
  • 部署選項:可以安裝在現有的 EKS 叢集,或使用這個連結提供的 eksctl 腳本建立專屬cluster (https://docs.azul.com/optimizer-hub/installation/aws-eks)

eksctl 腳本會在您的 AWS 帳號中建立以下資源:

  • 適用於為主要的 EKS 叢集及叢集內每個 NodeGroup 的CloudFormation stacks。
  • 一個名為 eksctl-{cluster-name}-cluster/VPC 的虛擬私有雲(VPC)。如果您選擇使用現有 VPC,則不會建立新的 VPC。您可以在 AWS VPC 控制台查看這個 VPC 及其相關網路組件。該 VPC 已配置好所有必要的網路元件:

三個公有子網與三個私有子網

一個 Internet Gateway

每個子網的路由表

叢集專用的Elastic IP Address

一個 NAT Gateway 

 

一個 EKS 叢集,包括四個節點群組,每個節點群組配置一個 m5.2xlarge 實例:

  • infra:用於執行 Grafana 和 Prometheus
  • opthubinfra:用於執行 Optimizer Hub 的基礎設施元件
  • opthubcache:用於執行 Optimizer Hub 的快取
  • opthubserver:用於執行 Optimizer Hub 的編譯 broker 設定

 

為自動擴縮群組(Autoscaling Groups)建立 IAM 資源:

  • Cluster 及各子網的自動擴縮群組角色(Roles)
  • EKS 自動擴縮器的權限政策(Policies)

 

自動擴縮(Autoscaling)

Optimizer Hub 有兩種運行模式:ReadyNow-only 模式與 完整模式(包含 ReadyNow 和 CNC)。ReadyNow-only模式不需要大量資源,也不會進行擴縮。相反地,CNC 在 JVM 啟動的短時間內會快速擴充大量資源,隨著編譯請求減少,再將資源縮減。

Optimizer Hub 的 Operator 不同於傳統依據 CPU 或記憶體指標進行擴縮的 HPA ,它是依據編譯工作負載來擴縮 gateway、compile-broker 和 cache 等元件。系統會監控編譯佇列的長度,並動態分配資源,以確保編譯請求量與處理能力一致。

 

Optimizer Hub 的負載平衡與高可用性

在生產環境中,您必須在 Optimizer Hub 實例前方部署負載平衡器或服務網格,確保連接 Optimizer Hub 的 JVM 有一個穩定、單一的入口點與服務通訊。您可以使用以 DNS 為基礎的負載平衡器(例如 Amazon Route 53)或 Kubernetes 服務網格(例如 Istio)。此外,Optimizer Hub 的 gateway 提供標準的就緒檢查,可用來判斷何時將流量導向叢集,確保服務可靠且高可用。

 

注意事項

我們建議在生產環境中至少部署兩個 Optimizer Hub 實例。通常會在每個可用區域放置一個實例,以降低延遲;同時,每個實例也可作為其他可用區域的備援實例,當其中一個區域的實例故障時,可確保服務不中斷。

Optimizer Hub 的實例可以設定自動同步 ReadyNow 配置檔,這樣如果某個應用程式最近的實例不可用,其他實例仍然擁有所需的配置,確保預熱順暢。

若 Optimizer Hub 無法使用,新啟動的 JVM 仍能運行,但預熱速度會變慢,有時程式碼執行效率也會降低。說明如下:

  • ReadyNow 設定檔無法使用,因此 JVM 在啟動初期無法提前進行 JIT 編譯。這可能導致應用程式一旦開始接收流量時,CPU 使用率偏高,並造成回應速度下降。
  • Cloud Native Compiler (CNC) 無法使用,代表所有 JIT 編譯都必須在本機完成。若 CNC 不可用,可以調整 JVM 的編譯層級,改用較低階的編譯方式,以降低本機編譯對系統效能的影響。

  

Azul 如何提供協助?

Azul 提供企業級 Java JDK 解決方案,專為商業環境設計,確保高效能與穩定性,同時降低總體擁有成本(TCO)。Azul Platform Prime 是專為高效能企業應用設計的商業級 Java JDK,可確保應用程式在高併發與低延遲環境下穩定運行。與傳統 JVM 相比,Azul Platform Prime 可大幅提升吞吐量,減少記憶體佔用,並優化 CPU 使用率,使企業能以更少的資源獲得更高效的運行效能,幫助企業優化基礎架構成本。其獨特的技術優勢包括更快的啟動時間、更低的延遲,以及更高的應用程式穩定性,確保企業系統在高負載環境下仍能保持流暢運行。此外,Azul 提供企業級支援與安全性更新,確保 Java 環境始終符合最新的合規要求與最佳效能標準。

特色優勢:

  • 突破效能瓶頸,提升應用程式運行速度
  • 降低基礎架構成本,最大化資源利用率
  • 即時應用穩定性,確保業務不中斷

若想進一步了解 Azul,歡迎於官網留下資訊,將有專人與您聯繫

https://www.gss.com.tw/product-services-nav/info-security/azul

 

 

相關文章

保險業資安挑戰升溫!叡揚資訊攜Bitsight 推動企業供應鏈資安治理新標準

台灣知名保險平台服務商近日爆發重大資安事件,駭客聲稱竊得逾 20GB 機密資料,並揚言公開,恐波及超過 152 萬筆保戶個資。這起事件不僅震撼保險產業,更揭示出企業面臨的資安風險早已超越企業本身,過去所信任的軟體系統已不再安全,第三方平台與供應商成為駭客攻擊的新破口。
2025/06/19

叡揚資訊攜手復興高中舉辦「程式安全黑客松」 落實產學合作、強化資安人才即戰力

為落實與學界合作並響應政府推動資安人才培育政策,叡揚資訊有限公司於5月3日至4日參與由教育部資訊安全人才培育計畫主辦、臺北市立復興高級中學協辦的「北區高中職程式安全黑客松工作坊」,並擔任活動贊助單位,提供資安講師資源、實作工具支援與相關活動物資
2025/06/04

「2025 安全達人養成計劃」正式開放報名 歷屆參加者分享實戰經驗邀你挑戰最強資...

由叡揚資訊主辦的《安全達人養成計劃》2025 年度活動已正式啟動。即日起至 6 月 30 日止,參與者可免費報名並使用 Secure Code Warrior(SCW)線上安全程式培訓平台進行線上學習,並於 6 月 23 日至 6 月 27 日參加「線上資安戰士挑戰賽」。
2025/06/02

叡揚資訊與復興高中簽署產學合作備忘錄 攜手培育資安新世代

叡揚資訊股份有限公司與臺北市立復興高級中學於近日正式簽署產學合作備忘錄,雙方將在資訊安全教育、人才培育及實習計劃等方面展開全面合作。此舉不僅能為學生提供多元化的學習體驗,更能有效提升學生未來升學及就業所需的專業技能。
2025/05/15