IBM Mono2Micro の概要

IBM® Mono2Micro™ は、 Java® モノリシック・アプリケーションをマイクロサービスにリファクタリングするための半自動ユーティリティです。 WebSphere® Application Server Liberty または Open Liberty. IBM Mono2Micro とそれが提供する推奨事項を使用して、マイクロサービスのビルドとデプロイに必要なコードの大部分を自動的に生成することができます。

静的および動的分析を通じて、 IBM Mono2Micro は、機械学習エンジンと Java モノリシック・アプリケーション・コードの分析を使用して、パーティション推奨を生成します。 パーティション推奨 は、マイクロサービスの開始点として使用できる、モノリスのクラスのグループです。 推奨されるパーティションとその他の関連情報は、直観的なワークベンチ UI に表示されます。 IBM Mono2Micro は、 Java プログラミング言語に関する組み込み知識に基づいて、クラス間呼び出しの深いセマンティック分析も提供します。 ワークベンチ UI と詳細な分析を使用することで、パーティション化の推奨事項を明確に把握できます。この推奨事項は、ビジネス・ニーズに合わせて繰り返し微調整できます。 特定のパーティション化の推奨を決定した後、 IBM Mono2Micro を実行すると、既存のモノリス・コードとともに推奨パーティションをビルドしてデプロイするために必要なコードの大部分を自動的に生成できます。 生成されたコードを検討した後、マイクロサービスがニーズを満たすようになるまで、反復して推奨事項を微調整し、コードを生成することができます。 その後、 WebSphere Application Server Liberty または Open Libertyでマイクロサービスを実行できます。

IBM Mono2Micro の一部として利用できる。 IBM WebSphere Hybrid Edition そして IBM Cloud Pak® for Applications.

IBM Mono2Micro のジャーニー

IBM Mono2Micro コマンドは、以下の機能を提供します。

データ収集

IBM Mono2Micro がアプリケーションを分析するには、まずそのコードに対して mono2micro analyze コマンドを実行してから、インスツルメンテーションを使用してアプリケーションを実行し、分析対象のすべてのデータを収集します。

  1. アプリケーション・アーカイブで mono2micro analyze コマンドを実行して、完全クラス名、メソッド・シグニチャー、状態変数、継承関係などのコードに関する情報を含む表 JSON ファイルを生成します。
  2. (オプション) バイナリー・インスツルメンテーション機能を有効にしてアプリケーションをデプロイします。
  3. (オプション) ビジネス・ユース・ケースで mono2micro usecase コマンドを実行して、分析用の 1 つ以上のコンテキスト JSON ファイルおよびログ・ファイルを生成します。
パーティション推奨の AI 分析

IBM Mono2Microから 2 つのリファクタリング・オプションを取得するには、以前に収集したファイルに対して mono2micro recommend コマンドを実行して、パーティション推奨を含むレポートとグラフ JSON を取得します。

  1. 静的コード分析、およびオプションでコード生成から推奨を取得するために、入力ディレクトリー内の場所にファイルを配置します。
    • 静的コード分析の場合のみ、表 JSON ファイル ( mono2micro analyzeから) を入力ディレクトリー内の適切な場所に配置します。
    • 静的コード分析およびコード生成の場合、表 JSON ファイル ( mono2micro analyzeから)、ログ・ファイル (ビジネス・ユース・ケースの実行中にアプリケーション・サーバーから)、およびコンテキスト JSON ファイル (ビジネス・ユース・ケースの実行中に mono2micro usecase から) を、入力ディレクトリー内の適切な場所に配置します。
  2. mono2micro recommend コマンドを実行して、リファクタリング・アプローチを使用してレポートおよびグラフ JSON を生成します。
パーティションのリファクタリング

mono2micro workbench コマンドを実行してワークベンチ UI を起動すると、アプリケーション用に作成された 2 つのリファクタリング・アプローチを調べることにより、アプリケーションとそのクラスについてより深く理解することができます。 IBM Mono2Micro による 2 つのリファクタリング・アプローチは、ビジネス・ロジックと自然継ぎ目です。 これらの推奨事項は、アプリケーションのランタイム呼び出しと検出されたデータ依存関係の分析から作成されました どちらのアプローチも望ましい方法ではない場合は、独自のカスタム・パーティショニング・ソリューションの計画を作成して保存します。

  1. mono2micro workbench コマンドを使用して、ワークベンチ UI コンテナー・イメージを起動します。
  2. ブラウザーで UI にアクセスし、 mono2micro recommend コマンドから生成された JSON ファイルをロードします。
  3. リファクタリング・アプローチを検討します。
  4. (オプション) カスタム・リファクタリング・オプション JSON ファイルを作成して保存します。
コード生成

mono2micro transform コマンドを実行して、マイクロサービスを作成するためのスターター・コードを自動的に生成します。

  1. (オプション) 自然継ぎ目またはカスタム・リファクタリング・アプローチの使用を選択した場合は、 mono2micro refine コマンドを実行します。
  2. mono2micro transform コマンドを実行してコードを生成します。
  3. テスト環境でコードを編集およびデプロイします。

動作の仕組み

以下の図は、 IBM Mono2Microによるワークフローを示しています。 (Action)という用語で始まる青いボックスは、ユーザー・アクションを表します。 (File)という用語で始まる塗りつぶされていないボックスは、ファイルを表します。 実線は次のステップを指しています。 破線は、ファイルの使用を示し、ワークフロー内の次のユーザー・アクションまたはファイルを指します。 ワークフローはアプリケーション・コードで開始し、分析とコード生成の後、パーティション用に生成されたスターター・コードで終了します。


IBM Mono2Micro のコンポーネント、コンテナー、およびワークフロー

