LoginSignup
3
3

Azure でマイクロサービスといえば Azure Spring Apps かもしれない

Last updated at Posted at 2023-08-20

Azure Spring Apps って何?

 以前は Azure Spring Cloud と呼ばれていたこのサービス、名称変更して現在(2023/8現在)は Azure Spring Apps となりました。 Spring Cloud と聞くと本家 Spring の方の Spring Cloud としか思えませんから、この名称変更は悪くはありませんでした。(本家には Spring Cloud Azure というのもあってさらにややこしいのです)

では、 Azure Spring Apps とはなんでしょうか?  Microsoft 公式によると

Azure Spring Apps では、コードを変更せずに、Spring Boot アプリケーションを Azure に簡単にデプロイできます。

と書かれています。

 この説明を見て、なるほど!と思う人はいないでしょう。コードを変更しないでホストするなんて普通のことですし、また Spring Boot を使った Java アプリケーションしかホスティングしないんだな、と理解することでしょう。

 でも Azure Spring Apps 以外でも Azure で Spring Boot アプリケーションをホストする PaaS はあります(Azure App Service や Azure Container Appsなど)ので、この説明では Azure Spring Apps の存在理由が全く理解できません。そもそも Azure Spring Apps は Java 以外の言語で作られたアプリケーションもホスティング可能なのです。一文で簡潔に説明する必要があるとしても、この説明はひどいです。というわけで、この説明はお願いです、忘れてください!

では Azure Spring Apps とはなんでしょうか。あくまで私が個人的に考える Azure Spring Apps とは?

1. Kubernetes の知識不要!マイクロサービス専用のPaaS

 マイクロサービスをホスティングする場合、アプリをコンテナ化して Kubernetes でホストする方式が主流かと思います。 Azure Spring Apps は Kubernetes を基盤にしていますが、Kubernetes を全く意識することなく扱うことができます。そのため、Kubernetes の知識は不要で、Kubernetes を扱うための yaml ファイルを作成・更新して管理する必要もありません。

 そしてマイクロサービスを構築する時にあった方が便利な機能を Azure Spring Apps は備えています。

  • VMware Spring Cloud Gateway
    • OSS の Spring Cloud Gateway をベースに商用にフィルターを追加してあるものです。Spring とついているので Java 専用に感じますが、そんなことはありません。
  • Service Connector
    • Redis Cache や MySQL、PostgreSQLなど他の Azure の PaaS との紐付けを行うことで、アプリではその接続情報を環境変数として取得することができるようになります。また専用のライブラリを使うことで接続情報を意識せずにアプリから簡単にアクセスすることも可能です。
  • Application Configuration Service
    • Kubenetes の ConfigMap の値を GitHub などの外部Gitリポジトリと連動できる機能です。Key-Valueの形式で環境変数として値を取得できます。動的に値が変更されるため、FeatureFlagに使うこともできますね。

他にも特徴的な機能がいくつかありますが、主に使うのはこの3つでしょう。

2. アプリをイメージ化するための手間がゼロ

 Kubernetes が基盤ということは稼働するアプリケーションはコンテナ化されている必要があります。ということは通常は Dockerfile を作り、コンテナレジストリを用意してイメージを Push し、それからやっとデプロイできます。非常に手間がかかります。一度 CI/CD 環境を構築してしまえばそれ以降はソースをリポジトリに Push するだけにはなりますが、その構築には多大な工数がかかります。また、工程が多いということはそれだけ複雑さが増しているわけですから、トラブルが増えるということを意味します。

 Azure Spring Apps では Azure Spring Apps にソースを Upload すればビルド、イメージ化、コンテナのデプロイまでワンストップに(一気通貫に)やってくれます。つまり、Dockerfile を作る必要もありませんし、コンテナレジストリを用意する必要もありません。CI/CD 環境の構築の大半が不要なのです。自分達で構築する CI/CD の範囲は、GitHub のような Git リポジトリにソースが push されたら Azure CLI で Azure Spring Apps にソースを Upload するスクリプトを書くだけです。もちろん、必要であれば自分でビルド・イメージ化してコンテナレジストリに Push した結果をデプロイすることも可能です。(その場合、自分でコンテナレジストリを用意する必要があります)

マイクロサービスに開発に集中できる PaaS

 インフラの観点からすると PaaS はインフラに関する余計な手間をかけることなくプロビジョニングできる点が素晴らしいわけですが、例えクラウドで提供される マネージド Kubernetes を採用したとしてもコンテナでマイクロサービスを構築する場合は開発者にとっての負担がとても大きくなります。その負担を大幅に軽減してくれるのが Azure Spring Apps と言えるでしょう。

 そして声を大にして言いたいのが、Azure Spring Apps は Spring Boot 専用の PaaS ではない、という点です。 .NET アプリや Python、PHP、Go 言語のアプリケーションもホスティング可能です。コンテナ化してしまえば言語関係なく動作するのは当たり前です。このような多言語対応のアプリケーションのことを Azure Spring Apps では Polyglot(多言語話者)と表現しています。Azure Spring Apps では Enterprise Tier がこの Polyglotに対応しています。

開発言語別の Tips を書いていこうと思っています

 Azure Spring Apps についての Tips は開発言語別に必要です。私は .NET エンジニア歴が長いので .NET アプリケーションを Azure Spring Apps で使用する Tips を書くことはできます。Javaもちょこちょこと齧っているので大丈夫でしょう。他言語は手探りですが、少しずつ進めたいと思います。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3