Oracle Cloud Infrastructure上でモノリシックなJavaアプリをマイクロサービスに変換 (2021/04/01)

Oracle Cloud Infrastructure上でモノリシックなJavaアプリをマイクロサービスに変換 (2021/04/01)

https://blogs.oracle.com/cloud-infrastructure/transform-monolithic-java-apps-to-microservices-on-oracle-cloud-infrastructure
投稿者:Robert Ronan | Principal Product Manager

レガシーソフトウェアアプリケーションの近代化は困難です。
企業はこのようなモノリシックなアプリケーションに依存してビジネスを行っていますが、
クラウドへの移行とクラウドネイティブ・アーキテクチャの採用が急務となっています。
このブログでは、vFunctionOracle Cloud Infrastructure (OCI)上のアプリケーション・モダナイゼーション・プロセスをどのように自動化し、加速するかを説明します。

以下のセクションでは、MedRecアプリケーションのリファクタリングとモダナイゼーションのプロセスを紹介します。
Avitek Medical Recordsとして知られるMedRecは、WebLogicサーバーに同梱されているモノリシックなJava EEアプリケーションです。
ここでは、MedRecをマイクロサービスにリファクタリングし、
新しいマイクロサービスベースのアプリケーションとしてOracle Container Engine for Kubernetes(OKE)にデプロイするプロセスを説明していますが、
このチュートリアルの全文はオンラインでアクセスできます。

Javaアプリケーションのリファクタリングにおけるキーコンセプト


MedRecアプリケーションのリファクタリングにおける重要な目標は、
モノリスから抽出するサービス、そのインターフェイス、およびそのスコープに含まれるクラスを特定することです。
この分析に続いて、開発する各サービスを抽出し、WebLogicベースのdockerコンテナを作成するOracleのツールを使用して、
OKEなどのKubernetesクラスタに個別にデプロイすることができます。
vFunctionのプロセスは、実際のビジネスドメインのフローを観察するインテリジェントな自動化を用いて、
アプリケーションのモダナイゼーションプロセスを加速させる3つのステップを踏むことで、
数ヶ月に及ぶ手作業や退屈なモダナイゼーションラボを置き換えることができます。

学習と評価


vFunctionの動的解析は、JVMエージェントを通じて実際のMedRecのビジネスフローとビヘイビアを観察します。
その後、バイトコードの静的解析を適用して静的な依存関係を調べ、コードカバレッジを確保します。
次の図に示すように、初期アプリケーション移行評価レポートは、5つの次元でアプリケーションの複雑さを測定し、
vFunctionが特定した初期サービスのセット、および関連するクラス、APIエンドポイント、排他性の計算を指定します。


次のビデオでは、MedRec分析を紹介し、サービスの排他性、インフラストラクチャクラス、エントリーポイントなど、
いくつかの重要なリファクタリングのコンセプトについて説明しています。




vFunctionエージェントは、アプリケーション・パフォーマンス・モニタリング(APM)エージェントと同様の働きをしますが、より深い分析レベルを持っています。
vFunctionエージェントは、実行中のスレッドを毎秒100回サンプリングし、各関数のコールスタックとCPU使用率を追跡し、
サービスの分割を困難にする可能性のあるメモリをタグ付けします。
これには、スタティックメモリ、Spring Beans、ソケット、ファイルハンドル、ロックと同期オブジェクト、データベースのテーブルアクセスなどが含まれます。
その後、静的コード解析を適用し、動的クラスのコンパイル時依存性を考慮して動的データを補完し、
構成を最小化し、カバレッジを評価し、デッドコード解析のために動的使用をクロスチェックします。

分析と自動化


学習と評価のフェーズが完了すると、
vFunctionはアーキテクトにインタラクティブなコンソールで分析結果を提示し、初期のサービストポロジーと、
アーキテクトによる改良が必要な関連するすべての相互依存関係の詳細な可視性を提供します。
MedRec分析の次のビデオでは、vFunctionのユーザー・インターフェースを案内し、初期の結果、相互作用、および推奨事項をレビューします。