IBM Mono2Micro コンポーネント

IBM Mono2Micro は、前の図に示されている以下の 6 つのコンポーネントで構成されます。

コード・アナライザー (mono2micro-bluejay コンテナーまたは binary analyzer .jar)
モノリシック・アプリケーションの Java コードを分析し、オプションでインスツルメントする mono2micro analyze コマンド。
バイナリー・インスツルメンテーション機能 (minerva-agent-1.0.jar)
アプリケーション・サーバーにデプロイされた実行中のアプリケーションをインスツルメントする Java エージェント。
ユース・ケース・レコーダー (Flicker)
mono2micro usecase コマンドを使用して実行します。これは、ユース・ケースの名前と時刻を記録する Java プログラムです。 これは、 Java モノリシック・アプリケーションのさまざまなビジネス・ユース・ケースに対応するテスト・スイートまたはテスト・ケースを実行する場合に使用します。
パーティション推奨の AI エンジン (mono2micro-aipl コンテナー)
mono2micro recommend コマンドは、 IBM Mono2Microの AI エンジンを実行します。 ソース・コード・アナライザーから取得されるユーザー提供のランタイム・トレースおよびメタデータに対して、機械学習技法を使用します。 結果の情報を使用して、最終的にマイクロサービスになる可能性があるパーティション推奨を生成します。 このコマンドは、推奨パーティションの詳細レポートも作成します。
IBM Mono2Micro ワークベンチ UI
mono2micro workbench コマンドを使用して起動されたときに AI エンジンからの推奨を表示する mono2micro-ui コンテナー。 IBM Mono2Micro AI エンジンから取得された推奨事項は、ローカル・ストレージに保持されます。 推奨をワークベンチ UI にロードして、グラフィカル・ビジュアライザーに表示することができます。 UI を使用して、AI 生成のパーティション推奨を変更できます。
コード・ジェネレーター (mono2micro-cardinal コンテナー)

mono2micro transform コマンドは、 Java プログラミング言語のセマンティクスに関する深い知識を持つコード・ジェネレーターを起動します。 コード・ジェネレーターは、AI エンジンからの推奨事項を使用して、以下のことを行います。

  • 最終的にマイクロサービスとして実装できる推奨パーティションの詳細な呼び出し分析を提供します。
  • 推奨パーティションの詳細な継承分析を生成します。
  • コンテナー内の推奨パーティションを実現するために必要なコードの大部分を生成します。

Mono2Micro ツールをダウンロードし、ローカルコンピュータで実行することができます。

Java モノリシック・アプリケーションのリファクタリングの手順

以下のステップでは、 IBM Mono2Microを使用して Java モノリシック・アプリケーションをリファクタリングする方法について説明します。 これらは、前の図のより詳細なバージョンです。

  1. コード・アナライザーを使用して、モノリシック・アプリケーションの Java コードを分析します。

  2. アプリケーションの静的コード分析のみに基づいて推奨を取得するか、コード生成も取得するかを選択します。 静的コード分析の場合のみ、 ステップ 3にスキップします。 静的コード分析およびコード生成の場合は、以下のステップを実行してコード生成を追加します。

    1. Java モノリシック・アプリケーションを、バイナリー・インスツルメンテーション・ Java エージェントとともに、非実稼働環境 (代表的な環境) にデプロイします。 コード・アナライザーによって生成された JSON ファイルを入力として使用します。

      JSON ファイルは、symTable.jsonrefTable.json、および instrumenter-config.jsonです。

    2. デプロイされた Java モノリシック・アプリケーションで、さまざまなビジネス・ユース・ケースに対応するテスト・ケースを実行します。

      ユース・ケース・レコーダーを実行して、さまざまなビジネス・ユース・ケースに対応する個々のテスト・ケースの開始時刻と停止時刻を指定し、記録します。

    3. トレースを含むログ・ファイルを、該当するサブディレクトリー内のコード・アナライザーおよびユース・ケース・レコーダー (1 つ以上のコンテキスト .json ファイル) によって生成される JSON ファイル (symTable.json および refTable.json) とともに配置します。

    4. ログ・ファイルと JSON ファイルが保持されているディレクトリーで AI エンジンを実行します。

      AI エンジンはディレクトリーの内容を分析し、HTML 形式のレポートとともに final_graph.json ファイルにパーティション推奨を生成します。

      AI エンジンは、コード生成に必要なすべての成果物を含むディレクトリーを作成します。 また、パーティションと継承レポートを HTML 形式でディレクトリーに作成します。 パーティション・レポートには、マイクロサービスの開始点となる可能性があるパーティション推奨の詳細な呼び出し分析が含まれています。 Inheritance レポートは、検討中のアプリケーションの既存の継承チェーンの詳細を示します。

  3. final_graph.json ファイルをロードして、パーティションの推奨を表示します。

    ワークベンチ UI で、推奨を調整して微調整し、変更を JSON ファイルに保存することができます。 パーティションおよび継承レポートは、任意のブラウザーで表示できます。

  4. ステップ 2 でコード生成を追加した場合は、他のコマンドを実行して成果物とスターター・コードを生成します。

    1. 前のステップでパーティション化の推奨を調整した場合は、 mono2micro refine コマンドを実行して、新規レポートとともにコード生成用の新規成果物を生成します。
    2. mono2micro transform コマンドを実行して、マイクロサービス推奨を実現するためのスターター・コードを自動的に生成します。
  5. mono2micro recommend コマンドを実行するステップから始めて、再度ステップを繰り返すことにより、選択したマイクロサービスに到達することができます。

前のステップの一部は、他の IBM Mono2Micro トピックで詳しく説明されています。