[レポート]Amazon Q Code Transformation を使用してアプリのアップグレードとメンテナンスを自動化する #AWSreInvent #DOP229

2023.12.06

re:Invent 2023 で行われた BreakOut セッション Automate app upgrades & maintenance using Amazon Q Code Transformation (DOP229) のセッションレポートです。

概要

Developers spend significant time completing the undifferentiated work of maintaining and upgrading legacy applications.

Teams need to balance investments in building new features with mandatory patching and update work. Now,

using the power of generative AI, Amazon Q can expedite these critical upgrade tasks,

transforming applications to use the latest language features and versions.

Join the session to learn how your team can automate Java application upgrades and soon port .NET framework applications to cross-platform .NET.

(日本語訳)

開発者は、レガシー アプリケーションの保守とアップグレードという差別化されていない作業を完了するために多大な時間を費やします。

チームは、新機能の構築への投資と必須のパッチ適用および更新作業のバランスを取る必要があります。

今回、Amazon Q は生成 AI の力を利用して、これらの重要なアップグレードタスクを迅速化し、最新の言語機能とバージョンを使用するようにアプリケーションを変換できるようになりました。

セッションに参加して、チームが Java アプリケーションのアップグレードを自動化し、すぐに .NET Framework アプリケーションをクロスプラットフォーム .NET に移植する方法を学びましょう。

動画

YouTubeで公開されていますので、詳しくみたい方はぜひご参照ください!

見どころ

アプリケーションのアップグレードにお悩みの方におすすめのセッションです。

Adam Selipsky氏のキーノートで発表された Amazon Q Code Transformation について詳しく説明があるセッションとなります。

Amazon Q Code Transformation は、生成AIを活用して、アップグレードの支援を行うサービスですが、そのアップグレードのフローについても理解することができます。

セッション内容

アップグレード実施時の課題

アプリケーションアップグレードの課題として以下が考えれれます。

  • 時間と労力を要する
  • サポートされていないバージョンからのアップグレード
  • アップグレード作業は差別化されないタスク
  • レガシーなアプリが積み重なり、依存関係が発生して多大な労力を要する

実際にアプリケーションを運用している人には馴染みの課題感かと思います。 バージョンアップグレードを後回しにしてもゆくゆくは対応しなければなりません。

例えば、Java であれば、2年間の長期サポートが提供されており、サポート切れになる前に対応する必要があります。

アップグレードは、このような負の面だけではなく、新しい機能を使えるといったメリットもありますが アップグレードの作業自体は、他と差別化されないタスクで、もっと他のタスクを行いたいと感じてしまいます。

アップグレードのは、コードの把握が必要であり、アップグレード担当者がコードを把握していない可能性があります。 よって、アップグレード前にこれらをコードを把握して取り組まなければならないため、多くの時間を要します。

さらに、コードだけではなく、各種ライブラリの依存関係までも気にかける必要があります。 これらの取り組み方として、実際に調べて、試して、テストするのフローを繰り返す方法があります。

Amazon Q Code Transformation とは

Amazon Q Code Transformation では、Amazon Qを使用して、既存のアプリケーションコードのアップグレードをサポートするツールです。

現在は、 Java 8 および 11 アプリケーションのみの対応で Java バージョン 17 にアップグレードできます。

Amazon Q Code Transformation では、ビルド環境にコードをアップロードして動作確認を行います。

さらに、コードが実行できるかだけではなく、パッケージの依存関係の特定など深いコードの理解までできるようです。

流れとしては、従来のアップグレードの方法と同じですが、Amazon Q Code Transformation は、これらのフローをend-to-endで自動化されています。

アプリケーションの既存のテストも実施し、検証を行います。

その後で、IDEを通して、パッチファイルや差分を確認することができ、開発者が選択をして反映させることができます。

この機能を利用することで、多くは、数分〜1時間未満でアップグレードできるようです。

さらに、ただ動作できるコードを生成するだけではなく、生産性やセキュリティが向上させるようなコード変換が可能です。

Amazon Q Code Transformation の仕組みについて

まずコード生成、ビルト・テスト、エラーFixのフローを内部で行います。

この時にコードをストレージに配置しますが、最終的には完全にコードは削除されます。

一時的にコードを配置している場合でも、CMKによって暗号化を行うことができます。

また、このフローの一番重要な部分は、Knowledge base となっています。

コード変換は、単純なルールベースのものでは対応できないため、より柔軟に様々なテクニックを組み合わせを行うため、Knowledge base が必要となります。

Knowledge base の活用の流れ

まず、アップグレードする必要性があり、既存の Knowledge base を活用して、アップグレードが可能です。

Knowledge baseでは、どのknowledgeを使うかを選択はしておらず、コードの生成のみを行います。

テストを行い、エラーが発生すると、Knowledge base を活用して、修正内容を生成します。

Knowledge base には、インターネットの情報など多くのデータが投入されています。

Amazon Q Code Transformation のまとめと今後

Amazon Q Code Transformation を活用することで、今までのメンテナンスやアップグレードなどの労力の削減が期待できます。

そして、開発者は、新規開発への時間を割くことができるようになります。

また、アップグレードを通してパフォーマンスやセキュリティ向上にも繋がる可能性があります。

今は、Javaのみですが、今後 .NET Framework アプリケーションをクロスプラットフォーム .NET への変換も対応予定となっています。

最後に

Amazon Q Code Transformation を活用することで、今まで苦労していたアップグレード作業がかなり楽になりそうですね。

プレビュー中に Amazon Q Code Transformation を使用する場合、追加料金はかからないようで、Amazon CodeWhisperer Professional Tier であれば利用できるようです。

また、現在はプレビュー中ということでJavaの特定バージョンのみの対応ですので、今後もっとサポート対象が増えることに期待です!!

参考