サーバーレス vs コンテナ 迷ったら『処理時間』で判断しよう
- 土門 大貴
- 記事制作日2023年6月29日
- 更新日2023年10月21日
- 0いいね!
これからオンラインのサービスを作ろうとした場合、『クラウドを利用しよう』となるのは必然です。
しかしながら、その先で更に選択があります。『サーバーレス』を利用するべきか、『コンテナ』を利用するべきか、という選択です。
これは難しい問題です。移植性・運用コスト・セキュリティ・保守のしやすさ……色々考えなければなりません。とても重要な問題ですが、考える時間が惜しい時もあるでしょう。
そのような際、まずは単純にさくっと判断できる要素が一つあります。それが『処理時間』です。
サーバーレスが望ましいケース:1回の処理時間が”そこそこかかる”サービス
あなたが提供するサービスについて、頭の中でシミュレーションしてみましょう。
必要な情報を入力・アップロードして、顧客が処理のボタンを押したとします。その処理には何秒ほど掛かるでしょうか?もしくは、顧客に何秒ほど待ってもらえるでしょうか?
もし『処理にそこそこ時間が掛かる・そこそこ処理時間がかかっても顧客は待ってくれる』というサービスの場合は、サーバレスでの処理を視野に入れましょう。
理由を説明します。
サーバレスは基本的に『瞬時のレスポンスが苦手』です。
なぜかと言えば、サーバレスは常に待機している訳では無いからです。
最後の処理を実行した後、数分間なにも指示がこなければ、コールドスリープに入ります。
先程の例で言えば、顧客が処理のボタンを押した際、つまりイベントが発生した際に初めてコールドスリープから関数が呼び出され、環境が整えられ、その後始めて処理が実行されるのです。
実際に処理が開始するまでの時間は、必要なメモリ量等によって変動しますが、基本的には数ミリ~数秒かかると思っていてください。
『そのぐらいなら気にする必要はない』と思うかもしれませんが、Amazonが2007年に実施したテストでは、ページ読み込み時間が100ミリ秒増えるごとに、売上が1%ずつ低下したとのことです。
ならば、ユーザーがまだ顧客になるのを迷っている段階の処理では、サーバレスを利用することはあまりおすすめ出来ません。
『では、どんな時にサーバレスが使えるのか?』と疑問に思われるかもしれませんが、それは『顧客が時間が掛かることを受け入れている』ような場合です。
例えば、クラウドを介してファイルの送受信を行うサービスがあります。(Dropboxや宅ファイル便等)
これはそもそもアップロード時間がかかりますし、
ユーザーはボタンを押した時点で『このサービスを利用する』ことを決めています。
ならば、数ミリ秒~数秒の処理時間が掛かったとしても、ユーザーが離脱することはないでしょう。
他にもいくつか上げておきましょう。
例えば『PDFをアップロードすれば、ChatGPTと会話ができるサービス』、『PNG画像を圧縮してくれるサービス』、『URLの短縮サービス』、『バッジ処理』、『バックアップ』、『社内ツールのセキュリティ認証』等です。
なお、処理時間が長い……といっても、上限はあります。
もし全体で15分を超えるような処理の場合、サーバレスのタイムアウト上限に引っかかる可能性が高いです。
なのでそのような長時間処理が必要なものは、逆にコンテナを利用しましょう。
コンテナが望ましいケース:レスポンス時間が短い必要があるサービス
一方で、『レスポンス時間が短い方が良い場合』や『常に稼働している必要がある』サービスの場合は、コンテナが望ましいと言えます。
例えば『一般的なブログ、企業サイト、メディアサイト』をサーバレスで作ることは可能ですが、
人が来なければ、開く際にコールドスリープから目覚める時間がかかって、ユーザーが離脱してしまいます。
もしそのサイトが成功し、人がひっきりなしにくるようになった場合には、もはやサーバレスを使う意味はなくなり、利用料だけが跳ね上がってしまうでしょう。
同様の理由で『TwitterやInstgramなどのSNS』も同じです。レスポンスが悪いSNSを使う人はいません。
『ECサイト・販売アプリ』といったものは、先程述べた通りサーバレスと極めて相性が悪いと言えます。コンテナで運用し、なるだけレスポンスを早くしましょう。
『ゲームサービス』についても、基本的に”処理時間が命”といえるサービスなので、コンテナが向いています。
ただし例外があります。ゲーム自体はユーザーの端末で処理を行い、ハイスコアの送信・受信のみをクラウド側で管理する場合です。
これは『サーバレスが向いている処理』ですね。ユーザーからスコアが送信された際だけ、関数が起動し処理が走る形となります。
なので、色々とざっくり『向いている・向いていない』を語りましたが、単体の処理ベースでそれらを判断することが必要と言えます。
判断がつかない場合のご相談は弊社へ
今回、サーバレスとコンテナの判断について『処理時間』にフォーカスしてお話しましたが、
あくまで処理時間は『最初の指標』であり、処理時間がそこそこ長いとしても、まだ『サーバレスを使う余地がある』という段階です。
ここから更に色々な要素を判断し、サーバレスを使うのか、コンテナを使うのか、といった判断を下す必要があります。
他の指標についても追々語ってまいりますが、是非AWSのドキュメントや下記のサーバレスについて書いた記事をご確認ください。
また、もっと具体的に『今考えているサービスについて、サーバレスなのかコンテナなのか知りたい』という場合は、直接ご相談に乗ることも可能です。
ぜひお気軽にご相談ください。最適なクラウド構成について細かくご説明・ご提案いたします!
お問合せ&各種リンク
お問合せ:GoogleForm
ホームページ:https://libproc.com
運営会社:TodoONada株式会社
Twitter:https://twitter.com/Todoonada_corp
Instagram:https://www.instagram.com/todoonada_corp/
Youtube:https://www.youtube.com/@todoonada_corp/
Tiktok:https://www.tiktok.com/@todoonada_corp
presented by
- この記事にいいね!する
この記事を書いた人
- 36いいね!
稼働ステータス
◎現在対応可能
- 土門 大貴
職種
エンジニア
システムエンジニア(SE)
希望時給単価
10,000円~30,000円
▼実績例 ・公共インフラ事業者様向け管理システム開発(Windows、Python、PostgreSQL) ・官公庁様向け地図情報アプリのインフラ開発(Windows、PostgreSQL) ・自治体様向けポイント管理サービスのAPI開発(Linux、PostgreSQL、JS、Python) ・大手製造業様向けクラウド環境開発支援(AWS全般、Terraform) ・公共事業様向け顔認証決算システム基盤開発(Windows、PostgreSQL、JS、Python) ・リース業様向け代理店向けWebAPI開発(AWS全般、GoLang、JS) ・通販サイトインフラ構築支援、要件定義~開発(AWS, ECCube) ・結婚相談所様向けオウンドメディア制作(WordPress、JS、ウェブディレクトションな)
スキル
Python
AWS
React
・・・(登録スキル数:6)
スキル
Python
AWS
React
・・・(登録スキル数:6)