サーバーレスとは?コスト0から始めるインフラ不要の開発モデル

システム開発・テクノロジー
サーバーレスとは?ざっくりと3行で
  • サーバーの構築・管理をクラウド事業者に完全委ねて開発者はコードを書くことだけに集中できる仕組み。「サーバーがない」ではなく「サーバーを意識しなくていい」が正確な意味だ
  • 処理が実行された時間・回数分だけ課金される従量課金制なので、アクセスがゼロの時間帯は料金が発生しない
  • 自動スケーリングが標準機能のため、急激なアクセス増加にも無停止で対応でき、スモールスタートから大規模まで一貫して使える

【深掘り】これだけ知ってればOK!

サーバーレスの代名詞として語られるAWS Lambdaが登場したのは2014年。それ以前は「インフラをゼロから立てずにコードだけを実行する」という概念は事実上存在しなかった。Lambdaの登場がサーバーレスという概念を市場に定義したと言っても過言ではない。

問題提起から入ると理解が早い。従来のサーバー運用では、アクセスが来ない深夜2時でもサーバーは稼働し続け、コストが発生し続けた。月に数回しか実行されないバッチ処理のためにインスタンスを常時起動し続けることに、どれだけの企業が無駄なコストを払ってきたか、想像してみてほしい。

サーバーレスはこの問題を根底から変えた。コードは「関数(Function)」単位で登録しておき、イベントが発火したときだけ実行環境が起動し、処理完了後は即座に解放される。実行時間が100ミリ秒なら、その100ミリ秒分だけ課金される仕組みだ。使った分だけ払うという考え方は、スタートアップから大企業まで、コスト効率を根本から変えた。

サーバーレスにはコールドスタート問題がある。一定時間アクセスがなかった後の最初のリクエストで、実行環境の起動に数百ミリ秒〜数秒かかることがある。決済やリアルタイム処理など応答速度が重要な機能では、この遅延が致命的になりうるため、ウォームアップ処理や最小インスタンス数の設定で対策する必要がある。

代表的なサービスを押さえておこう。AWS Lambda・Google Cloud Functions・Azure Functionsが三大クラウドの主力プロダクトだ。加えてVercel・Netlify Functionsなどフロントエンドよりのサーバーレスプラットフォームも登場しており、Webアプリ開発者が最初にサーバーレスに触れる入口として定着している。

よくある誤解

サーバーレス=サーバーが存在しない、は間違い

名称から「物理サーバーが消える魔法の技術」だと受け取る人が後を絶たない。実際には、バックエンドに物理サーバーは当然存在する。違いは「誰がそのサーバーを管理するか」だ。OS更新・スケーリング・セキュリティパッチ適用といった面倒な運用作業をすべてクラウド事業者が担い、開発者はアプリケーションロジックのみに集中できる設計になっている。

すべてのワークロードに向いているわけではない

常時大量のトラフィックが流れる処理にサーバーレスを使うと、コールドスタートの問題が頻発したり、従量課金が想定以上の費用を生んだりするケースがある。長時間実行が必要な処理にも向かない。AWS Lambdaには実行時間の上限(最大15分)が設けられており、長時間バッチには不適だ。向いている用途は、イベント駆動の非同期処理・画像リサイズ・Webhook受信・API Gateway連携など、処理が短時間で完結するものに絞られる。

サーバーレスにすればコストが必ず下がるとは限らない

従量課金制は低トラフィック帯域では圧倒的にコスト効率が高いが、常時高負荷のサービスでは逆転することがある。リクエスト数が非常に多いケースでは、EC2インスタンスを予約購入するほうがトータルコストが低くなる場合もある。導入前に想定リクエスト数をもとにしたコスト試算を行うことが重要だ。

会話での使われ方

ITKAGYO運営者のアイコン画像

この通知機能、月に数回しか動かないのにサーバー常時起動はもったいないですよね。Lambdaでサーバーレス化したらほぼゼロコストになると思います。

コスト削減レビューの場で、バックエンドエンジニアがプロダクトマネージャーに改善案を提案している場面。具体的な金額メリットを添えた説得力ある一言。

ITKAGYO運営者のアイコン画像

サーバーレスって名前、ちょっと誤解を招きますよね。サーバーがないわけじゃないのに。

