AWS App2Container
Java や .NET の既存アプリケーションをコンテナ化するツール
何ができるか
AWS App2Container (A2C) は、オンプレミスや EC2 上で動作する Java や .NET の既存アプリケーションを自動的に分析し、コンテナイメージに変換するコマンドラインツールです。Dockerfile の生成、コンテナイメージのビルド、ECS や EKS へのデプロイに必要な設定ファイルの自動生成まで一貫して行います。アプリケーションのソースコードを変更せずにコンテナ化できます。
どのような場面で使うか
オンプレミスの Java Web アプリケーション (Tomcat、JBoss 上で動作) の AWS コンテナ環境への移行、.NET Framework アプリケーションの Windows コンテナ化、レガシーアプリケーションのモダナイゼーション (コンテナ化) の第一歩として活用されています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
引っ越し業者の梱包サービスに例えるとわかりやすいでしょう。引っ越し (クラウド移行) の際、家具や荷物 (アプリケーション) をそのまま運ぶのは大変です。梱包サービス (App2Container) は、荷物を分析して最適な箱 (コンテナ) に詰め、新居 (ECS/EKS) に配送できる状態にしてくれます。荷物自体を改造する必要はありません。
App2Container とは
AWS App2Container (A2C) は、既存の Java や .NET アプリケーションをコンテナ化するためのコマンドラインツールです。コンテナ化とは、アプリケーションとその実行環境を 1 つのパッケージ (コンテナイメージ) にまとめることです。A2C を使えば、Docker の知識がなくても、稼働中のアプリケーションを自動的にコンテナイメージに変換できます。
コンテナ化の流れ
A2C のコンテナ化は 3 つのステップで進みます。まず inventory コマンドで、サーバー上で動作しているアプリケーションを自動検出します。次に analyze コマンドで、選択したアプリケーションの依存関係やポート設定を分析します。最後に containerize コマンドで、Dockerfile とコンテナイメージが自動生成されます。各ステップの結果は JSON ファイルで出力され、必要に応じてカスタマイズできます。
デプロイ設定の自動生成
コンテナイメージの作成後、A2C は ECS や EKS へのデプロイに必要な設定ファイルも自動生成します。ECS のタスク定義、サービス定義、CloudFormation テンプレートが出力されるため、そのまま AWS 環境にデプロイできます。CI/CD パイプライン (CodePipeline) の設定も生成可能で、継続的なデプロイ環境の構築まで支援します。
はじめかた
対象のサーバーに A2C をインストールし、sudo app2container inventory コマンドでアプリケーションを検出します。コンテナ化したいアプリケーションの ID を指定して analyze、containerize コマンドを順に実行します。生成されたコンテナイメージを ECR にプッシュし、ECS や EKS にデプロイします。まずは開発環境のアプリケーションで試すのがおすすめです。
注意点
- App2Container 自体は無料で利用できるが、生成されたコンテナを実行する ECS/EKS のリソースには料金が発生する
- コンテナ化はアプリケーションをそのまま移行する「リフト & シフト」であり、アーキテクチャの最適化 (マイクロサービス化など) は別途検討が必要
- 対応するアプリケーションは Java (Tomcat、JBoss など) と .NET (IIS) に限定されるため、他の言語やフレームワークには使用できない
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。