コンテンツに移動
デベロッパー

App Engine Standard の Java ランタイムのオープンソース化

2022年2月4日
Google Cloud Japan Team

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

Google App Engine がリリースされた 2008 年の 1 年後、このプラットフォームで利用可能な 2 番目の言語ランタイム として Java が採用されました。Java デベロッパーは、インフラストラクチャの管理を気にすることなく、サーブレットベースのウェブ アプリケーションを簡単にデプロイし、スケーリングできました。Java だけでなく、Apache GroovyKotlin などの代替 JVM 言語もゲームの一部として動作しています。本日、Github 上の GoogleCloudPlatform/appengine-java-standard リポジトリに、App Engine 用の Java ランタイムがオープンソースとして公開されたことをお知らせします。

利用できるサービス

appengine-java-standard リポジトリには、Java スタンダード環境、本番環境ランタイム、API、ローカル SDK の Java ソースコードが含まれています。

プロジェクトのさまざまなディレクトリにズームすると、データを保存する Datastore、バイナリ blob を保存する Blobstore、コンピューティング タスクをエンキューする Taskqueue、再計算したくない高価な結果をキャッシュする Memcache、外部サービスを呼び出す Urlfetch など、App Engine のサービスの使用とアクセスのための API を com.google.appengine.api パッケージから見つけることができます。

Google App Engine の開発で優れたエクスペリエンスとなるのは、ローカル開発環境のおかげで、開発マシン上でアプリケーションをローカルに実行できることです。前述のサービスはいずれもローカルに 実装されているため、変更のたびにクラウドにデプロイするのではなく、自分のマシンでアプリを起動できます。

しかし、クラウド上のサービスを利用するには、Google に組み込まれたリモート APIコード)を利用することで、任意の Java アプリケーションから App Engine のサービスに透過的にアクセスできます。たとえば、リモート API を使用して、ローカルマシンで実行しているアプリから本番環境の Datastore にアクセスできます。Remote API を使用すると、特定の App Engine アプリケーションの Datastore に別の App Engine アプリケーションからアクセスすることもできます。

ランタイム フォルダでは、基盤となる Jetty サーブレット コンテナを使って App Engine アプリがどのように起動されるかを確認し、起動時にさまざまなコンポーネントやサービスがどのように構成されるかを理解できます。

現在オープンソース化されていないのは、App Engine を Google のインフラストラクチャである Borg クラスタ管理システムに結びつける特定のレイヤです。これは、デベロッパーが自分の環境で Google のバックエンド全体を簡単に複製できないためです。

オープンソース化する理由

お客様が特定のツールや環境、ベンダーに縛られず、ワークロードを別の場所で実行する自由を与え、Google が実際にどのようにコードを実行しているのかを理解していただくことが重要です。そのため、Google Cloud は オープン クラウドのアプローチを採用し、オープンソースのエコシステムに積極的に参加しています。Google のオープン クラウド アプローチを利用すると、ソフトウェアの迅速な開発、イノベーションの加速、さらに効率的なスケーリングを実現しながら、テクノロジー リスクを軽減できます。長年にわたり、大規模にコンテナを稼働させてきた経験をもとに、Kubernetes や、どこでも効率的に深層防御ができるコンテナ用のアプリケーション カーネルである gVisor サンドボックスなどが、さまざまなテクノロジーをオープンソース化してきましたが、App Engine の環境では gVisor がサンドボックス環境として先駆的なロールを果たしていました。

App Engine の Java ランタイムをオープンソース化することで、ローカルの開発環境、自社のデータセンターでのオンプレミス、あるいは Cloud Run のような他のコンピューティング プラットフォームなど、好きな場所で App Engine 環境全体を実行できるようにするための第一歩を踏み出しました。また、Google は Java プログラミング言語の新しい長期サポート バージョンをベースにした将来のランタイムへの移行を容易にするための重要な一歩を踏み出しました。

最後に、Java 8、Java 11、そして近々リリースされる Java 17 用の Java 実行環境をオープンソース プラットフォームでコンパイル、テスト、リリースできることは、単一の JDK ツールチェーンを含むすべてのものの単一バージョンのみをサポートすることを目的とした Google 内部の巨大なモノリポジトリ システムに依存するよりもはるかに簡単です。実行時に発生する例外に関する関連コードを見つけるための Javadocs や参照元を含むバイナリ アーティファクトを Maven 中央リポジトリで公開しています。

さらに詳しく見てみましょう

App Engine にまだ慣れていない方は、このパワフルでスケーラブルなサーバーレス アプリケーション プラットフォームに関するオンライン リソースを、Google のウェブサイトでぜひご覧ください。また、Java 8Java 11 スタンダード環境のチュートリアルを始めてみましょう。このオープンソースの App Engine Java ランタイムの詳細については、GitHub 上の Google のリポジトリをご覧いただき、サーバーレスの独自のノウハウがどのように作られているかをご確認ください。また、サポートや貢献については、新しいチケットを起票するか、pull リクエストを作成してください。皆様からの連絡をお待ちしています。

- App Engine Java ランタイム テックリード Ludovic Champenois

- デベロッパー アドボケイト Guillaume Laforge
投稿先