vFunctionのUIによって強化されたアーキテクトとして、システムの推奨事項に自分の視点と改良を加える力を持っています。
MedRecアプリケーションの例では、次のステップとして、vFunctionの初期分解に基づいて、
サービスをさらに統合し、サービスの排他性を最大化する作業を開始します。
次のステップでは、サービスの統合、APIエンドポイントの作成、共通サービス・ライブラリの構築などのベストプラクティスを用いて、
vFunctionがアーキテクトを初期のサービス・トポロジーから最終的に5つのサービスと共通ライブラリからなる簡素化された
マイクロサービス・アーキテクチャに導く様子を紹介します。

まず、MedRecアプリケーションに単一のチャット機能を作成します。
次の短いビデオでは、サービスをマージし、動的なクラスの排他性を調べ、APIエントリーポイントを作成し、
新しい完全なマイクロサービスを100%排他的なDrPatientChatに改名する方法を示しています。




次に、MedRecの分析では、非排他的であると識別された静的なクラスを調査し、
インフラストラクチャクラスとしてマークし、共通のライブラリに割り当てることで、単一の検索マイクロサービスを作成することに焦点を当てています。
次のビデオはそのプロセスを追ったものです。
2つの検索サービスを1つに統合し、共通のリソースを特定し、統合された新しいマイクロサービスをPatientSearchと改名しています。



次のビデオでは、common jarの中の基礎とならないクラスを特定することで、
クリーンなコモン・ライブラリーを確保するためのベストプラクティスと、
冗長なクラスを無視することでサービスのスコープを縮小し、最小限のコンテキストを得る方法を説明しています。




最後のビデオでは、チャット、検索、認証、記録管理、登録の5つのサービスで構成される
マイクロサービスアーキテクチャを作るための残りのステップを紹介しています。



サービスの抽出とOCIのデプロイメント


vFunctionのUIから、抽出するサービスを選択すると、一連のService Specification JSONファイルが作成されます。
vFunctionのコードコピーユーティリティがそのファイルを参照し、必要なソースコードを取り出して、
Mavenで使用するPOMファイルを作成し、新しいサービスを構築します。
KubernetesとOCIにデプロイするために、vFunctionはWebLogic Server Deploy ToolingとWebLogic Image Toolを使用します。
また、以下の前提条件が必要です。

  • Oracle Container Engine for Kubernetes(OKE)クラスタの実行中のサービスインスタンス
  • kubectlに精通していること
  • Helmへのアクセス
  • クラスタにインストールされたWebLogicのKubernetesオペレータ
  • クラスタにインストールされたIngressコントローラ(オペレータ)(現在はNginxとTraefikをサポートしています
  • WebLogicベースのdockerイメージをダウンロードする権限を持つOracleアカウント
  • プロセス中に作成されたすべてのイメージをアップロードするためのdockerリポジトリ

インストールやテストに関する詳細は、vFunctionのサイトをご覧ください。

まとめ


vFunctionプラットフォームを利用することで、モノリシックなJavaアプリケーションを迅速にモダナイズし、自信を持ってクラウドに移行することができます。
リスクの少ないアプローチで、高い価値を生み出すことができます。
このブログで使用されているアプローチでは、エンタープライズ・アプリケーションは、
OCIで利用可能なクラウド・ネイティブ・アプリケーションのすべてのサービスと利点にアクセスすることができ、
弾力性とスケーラビリティの向上、リリース・サイクルの短縮、最新の開発者サービス、生産性とビジネス・アジリティの向上などが実現します。

詳細については、『Oracle Container Engine for Kubernetes』のドキュメントおよびvFunctionのWebサイトを参照してください。
vFunction on Container Engine for Kubernetesをご自身で体験されたい方は、
Oracle Cloud Infrastructureアカウントにサインアップして、今すぐテストを開始してください。

コメント

このブログの人気の投稿

Oracle RACによるメンテナンスのためのドレインとアプリケーション・コンティニュイティの仕組み (2023/11/01)

Oracle Cloud Infrastructure Secure Desktopsを発表: デスクトップ仮想化のためのOracleのクラウドネイティブ・サービス (2023/06/28)

新しいOracle Container Engine for Kubernetesの機能強化により、大規模なKubernetesがさらに簡単になりました (2023/03/20)