このエントリーは、Azure Advent Calendar 2019の18日目エントリーです。(一日遅れすみません)
AzureといえばMicrosoftが運営しているクラウドということもあり、.NETをはじめとしてMicrosoft Technologyの印象が強いですが、 実際には様々なプログラミング言語をサポートするオープンなプラットフォームです。
その中でMicrosoftはプラットフォーム上で動作するプログラミング言語としてJavaを重視しており、Azure Kubernetes Service (AKS) や、 PaaSであるWeb apps、ServerlessとしてのAzure Functions上でのJavaサポートに積極的な投資を行っています。
その中で、Azure上でのJavaをサポートするプラットフォームとして新しく加わったのが、MicrosoftとPivotalが協働で開発したAzure Spring Cloud です。
Azure Spring Cloudは、Spring Bootベースのマイクロサービスのアプリケーションを動作することに最適化されたフルマネージドPaaSです。現在パブリックプレビュー版として、East US, West US 2, West Europe, and Southeast Asiaのリージョンで提供されています。
クイックスタート
ドキュメント クイック スタート:Azure CLI を使用して Java Spring アプリケーションを起動する を参照してアプリケーションを構築し、デプロイします。
サンプルアプリケーションは Azure-Samples/piggymetrics で公開されているアプリケーションです。
$ az extension add --name spring-cloud $ az group create --location southeastasia --name hellospringcloud-fieldnotes-jp $ az spring-cloud create -n hellospringcloud-fieldnotes-jp -g hellospringcloud-fieldnotes-jp $ az configure --defaults group=hellospringcloud-fieldnotes-jp $ az configure --defaults spring-cloud=hellospringcloud-fieldnotes-jp $ az spring-cloud config-server git set -n hellospringcloud-fieldnotes-jp --uri https://github.com/Azure-Samples/piggymetrics --label config
続いて、アプリケーションをビルドし、デプロイします。
$ git clone https://github.com/Azure-Samples/piggymetrics $ cd piggymetrics $ mvn clean package -D skipTests $ az spring-cloud app deploy -n gateway --jar-path ./gateway/target/gateway.jar $ az spring-cloud app deploy -n account-service --jar-path ./account-service/target/account-service.jar $ az spring-cloud app deploy -n auth-service --jar-path ./auth-service/target/auth-service.jar
az spring-cloud app update -n gateway --is-public true
コマンドで、外部からアクセスするエンドポイントを確認します。JSONの出力下部の "url"
の欄に出力されるURLにアクセスすると、次のような画面が表示されるはずです。
$ az spring-cloud app show --name gateway
Blue-Green Deployment
Azure Spring Cloudには、Blue Green Deploymentの仕組みが組み込まれています。
https://docs.microsoft.com/ja-jp/azure/spring-cloud/spring-cloud-howto-staging-environment
# CSSを編集 $ code gateway\src\main\resources\static\css\launch.css $ mvn clean package -D skipTests $ az spring-cloud app deployment create -g hellospringcloud-fieldnotes-jp -s hellospringcloud-fieldnotes-jp --app gateway -n green --jar-path gateway/target/gateway.jar
デプロイ後、ポータルのAzure Spring Cloudのポータルの「Deployments」からデプロイしたいアプリケーションを選択し、メニューの「Set deployment」を選択します。
ページを表示すると画面が切り替わっているので、ルーティングが切り替っていることが確認できます。
なお、ドキュメントでは、各DeploymentのOverviewで表示される「Test Endpoint」の欄からURLを取得することでステージング状態のアプリケーションにアクセスすることができるのですが、現時点ではログイン画面までは表示出来るのですが、その後のログイン処理時に以下の様なエラーとなり、アプリケーションを動作させることができませんでした。プレビューのステータスなので、今後細部の作り込みがされていくものと思われます。
デモ
マイクロソフト社のてらだよしおさんによるAzure Spring Cloudのデモ動画が公開されています。
でも、お高いんでしょう?
気になるお値段ですが、クイックスタートの構成を丸一日動かしておよそ3000円でした。
個人アカウントで止め忘れると痛いですが、検証として使う分にはぎりセーフなんじゃないかな…
と同時に、アプリケーションの基盤としてのコストをなるべく抑えたい場合は、これまでと同様、 WebApps(App Service)を選択することになりそうです。