[セッションレポート] Amazon CodeCatalyst Dev Environmentsの活用 (DOP317) #reInvent

2022.12.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWS認定トレーニング講師の平野@おんせん県おおいたです。

今日は「Amazon CodeCatalyst Dev Environments in action」というタイトルのセッションについてレポートします。

セッション紹介

多くの開発者は、統合開発環境(IDE)で作業する方が生産的だと考えています。AWSは、事実上あらゆるプロジェクトのコーディング、テスト、デバッグに必要なすべてのツールを提供します。その結果、クラウド開発環境の迅速なセットアップ、プロジェクト間の切り替え、チームメンバー間での開発ワークスペース構成の複製が可能になります。このセッションでは、開発環境を使用して、プロジェクトのソースリポジトリに保存されているコードを、サポートされている IDE で作業する方法を学びます。

オンデマンド動画

概要

AWS dev tools - A full set of tools

多くの人が知っているように、AmazonとAWSにはすでに開発ツールのセットがあります。 これにより、安全な開発とデプロイのワークフローがほぼ無限に広がり、圧倒的なスケーラビリティが得られます。しかし、柔軟性というのは、時に課題をもたらします。どの製品を使えばいいのか、何かと何かをどう統合すればいいのか、わからないわけです。プロジェクトに着手する前に、多くの選択を迫られ、多くの決断を迫られることになります。

Challenges in building cloud applications

では、どのような決断が必要で、どのような課題があるのでしょうか。 プロジェクトの立ち上げとツールの統合が挙げられます。 私たちのツールとの統合は、無限の組み合わせが可能です。 しかし、私たちは、ビルドツールの設定やこれらの作業を行う代わりに、顧客に価値を提供することに時間を使いたいと理解しています。

CI/CDと開発環境の自動化という2つ目の課題に対する別のアプローチについて、大規模なソフトウェア・プロジェクトに携わったことがある人なら、CI/CDのセットアップが、別の言い方をすれば「チャレンジング」であることをご存知でしょう。適切なインフラを用意し、パイプラインを作り、テストを行い、変更がパイプラインを正しく流れていることを確認する必要があるのです。

クラウド開発がより複雑になっているように感じます。開発するのが難しくなっているのです。複数のツール、複数のフレームワーク、異なる言語、異なるインフラで製品プロジェクトに取り組んでいる結果です。フロントエンドのコード、バックエンドのコード、その他のシステムの一部を切り替えて作業することになります。そして、その作業にはローカル・マシンで今すぐにでも時間がかかります。

Amazon CodeCatalyst

このような課題を念頭に置き、私たちは初心に戻って、ソフトウェアの構築、出荷、開発の方法を一から考え直す必要があると思いました。これが、CodeCatalystの始まりです。

CodeCatalystとはソフトウェアのビルドとデプロイに必要なすべてのツールのパッケージです。アイデアから実験、そして本番へと素早く移行することができるのです。私たちは、アプリケーションの計画、ビルド、テスト、デプロイに必要なすべてのツールを1つのボックスにまとめました。そのため、直線的なプロセスではなく、より統合されたアーキテクチャを実現することができます。

CodeCatalystを利用することで、ツールをつなぎ合わせたり、時期尚早かもしれない決断をしたりする時間を減らすことができます。そして、その判断はいつでも後で考え直すことができます。パイプラインやツールに煩わされることなく、顧客に価値を提供することに時間を使うことができます。

開発環境について深く掘り下げる前に、ソフトウェア開発者にとっての主要な生産性と創造性のツールであるIDEについて少しお話ししましょう。私たちはラップトップでIDEを動かしています。つまり、ローカルの計算機とストレージを使用しているのです。つまり、性能や構成は、私たちのノートPCのハードウェアスペックによって制限されます。

アプリケーションがクラウドに移行し、ソフトウェアが様々な言語やフレームワークで構成されるようになっても、開発者は主にローカルマシンで作業しており、計算集約型のタスクには力不足な傾向があります。

このようなセットアップの手間はオーバーヘッドが大きく、エラーが発生しやすく、日々のメンテナンスが必要です。開発者は、ローカルマシンの設定を正しくするために多くの時間を費やすことなく、簡単にプロジェクトを切り替えることができます。

