コンテンツに移動
アプリケーション モダナイゼーション

開発者向け: Migrate to Containers の新しい CLI を活用したアプリケーションのモダナイゼーション

2023年5月30日
https://storage.googleapis.com/gweb-cloudblog-publish/images/cloudmigration-ja.max-2500x2500.png
Google Cloud Japan Team

※この投稿は米国時間 2023 年 5 月 24 日に、Google Cloud blog に投稿されたものの抄訳です。

ポートフォリオ内に、5 年、10 年、または 20 年稼働しているアプリケーションはありますか?

もしそうならば、アプリケーションが活用され、価値をもたらしていることを意味します。しかし、こうした既存アプリケーションは、古いテクノロジーやプラットフォームで構築されていることが多いため、メンテナンスやアップグレードが困難な場合があります。このようなアプリケーションをコンテナやサーバーレス アプリケーションにモダナイズすると、次のような多くのメリットを得られます。

アジリティの向上: コンテナのデプロイやスケーリングが容易であるため、企業は需要の変化に高いアジリティで対応できます。

パフォーマンスの改善: コンテナは従来の仮想マシンよりも効率的であり、パフォーマンスの改善につながる可能性があります。

セキュリティの強化: コンテナベースのアーキテクチャに移行することで、自動化された DevSecOps の導入が容易になり、安全なサプライ チェーンとイメージのセキュリティ スキャンが実現します。

費用の削減: コンテナは従量課金制でデプロイでき、さらに仮想マシンと比べてリソースを効率的に活用できるため、企業の IT 費用の削減に役立ちます。

新しいテクノロジーの実現: レガシー アプリケーションをコンテナとして実行する統一されたインフラストラクチャを使用することで、既存のアプリケーションを、コンテナベースの環境でネイティブに統合できる AI / ML や分析といった「クラウドで誕生した」新しいテクノロジーに簡単に拡張できます。

最新のオペレーションによるメリット: 既存のアプリケーションをコンテナで実行すると、企業は宣言型インフラストラクチャ、自動化された CI / CD によるメリットを活用でき、既存アプリケーションの運用費用を削減できます。

モダナイゼーションの成果を出すには投資が必要だが、それだけの価値がある

レガシー アプリケーションをモダナイズする方法はいろいろあります。その 1 つは、アプリケーションをゼロから作り直す方法ですが、このプロセスには時間も費用もかかる可能性があります。より費用対効果の高い方法は、最新の技術スタックを使用してアプリケーションをモダナイズすることです。これには、Google Kubernetes Engine のような Google Cloud のコンテナ化プラットフォームや、Google Cloud Run のようなサーバーレス プラットフォームなど、クラウドベースのプラットフォームを使用できます。

企業は、コアビジネスの重要な要素であるとともに、収益に貢献する、あるいは収益を生み出す活動を支援するというビジネス プロセスにおける重要な役割を担っている既存のワークロードを実行しています。クラウド変革プログラムを策定する際には、既存のアプリケーションをどのように扱うかを決める必要があります。コードの書き換えには労力と費用がかかるため、アプリケーションをリファクタリングしてコンテナで実行できるようにするなど、別のアプローチを模索しています。Migrate to Containers が提供するアプローチは、Windows IIS、Tomcat、IBM WebSphere、JBoss などのミドルウェア フレームワーク上で実行されるソフトウェア バイナリを再利用して、フレームワークのイメージ コンテナ上で実行されるようにアプリケーションを変換します。アプリケーション バイナリを変換しても、アプリケーション レイヤは変更されません。アプリケーションで使用され、フレームワーク層と OS 層で提供される基盤となるサービスを、Kubernetes エコシステムを通じてご利用いただけるようになりました。

このエコシステムでは、コードまたはアーキテクチャそのものではなく、ランタイムとコンピュート ホストをモダナイズします。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Drawing_1_-_M2C_Dev_Tools_Diagram-01.max-2100x2100.jpg
例: Tomcat アプリケーションのリファクタリング図

リファクタリングを意味あるものにするために

コンテナのモダナイズがもたらすメリットは IT アーキテクトや CIO にとって魅力的ですが、ここで言及されているフレームワークを使用して構築されたソフトウェアにおいて実用可能なのでしょうか。この問いに対する答えは、ソフトウェア アーキテクチャとその設計によって異なりますが、レガシー ソフトウェアのコンテナ化を任されたモダナイゼーションの実務担当者にはわからない場合があります。たとえば、アプリケーションでコード化された IP アドレスを使用して他のリソースにアクセスするコードや、ソフトウェアの物理的なデプロイに関する情報を含むロジックが、コンテナ化の制限になることがあります。そのため、既存のソフトウェア アーキテクチャを調査して潜在的な障害を示すための技術評価は、モダナイゼーションに伴うリスクを排除するうえで非常に重要な役割を果たします。Google Cloud は、適合性評価ツール(mFit)をはじめとして複数の評価オプションを提供しています。mFit は、候補となるアプリケーションで実行されるソフトウェア バイナリ、構成ファイル、サービスを調査し、コンテナ化に関する詳細な技術適合性分析を実行します。場合によっては、さらに一歩進んで、ソフトウェア コードへのアクセスを必要とするコード スキャン手法を適用し、CAST や vFunction などの Google Cloud パートナーが提供しているようなツールを使用する必要があります。

