8
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?

More than 1 year has passed since last update.

Tips: RubyのCloud FunctionsのCold start時の立ち上がりを早くする

Last updated at Posted at 2023-04-22

この記事は何

Cloud Functionsで開発をしているときにぶつかる問題として「Cold start問題」があると思います。
色々調べている中で、Cloud Functionsの立ち上がりを高速化する上でのテクニックがあったので記事に残します。
特にランタイムにRubyを選んだ時の実装方法を紹介します。

app.rbの読み込みが遅い

Cloud FunctionsのランタイムにRubyを選択すると、app.rbにイベントに対しての処理を記述すると思います。
単一リポジトリなどで開発を行っているケースだと、app.rbに複数のイベント処理の定義がされることもザラにあると思います。

app.rb
require_relative './functions/function1'
require_relative './functions/function2'
...
functions/function1.rb
require 'functions_framework'

FunctionsFramework.http 'function1' do |request|
...
end

functions/function2.rb
require 'functions_framework'

FunctionsFramework.http 'function2' do |request|
...
end

以下の記事の通り、それぞれの処理の読み込みはある程度の時間がかかるため、本来であれば実行される関数に関わる処理のみをロードするようにして、読み込みの速度をあげたいです。

解決方法

Cloud FunctionsのランタイムにRubyを選択した時、ビルド時、実行時に関数名はFUNCTION_TARGETという環境変数に保存されています。
特に関数名をファイル名を一致させている場合は、以下のような処理をapp.rbに記述するだけで実現できます

app.rb
require_relative "./functions/#{ENV['FUNCTION_TARGET']}"

Ref

8
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
8
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?