3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Azure Spring Cloudでブルーグリーンデプロイメントする

Posted at


ブルーグリーンデプロイメントの話は勉強会で何回も聴いたことがあるのですが、実際に自分で手を動かして試したことはありませんでした。設定が大変そうだよなぁ、と思っていたのですが、Azure Spring Cloudでめちゃくちゃ簡単にできてびっくりしました。

手順はほぼこちらのドキュメントどおりです。

まずはAzure Spring Cloudインスタンスを作成します。画面でポチポチと作りました。間違えてBasicレベルを選択してしまったのですが、ブルーグリーンデプロイメントを試すにはStandardレベルが必要なのでご注意ください。(後から変えることは可能です)

スクリーンショット 2021-04-25 22.03.30.png

インスタンスの準備はこれだけです。

続いてデプロイするアプリケーションを作成します。環境はDocker上のDebianで作りました。Azure CLIのAzure Spring Cloud 拡張機能が必要なため、以下の3行目で追加しています。

FROM maven:3.8.1-openjdk-11

RUN curl -sL https://aka.ms/InstallAzureCLIDeb | bash
RUN az extension add --name spring-cloud

VSCodeの拡張機能「Spring Initializr Java Support」でspring-boot-starter-webだけ追加したプロジェクトを作ります。

helloを表示するだけの簡単なアプリケーションです。

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping;

@SpringBootApplication
@RestController
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

	@GetMapping("/hello")
	public String hello() {
		return "hello";
	}
}

ビルドします。

mvn clean packge -DskipTests

Azureにログインします。

az login

インスタンス上にdemoというアプリ(の雛形?)を作ります。

az spring-cloud app create -n demo -g springcloudrg -s kikutarospringcloud --assign-endpoint

デプロイします。

az spring-cloud app deploy -n demo -g springcloudrg -s kikutarospringcloud --jar-path target\demo-0.0.1-SNAPSHOT.jar

アプリのURLが表示されているので、末尾に /hello をつけてアクセスします。

スクリーンショット 2021-04-26 19.40.08.png

helloが表示されました。

スクリーンショット 2021-04-26 13.02.44.png

続いて、更新したアプリケーション(グリーン)を作成してデプロイします。コードは「hello」を「hello new release!」に変えただけです。

@GetMapping("/hello")
public String hello() {
    return "hello new release!";
}

ビルドします。

mvn clean packge -DskipTests

グリーンデプロイ(と呼ぶらしい)します。

az spring-cloud app deployment create -n green --app demo -g springcloudrg -s kikutarospringcloud --jar-path target\demo-0.0.1-SNAPSHOT.jar

私は最初以下のエラーになりました。

Basic sku only allows 1 deployment under one app.

これは最初に書いた通り、プランがBasicでブルーグリーンデプロイメントに対応していないためです。画面からStandardプランにアップグレードして、再度デプロイしたら成功しました。

スクリーンショット 2021-04-26 12.58.36.png

デプロイメニューを見ると、defaultとgreenの2つが並んでいます。

スクリーンショット 2021-04-26 12.59.53.png

あとはgreenの方のメニューから「運用環境として設定」を選べば、こちらに切り替わります。

スクリーンショット 2021-04-26 13.01.07.png

切り替えて再度アクセスすると、ちゃんと「new release!」がついた新しいアプリケーションに切り替わっています。

スクリーンショット 2021-04-26 13.01.40.png

こんなに簡単にブルーグリーンデプロイメントができるんだ...!と地味に感動しました。(すごい今更ですが...)

Spring Cloudの話はかなり前にJJUGの勉強会で聴いていましたが、当時はなんとなく敷居が高そうだなぁ...と思って触っていませんでした。

今回、Azure Spring Cloudを触ってみましたが、すごく簡単でした。Spring Cloudについて改めて勉強したいなーと思いました。

3
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?