コンテナ化によるモダナイゼーションを簡素化

コンテナ化とは、アプリケーション コンポーネントとその依存関係を 1 つのユニットにパッケージ化し、簡単にデプロイして管理できるようにするプロセスのことです。これにより、異なる環境間でのアプリケーション移行がはるかに容易になり、パフォーマンスやセキュリティを向上させることもできます。このたび導入される Migrate to Containers CLI という新しいツールを使用すると、既存のソフトウェアを GKE、GKE Autopilot、Cloud Run、または Anthos クラスタで実行されるコンテナへとモダナイズできます。Migrate to Containers CLI は、既存の Migrate to Containers をベースとしており、レガシー アプリケーションのコンテナ化に役立つ、操作が容易なスタンドアロンの CLI ツールを活用したコンテナ化機能が導入されています。この新しいコマンドライン ツールは、アプリケーションをコンテナに変換するプロセスを自動化します。Tomcat、WebSphere、Apache、JBoss、WordPress などのフレームワークをベースとしたさまざまなソフトウェアのコンテナ化にこのツールを使用することもできます。また、追加のフレームワークの対応も進んでおり、これには Windows IIS アプリケーションや、Linux ベースのソフトウェアのモダナイゼーション(Linux システム コンテナ上で実行されるコンテナにモダナイズ)などが含まれます。

Migrate to Containers の新しい CLI で既存のソフトウェアをモダナイズする方法

レガシー アプリケーションをコンテナ化するための通常の手順は、評価、コピー、分析、生成、デプロイです。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Drawing_2_-_M2C_CLI_Flow_go_m2ccli-blog-ar.max-1400x1400.jpg

この例では、以下の図に示すように、開発者のローカルマシンにインストールされたツールを使用して、ソースマシンから Google Kubernetes Engine に Tomcat アプリケーション バイナリをモダナイズする流れを追っていきます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Drawing_4_Architecture_diagram_refactor_To.max-1600x1600.jpg
Tomcat のモダナイゼーション フローの図

1. mFit と M2C CLI の Google モダナイゼーション ツール バイナリをローカル環境にダウンロードしてインストールします。

mFit をダウンロードしてインストールするには、次のコマンドを実行します。

読み込んでいます...

M2C CLI をダウンロードしてインストールするには、次のコマンドを実行します。

読み込んでいます...

2. アプリケーションの評価 - 既存のアプリケーションの適合性評価を実行し、次のコマンドを使用してソースマシンでの検出を実施します。このツールは、評価対象マシンの実行中に収集スクリプトを実行するため、それらマシンの実行中のプロセスを停止する必要はありません。SSH を使用した収集について詳しくは、こちらをご参照ください。

読み込んでいます...

次に、HTML レポートを生成します。

読み込んでいます...

最後に、生成された HTML ファイルをローカルマシンのブラウザで開いて、技術適合性レポートを表示します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Drawing_3_-_Fit_assessment_of_application_.max-1500x1500.jpg

3. 次のコマンドを実行して、ソースマシンからローカルマシンにアプリケーション フォルダをコピーします。

読み込んでいます...

4. アプリケーションに関連するパラメータを使用し、次のコマンドを実行して、アプリケーション ファイルを分析します。

読み込んでいます...

この例では、Tomcat アプリケーションのコンテナ化のためのコマンドを使用しました。この段階で、生成された移行ファイルの YAML ファイルを編集して、サーバー名、公開するポート、使用するデプロイ ファイル、または生成されたコンテナ イメージから削除したい機密データなどのパラメータを構成できます。

5. 次のコマンドを実行して、必要なアーティファクトとして、コンテナ イメージ、artifacts.yaml ファイル、skaffold.yaml ファイルを生成します。

読み込んでいます...

6. 生成された skaffold 構成ファイルを使用して、生成されたアーティファクトをターゲット クラスタにデプロイします。1 つのコマンドで GKE クラスタを構築してデプロイできます。イメージをホストでき、ターゲット クラスタから使用可能なイメージ リポジトリを選択します。次に、生成されたアーティファクトのディレクトリで、次のコマンドを実行します。

読み込んでいます...

これで、kubectl port-forward を使用してデプロイした Tomcat アプリケーション コンポーネントへのアクセスをテストできるようになりました。詳細については、kubectl のドキュメントをご覧ください。

Migrate to Containers CLI を使用してアプリケーションをモダナイズする方法について詳しくは、技術ドキュメントをご確認ください。


- シニア プロダクト マネージャー Eyal Yaron
- エンジニアリング マネージャー Erez Gev
投稿先