サーバーレス vs コンテナ 迷ったら『処理時間』で判断しよう

これからオンラインのサービスを作ろうとした場合、『クラウドを利用しよう』となるのは必然です。
しかしながら、その先で更に選択があります。『サーバーレス』を利用するべきか、『コンテナ』を利用するべきか、という選択です。

これは難しい問題です。移植性・運用コスト・セキュリティ・保守のしやすさ……色々考えなければなりません。とても重要な問題ですが、考える時間が惜しい時もあるでしょう。

そのような際、まずは単純にさくっと判断できる要素が一つあります。それが『処理時間』です。

目次

サーバーレスが望ましいケース:1回の処理時間が”そこそこかかる”サービス

あなたが提供するサービスについて、頭の中でシミュレーションしてみましょう。
必要な情報を入力・アップロードして、顧客が処理のボタンを押したとします。その処理には何秒ほど掛かるでしょうか?もしくは、顧客に何秒ほど待ってもらえるでしょうか?

もし『処理にそこそこ時間が掛かる・そこそこ処理時間がかかっても顧客は待ってくれる』というサービスの場合は、サーバレスでの処理を視野に入れましょう。

理由を説明します。
サーバレスは基本的に『瞬時のレスポンスが苦手』です。
なぜかと言えば、サーバレスは常に待機している訳では無いからです。
最後の処理を実行した後、数分間なにも指示がこなければ、コールドスリープに入ります。

先程の例で言えば、顧客が処理のボタンを押した際、つまりイベントが発生した際に初めてコールドスリープから関数が呼び出され、環境が整えられ、その後始めて処理が実行されるのです。

実際に処理が開始するまでの時間は、必要なメモリ量等によって変動しますが、基本的には数ミリ~数秒かかると思っていてください。

『そのぐらいなら気にする必要はない』と思うかもしれませんが、Amazonが2007年に実施したテストでは、ページ読み込み時間が100ミリ秒増えるごとに、売上が1%ずつ低下したとのことです。
ならば、ユーザーがまだ顧客になるのを迷っている段階の処理では、サーバレスを利用することはあまりおすすめ出来ません。

『では、どんな時にサーバレスが使えるのか?』と疑問に思われるかもしれませんが、それは『顧客が時間が掛かることを受け入れている』ような場合です。

例えば、クラウドを介してファイルの送受信を行うサービスがあります。(Dropbox宅ファイル便等)

これはそもそもアップロード時間がかかりますし、
ユーザーはボタンを押した時点で『このサービスを利用する』ことを決めています。

ならば、数ミリ秒~数秒の処理時間が掛かったとしても、ユーザーが離脱することはないでしょう。

他にもいくつか上げておきましょう。
例えば『PDFをアップロードすれば、ChatGPTと会話ができるサービス』、『PNG画像を圧縮してくれるサービス』、『URLの短縮サービス』、『バッジ処理』、『バックアップ』、『社内ツールのセキュリティ認証』等です。

なお、処理時間が長い……といっても、上限はあります。
もし全体で15分を超えるような処理の場合、サーバレスのタイムアウト上限に引っかかる可能性が高いです。
なのでそのような長時間処理が必要なものは、逆にコンテナを利用しましょう。

コンテナが望ましいケース:レスポンス時間が短い必要があるサービス

一方で、『レスポンス時間が短い方が良い場合』や『常に稼働している必要がある』サービスの場合は、コンテナが望ましいと言えます。

例えば『一般的なブログ、企業サイト、メディアサイト』をサーバレスで作ることは可能ですが、
人が来なければ、開く際にコールドスリープから目覚める時間がかかって、ユーザーが離脱してしまいます。
もしそのサイトが成功し、人がひっきりなしにくるようになった場合には、もはやサーバレスを使う意味はなくなり、利用料だけが跳ね上がってしまうでしょう。

同様の理由で『TwitterやInstgramなどのSNS』も同じです。レスポンスが悪いSNSを使う人はいません。
『ECサイト・販売アプリ』といったものは、先程述べた通りサーバレスと極めて相性が悪いと言えます。コンテナで運用し、なるだけレスポンスを早くしましょう。

『ゲームサービス』についても、基本的に”処理時間が命”といえるサービスなので、コンテナが向いています。
ただし例外があります。ゲーム自体はユーザーの端末で処理を行い、ハイスコアの送信・受信のみをクラウド側で管理する場合です。
これは『サーバレスが向いている処理』ですね。ユーザーからスコアが送信された際だけ、関数が起動し処理が走る形となります。

なので、色々とざっくり『向いている・向いていない』を語りましたが、単体の処理ベースでそれらを判断することが必要と言えます。

判断がつかない場合のご相談は弊社へ

今回、サーバレスとコンテナの判断について『処理時間』にフォーカスしてお話しましたが、
あくまで処理時間は『最初の指標』であり、処理時間がそこそこ長いとしても、まだ『サーバレスを使う余地がある』という段階です。

ここから更に色々な要素を判断し、サーバレスを使うのか、コンテナを使うのか、といった判断を下す必要があります。

他の指標についても追々語ってまいりますが、是非AWSのドキュメントや下記のサーバレスについて書いた記事をご確認ください。

あわせて読みたい
【FaaS】サーバーレス開発のメリット・デメリット どんなアプリがサーバレスに向いている? 『サーバレス』という言葉をご存知ですか?聞き慣れない言葉かもしれませんが、この「サーバレス」は現在成長している技術の一つです。 2022年02月12日にREPORTOCEANが...

また、もっと具体的に『今考えているサービスについて、サーバレスなのかコンテナなのか知りたい』という場合は、直接ご相談に乗ることも可能です。

ぜひお気軽にご相談ください。最適なクラウド構成について細かくご説明・ご提案いたします!

お問合せ&各種リンク

presented by 

  • システム開発、アプリ開発
  • マッチングアプリ開発
  • インフラ構築支援等、なんでもご相談ください。
よかったらシェアしてね!
  • URLをコピーしました!
目次