17
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

こんにちは、京セラコミュニケーションシステム 福留(@kccs_kazuo_fukudome)です。

先日、Cloud Run の新機能 CPU boost が発表されました。
参考:https://cloud.google.com/blog/ja/products/serverless/announcing-startup-cpu-boost-for-cloud-run--cloud-functions

Cloud Functions、Cloud Run で CPU boost 機能を利用すると、コールドスタートからの起動が早くなる、とくに Java アプリケーションでの効果が高いという説明でした。今回は Spring Boot アプリケーションで、簡単な REST API のアプリケーションのコンテナを作成し、CPU boost を利用した時と利用しない時で、どのくらいレスポンスタイムに差が出るのかを検証してみました。

本記事は 2022 年 11 月ごろに作成しております。
Google Cloud の機能を利用した場合は、利用料が発生します。

この記事の対象者

  • Web アプリケーションでバックエンド処理に Java を利用している人
  • Cloud Run で Java を利用したアプリケーションを作ってみたい人
  • Cloud Run の機能に興味がある人

Spring Boot アプリケーションの作成

今回は、Java + Spring Framework で、以下のようなメッセージのみ返却する REST API アプリケーションを作成しました。この REST API アプリケーションを Cloud Run へデプロイし、レスポンスタイムを計りました。Spring Boot を利用した Java アプリケーションの Cloud Run へのデプロイ方法については、参考となる HP が色々とありますので、そちらを見て頂ければと思います。

import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@CrossOrigin
public class HelloController {

	@GetMapping("/hello")
	@ResponseBody
	public String helloResponse() throws Exception {
		return "Hello World!! (GET METHOD)";
	}
}

CPU boost 機能なしの結果

作成した Cloud Run が、コールドスタートになるようにリクエストタイミングを調整し、レスポンスタイムを 3 回計りました。結果は、次の通りで、レスポンスタイムの平均は、11.22 秒となりました。
image1.png
image2.png
image3.png

CPU boost 機能ありの結果

次に、CPU boost 機能を使って、レスポンスタイムを計ります。CPU boost 機能の設定も簡単で、Cloud Run の設定画面で、次のオプションにチェックを入れるだけ。非常に簡単です。
image4.png

この状態で、CPU boost なしと同じ環境、タイミングでレスポンスタイムを計りました。結果は、次の通りで、レスポンスタイム平均は、5.53 秒となりました。
image5.png
image6.png
image7.png

料金について

CPU boost 機能を使うと、起動時に CPU の割り当てが 1 ~ 4 では 2 倍に、6 だと 8 になり、その起動時間に応じて課金が発生するようです。
参考:https://cloud.google.com/run/docs/configuring/cpu?&_ga=2.48985313.-635310204.1642555300#startup-boost

今回のような REST API アプリケーションだと、起動時間は 約 0.2 秒でした。アプリケーションの規模や利用するライブラリの数にもよりますが、CPU boost を使用した料金は、使用しない場合と、ほぼ変わらないと思います。

まとめ

Spring Boot アプリケーションで、CPU boost を利用すると、レスポンスタイムが、約 49% 改善しました。CPU boost を利用しても、約 5 秒ほどかかるので、高いレスポンスタイムが要求されるシステムでは、もう少しのスピード改善が必用かもしれません。ですが、レスポンスタイムがそれほど必要でないシステムでは、十分な結果だと思います。Java で作成したアプリケーションがあるのであれば、リソースの再利用もできるため、CPU boost を利用したシステム構築を検討してみても良いかと思います。

17
2
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
17
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?