もし、IDEを2つの要素に分割して、より良いリモート開発環境を実現できるとしたらどうでしょうか。キーストロークが入力される最初のコンポーネントは、ラップトップ上でローカルに動作するシンクライアントとも呼ばれるIDEのUI、キーストロークが処理され、ソフトウェアの構築とテストが行われる2つ目のコンポーネントです。IDEと開発環境を分けて、開発環境をAWSのクラウドに移行します。

Why Dev Environments

  • [スライド訳]なぜ開発環境なのか
    • もう "私のマシンでは動いた "ということはない
    • ローカルでの再設定が不要
    • パッチやアップデートの必要がない
    • オンデマンドでリサイズ可能
    • プロジェクトの流れに沿った運用が可能

現在、多くの時間と生産性が失われています。私のマシンでは完璧に動作するものが、他のマシンではあらゆる種類のエラーや警告を返すからです。各プロジェクトには、独自の依存関係のセットがあります。例えば、私のflaskウェブアプリはPython 3.11を必要とします。開発環境には必要なパッケージ、依存関係、ライブラリがすべて含まれており、すぐにコーディングできる状態になっているためです。

IDE のアップデートがあるたびに、アップグレードの前に後方互換性の問題を心配します。

もし、最新の安定版を選んでテストし、自分のプロジェクトに適しているかどうかを確認できるとしたらどうでしょう?

ノートパソコンのハードウェアスペックに縛られることがなくなったらどうでしょう?

新しいノートパソコンにアップグレードする代わりに、目の前のタスクに適した開発環境を提供することができるわけです。

設計図やgitリポジトリから再現性のある開発環境をゼロから作り、ソースコードと完全に統合し、プロジェクトの設計図を CodeCatalystで利用でき、AWSクラウドにアプリを簡単にデプロイできるとしたら、チームに共通の世界観を持たせることができるのではないでしょうか

What's a Dev Environment?

  • [スライド訳]開発環境とは?
    • フルマネージドなクラウドベース
    • Devfile標準対応
    • タスクに合わせた拡張性
    • CodeCatalystのウェブサイトまたはローカルのIDEで利用可能
    • コードリポジトリで初期化

開発環境とは、社内では開発環境はラップトップ用のgitブランチのようなものだと考えています。つまり、必要なときに作成し、タスクが完了したら破棄します。 開発環境は、完全に管理されたクラウドベースです。必要なときに必要な分だけ作成できます。作業が終わったら破棄します。ワンクリックでプロビジョニングでき、数秒で立ち上げることができます。また、プロジェクトリポジトリの選択設定や新しいブランチの作成も可能です。

Dev環境は、コードとして定義できるオープンスタンダードであるDev file standardに対応しています。デフォルトでは、一貫して設定された環境を確保し、プロジェクトリポジトリでバージョン管理し、CodeCatalystのdev環境については、デフォルトのユニバーサルファイルを使用するか、独自のデバイスを作成またはカスタマイズすることができます。 Dev環境も必要に応じてリサイズが可能です。開発ニーズに合わせて、さまざまなCPU、メモリ、ストレージの構成を使用できます。これらは、コード、触媒のウェブサイト、またはJetBrainsとVS Codeを含むお好みのIDEから直接作成することができます。

※セッションではココでCodeCatalystのデモ(Cloud9デモ,VS Codeデモ)があります。是非セッション動画をご覧ください。

Getting started with CodeCatalyst

  • [スライド訳]CodeCatalystの利用を開始する
    • Amazon CodeCatalyst アカウントのサインアップ
    • CodeCatalystのWebサイトからAWS Cloud9 Dev Environmentを作成する
    • JetBrains Gatewayのダウンロード
    • AWS IDE toolkit for VS Codeをインストールします。
    • ビルドを開始

CodeCatalystを始めるには、ウェブサイトをご覧ください。https://codecatalyst.aws/です。アカウントを作成するのはとても簡単です。それからCodeCatalystに入り、Cloud9ベースの環境を立ち上げ、それで遊んでみて、どう動くかを理解するのがいいと思います。

まとめ

CodeCatalystの紹介とCodeCatalystが解決する課題についてのセッションを紹介しました。ご興味があれば上記のリンクよりセッション動画をご覧ください。