勉強会後の雑談で、エンジニア同士が技術用語のネーミングについてざっくばらんに話している場面。

ITKAGYO運営者のアイコン画像

API連携のところはサーバーレスで組んでいます。スパイクアクセスが読めないサービスなので、オートスケーリングが自動でかかる構成にしておきました。インフラ管理の工数を開発チームが持たなくて済むのが一番の理由です。

システム提案書のレビュー会議で、エンジニアがクライアントの情報システム担当者に構成選定の理由を説明している場面。

【まとめ】3つのポイント

  • 「管理ゼロのクラウドキッチン」:サーバーレスとはインフラ管理をすべてクラウド事業者に委ね、開発者がコードだけに集中できる状態を指す。サーバーが消えるのではなく、意識しなくてよくなる
  • 使った分だけ払う従量課金でコスト構造が変わる:アイドル時間のコストがゼロになることで、低トラフィック・イベント駆動の処理では劇的なコスト削減が見込める
  • コールドスタートと実行時間制限を事前に把握せよ:向いていない用途に使うと、遅延やコスト超過が起きる。常時高トラフィックのサービスには従来型サーバーのほうが合理的なケースがある

よくある質問

Q
AWS LambdaとGoogle Cloud Functionsの違いは何ですか?
A

基本的な考え方は同じですが、統合できるサービスのエコシステムが異なります。AWS Lambdaは他のAWSサービス(S3・DynamoDB・API Gatewayなど)と密に連携できる点が強みです。Google Cloud FunctionsはBigQueryやFirebaseとの相性が良く、データ分析系やモバイルアプリのバックエンドに採用されることが多いです。既存インフラがどちらのクラウドにあるかで選択するのが実務的な判断基準です。

Q
サーバーレスはセキュリティ面で問題ありませんか?
A

OSやミドルウェアのセキュリティはクラウド事業者が担うため、その部分の脆弱性管理負荷は下がります。一方で、関数に与えるIAMロールの権限設定や、環境変数に書き込んだ機密情報の取り扱いは開発者側の責任です。最小権限の原則に従ったIAM設計と、Secrets Managerなどを活用した機密情報の外部化が現場での標準対策となっています。

Q
サーバーレスは個人開発や副業にも使えますか?
A

むしろ個人開発との相性は非常に良いです。AWS Lambdaの無料枠は月100万リクエスト・40万GB秒まで無料で、小規模な個人サービスなら費用ゼロで本番運用できます。サーバー管理の手間がなく、コードをデプロイするだけで動かせるため、エンジニアが副業やプロトタイプ開発でまず試す技術として人気があります。

Q
サーバーレスとコンテナ(Kubernetes)の違いは何ですか?
A

管理の抽象度が異なります。コンテナ(Kubernetes)は実行環境ごと管理できる柔軟性がある分、クラスターの設計・運用コストが生じます。サーバーレスはさらに上位の抽象レイヤーで、インフラをほぼ完全に隠蔽し、関数の記述だけで動かせます。常時稼働が必要で細かい制御が求めるシステムにはKubernetes、イベント駆動で短時間処理が中心ならサーバーレスと使い分けるのが現場の標準的な判断です。

【出典】参考URL

https://sakumaga.sakura.ad.jp/entry/serverless/ :サーバーレスの仕組み・コールドスタート・アーキテクチャ解説
https://newrelic.com/jp/blog/infrastructure-monitoring/what-is-serverless :サーバーレスのメリット・従量課金の仕組み
https://www.kagoya.jp/howto/it-glossary/server/serverless/ :サーバーレスの基礎とクラウドサービス比較
https://vtijapan.co.jp/what-is-serverless-and-advantages-disadvantages :サーバーレスのメリット・デメリット詳細

コメント

「IT用語、難しすぎて心が折れそう……」という方のための、ハードル低めな用語辞典です。

情報レベルは「基礎中の基礎」。会話を止めないためのエッセンスだけを抽出しています。分かりやすさを追求するあまり、時々例え話が暴走しているかもしれませんが、そこは「ほどよく」聞き流していただけると幸いです。
ほどよくIT用語辞典システム開発・テクノロジー
デプロイ太郎のSNSを見てみる!!
タイトルとURLをコピーしました