27 ポイント 投稿者 GN⁺ 2025-04-23 | 19件のコメント | WhatsAppで共有
  • サーバーレスは手軽に見えるが、実際には 複雑さ、制約、高コスト を招く構造である
  • コンテナは 移植性、状態保持、明確な制御 を提供し、ほとんどのユースケースにより適している
  • サーバーレスは コスト構造が不透明 で予測しにくく、構成要素間に 不要な複雑性 をもたらす
  • サーバーレスのスケーラビリティと手軽さは 限定的なユースケース にしか適していない
  • 実運用環境では コンテナベースのデプロイ のほうが単純で、スケーラブルで、コスト効率が高い

Serverless Is a Scam. Just Use a Container.

サーバーレスとは何か?

  • サーバーレスは 個々の関数単位でコードをデプロイ し、クラウドプラットフォームが実行とスケーリングを自動処理する方式である
  • しかし実際には次のような問題がある
    • 実行時間制限 (例: AWS Lambda は 15 分制限)
    • 状態保持不可 (実行のたびに初期化)
    • コールドスタート問題
    • デバッグしづらい環境
    • プラットフォームごとの設定と構成
    • 過剰な YAML の使用
  • シンプルに見えても、複雑な作業には不向き

コンテナ: シンプルで強力、そして良い意味で退屈

  • コンテナには次のような利点がある
    • 起動が速い
    • どの環境でも実行できる
    • 状態を保持できるDocker volume を使用)
    • 実行時間制限がない
    • デバッグ、ローカル開発、本番環境への移行が自由
  • 例示コード:
    docker run -v my-data:/data my-app
  • 結果として 状態を持つワークロード をどこでも一貫して実行できる
  • ベンダーロックインがなく、隠れたコストもなく、不要な構造変更もない

サーバーレスの価格設定: ユーザーを混乱させる

  • サーバーレスのコストは非常に複雑に構成されている
    • 呼び出しごとの料金
    • メモリ使用量
    • 実行時間
    • 転送データ量
    • リージョンごとの差
    • シークレットキーへのアクセス料金 など
  • 混乱を招く用語の例:
    • Provisioned Concurrency Units
    • GB-seconds
    • Requests Tier 1/2/3
  • 予測しにくい課金構造により、想定外の請求書 が発生しうる
  • 比較すると、月額 $5 の VPS は 予測可能な定額料金 であらゆるリソースを制御できる

「サーバーレスはスケールできる」への反論

  • サーバーレスは 技術的にはスケール可能 だが、実際にはほとんどのアプリでそこまで必要ない
  • 多くのアプリケーションが必要としているのは次のようなもの
    • 予測可能性
    • 監視しやすさ
    • 適切なリソース制限
    • 開発環境とステージング環境
  • コンテナベースならスケールも簡単
    replicas: 5
  • あるいはロードバランサーを使って水平スケールも可能

ステートレス設計は人為的な問題を生む

  • サーバーレスは 無条件にステートレス設計 を強いる
    • キャッシュ、セッション、一時ファイル、永続接続が使えない
  • その結果、必要になる要素は次のとおり
    • 外部データベース
    • 分散キャッシュ
    • ファイルストレージ
    • イベントバス
    • ステートマシン
  • 結局、「シンプルな」サーバーレスアプリが 6 個以上の SaaS 依存 を抱えることになる
  • 一方、コンテナでは次のことが可能
    • インメモリキャッシュ
    • ディスク書き込み
    • セッション保持
    • 無制限実行

「サーバーを管理したくない」への回答

  • サーバー管理なしでコンテナベースのプラットフォームを使う方法はある
    • Sliplane、Railway、Coolify などのプラットフォームを使う
    • 単純に VPS 上で Docker + systemd だけでも可能
  • Git ベースのデプロイ、ロールバック、ログ、メトリクスなど 運用のしやすさを確保 できる
  • システム全体に対する 理解と制御が可能

「サーバーレスのほうが安い」への反論

  • 呼び出し頻度が極めて低い場合は安くなることもある
  • しかし次の状況ではコストが急増する
    • トラフィックが一定以上になった場合
    • メモリ増加が必要な場合
    • 実質的な計算量が多い場合
    • データ転送が多い場合
  • サーバーレスはプラットフォームがすべてを隠すため、最適化が難しい
  • 一方、コンテナは
    • 安価なハードウェアでも継続実行できる
    • キャッシュやストレージと統合できる
    • ベンチマークやチューニングがしやすい
    • ミリ秒単位の課金がない

サーバーレスが実際に適しているケース

  • 次のような断続的でステートレスな作業に適している
    • イベント駆動関数 (例: 画像リサイズ)
    • めったに実行されない処理や Webhook
    • 内部ツール
    • POC
    • 素早いスケールアップ/ダウンが必要な場合
  • しかし 実際のアプリケーション では限界にぶつかり、
    • 時間、コスト、複雑さの面で 大きな代償 を払うことになる

コンテナがより良い選択である理由

  • コンテナは次を提供する
    • 移植性
    • 制御性
    • 単純さ
    • 透明性
    • 柔軟性
  • 単一または複数コンテナでのデプロイ、スケーリング、状態保持、バックグラウンド処理、DB 連携まで対応できる
  • コードを書き直さずにプラットフォーム移行も可能

要約 (TL;DR)

  • サーバーレスは理論上は魅力的に見える
  • 現実には:
    • 不透明
    • 高コスト
    • 過剰な複雑性
    • 過大宣伝
      > 始める前に自分に問いかけよう:
      > 「これ、ただコンテナで作れないだろうか?」
  • 答えが「はい」なら、コンテナから始めるほうがより良い選択

後続アクションの推奨

  • サーバーレスによって 想定外のコストや非効率なワークフロー を経験した事例の共有を勧める
  • 単純な問題を過度に複雑にしないこと

19件のコメント

 
nullvana 2025-04-27

xfaasもありますし、Cloudflare Workersもありますよね。少し偏った記事のように思います。

 
softer 2025-04-26

GPUをレンタルするとき、サーバーレス関数で少しだけ実行することを考えていたのですが、
コンテナでもそれはできますか

 
nemorize 2025-04-25

昔のPHPウェブホスティングサービスで、PHPを抜いてベンダーロック満載のJSを入れたら……
代表的なサーバーレスFaaSプラットフォームと見分けがつきにくい気がしてなりません。

もちろんPHPやJS/TSを主に使うクソ食い道楽の私は満足して活用していますが、
だからといって多くの人がこれをおいしいと評価する理由は、正直よくわかりません。

 
elbanic 2025-04-24

個人的な考えでは、ベンダーのサーバーレスサービスを利用するのは危険ですが、コンテナを使って会社独自にサーバーレス環境を提供するのは良いと思います。サーバーレスをサービスではなく一つの概念として活用すると良さそうですね。

 
pedogunu 2025-04-23

しばらく前に、Vercel が Edge rendering を断念したというツイートと動画[1]、そして serverless server(笑)[2] に関する記事が話題でしたよね。そのときに出た記事群と似た見解を持っている気がします。

個人的な意見ですが、フロントエンド開発者の立場からすると、ユーザーのリクエストに serverless function をぶら下げるのは、まだ先の話だと思います(作ろうとしているアプリケーションが MVP でないならなおさら)。

[1] https://youtu.be/lAGE-k1Zfrg
[2] https://vercel.com/blog/…
[2-1] https://bobaekang.com/blog/…

 
pedogunu 2025-04-23

もちろん、この投稿にも付いているように、かなり過激な釣り目的の文章っぽくはありますね :(

 
unknowncyder 2025-04-23

コンテナベースの環境(ECS Fargate中心、Kubernetesクラスター)とサーバーレス環境(AWS)の両方を経験した立場としては、そこまで強くは共感しませんね。

コンテナベース環境の長所として挙げられている点は、長所であると同時に短所にもなり得る部分です。

「直接制御できて状態を持てる」と言及されている部分は、いずれも管理ポイントになって運用難易度が高くなるとも言えるでしょうか。

私は、小規模な組織や、専門的なサーバー管理チームがない組織であるほど、サーバーレスを強く勧めますね。

ああ、コスト計算が複雑だったり予測しにくかったりする点、そしてベンダーロックインの問題については同意します。

 
unknowncyder 2025-04-23

開発体験とオブザーバビリティについて言及している方がいるので付け加えると、

初期の統合環境さえしっかり構築しておけば、コンテナベースに劣らない、あるいはコンテナベースよりもさらにネイティブに近い開発体験を実現できます。(そのためのさまざまなツールもあります)

オブザーバビリティについても、深くやろうとするなら、サーバーレスでもコンテナベースでも同じように簡単な問題ではありません。ログの集中管理、各種メトリクスの可視化、APM、CPU/メモリ使用率の可視化、そしてそれに応じたスケーリング戦略の策定など……

そこまでの段階でなければ、クラウドベンダーが基本的に提供するメトリクス/ログ統合が強力なので、大差ありません。

強めに言うなら、「サーバーレスをどこまでちゃんとやってみたんですか?」と聞きたくなりますね……😅

 
aer0700 2025-04-23

必要なエンドポイントの一部だけを Lambda で動かすほうがいいのでは、という気もします。そもそも私はサーバーレス開発の経験がないので何とも言えませんが、特殊ないくつかのケースでは良さそうにも見えるので。

 
skageektp 2025-04-23

この記事を書いた会社はコンテナホスティングプラットフォームの会社ですし、偏った視点で書いたのではないでしょうか(笑)

 
preserde 2025-04-23

以前もフロントエンド界隈で、nextjs(vercel)について懸念を示す netlify(競合他社)の開発者の文章を疑う方がいましたよね。コメントを見る限り、そこまで偏ってはいないようです。
私はフロントエンド側なので……こちらの分野にはあまり詳しくないのですが、「サーバーレス(サーバーはある)」というミームはよく見かける気がします(笑)

 
asheswook 2025-04-23

ネイティブと比べて開発体験が著しく劣ることが大きすぎる pain point であり、ソフトウェア自体がインフラ提供者に依存するようになるので、一度定着すると抜け出しにくくなります。リファレンスが明らかに少ないのはもちろん、可観測性もあまりに低いです。

Cloudflare は、少なくとも他社と比べればサーバーレスをうまくやろうとしているように思います。データベースもサーバーレス、Key-Value ストレージもサーバーレス、さらにはメッセージキューまでサーバーレスのものがあり……
(もちろん、こうなってくるとプラットフォームに完全に従属・拘束されるようで、抵抗感を覚えることもあります)

それでも、デバッグ、可観測性、そして開発体験が改善されないのであれば、依然として足踏み状態のままでしょう。

 
hilft 2025-04-23

Cloud Run でGO

 
bbulbum 2025-04-23

サーバーレスでサービスを運用するのは、間違ったツールを選ぶことだ。
サーバーレスが必要な特定の問題はある。断続的に使われる用途には適している。

 
tolluset 2025-04-23

サーバーレスコンテナサービスでも同じ意見なんでしょうか

従来のサーバーレスサービス(lambdaのようなもの)の問題のために、AWSがFargateを作り、さらにもっと簡単なApp Runnerまで作ったのに 🤔

しかも Google Cloud には、scale to zero の超優秀なサーバーレスコンテナサービスである Cloud Run まであるわけで

この中では個人的に Cloud Run がいちばん開発体験が良かったです

 
ndrgrd 2025-04-23

サーバーレス(サーバーはある)

 
GN⁺ 2025-04-23
Hacker Newsの意見
  • サーバーレスは初期の小規模プロジェクトには良かったが、AWS Lambdaは大規模アプリケーションでは保守地獄だという意見(ビルド、依存関係、デバッグ、デプロイの遅さなど)
    • それでも、2019年にデプロイしたLambdaベースのReactウェブアプリがいまでも何の変更もなく動作している点は印象的
    • 保守性の問題はフレームワークのせいだという反論もあり、モジュール設計とローカル開発を併用すれば大半は解決可能だという見方もある
    • Lambdaではしばしばランタイム更新が必要で、これは長いあいだ問題なく動いていたものが突然停止する形で表面化することがある
    • 依存関係が少なければ更新は容易だが、古いランタイムに依存している場合は事前の準備が重要
  • サーバーレスは断続的でステートレスなワークロードに適しており、内部/外部のJSON APIと相性が良い
    • ただ、感情的な記述を強めるよりも、サーバーレスが万能ではないことを明確に説明した方がよかったという意見
    • サーバーレスは自己回復力が高く、コンテナのようなステートフルなシステムより運用負荷が低い
    • それでもコンテナの開発モデルの方が優れているという意見もある — どこでも実行できる一方で、状態管理と拡張性には限界がある
  • コンテナは本質的にステートレスであり、そこに状態を追加できるだけだという指摘
    • 大きな組織では結局Kubernetes(K8s)が標準になりがちで、これはコンテナの簡潔さとは距離がある
    • K8sもプラットフォームチームがあればシンプルに運用可能だが、そのような環境は珍しいという指摘
  • GCP Cloud Runは過小評価されているサーバーレスプラットフォームで、実際に使用した分だけ課金されるため経済的
  • AWS LambdaでPostgres接続やbcryptの利用は可能だが、設定と実行が非常に煩雑だったというフィードバック
    • ドライバを自前でビルドする必要があり、libcのバージョン差による問題が発生
    • ローカルテスト環境も明確ではなく、試行錯誤が多かった
  • この投稿はまるでSliplaneの宣伝記事のように見えるという指摘
    • 「ビジネスロジックをLambdaに入れるより、クラウド環境をプログラミングするための用途として使うべきだ」という意見もある
    • サーバーレスのおかげで小規模チームでも大規模サービスを運営可能だが、複雑性の問題は依然として残る
    • コンテナ技術を学んだ人が自分の市場価値を高めるために、皆にコンテナ利用を強いているように見えるという批判もある
  • 第1世代サーバーレスプラットフォーム(AWS Lambdaなど)には拡張性と状態管理の難しさがある
    • 第2世代プラットフォームはコンテナベースのサーバーレスへと進化しているが、コンテナに状態を追加することはスケーリング時に大きな問題を引き起こす
    • 例: 「Docker volumeを追加して状態を維持する」は、拡張性を考慮していない危険な助言
    • 記事で言及された「コンテナ10台にスケール + 自前DB運用」などの内容は、現実的でないか非効率な主張と評価されている
  • 一部はこの記事を「公正な評価」だと見る一方、他の人たちは感情的すぎる、あるいは商業的意図が濃いと判断している
 
iolothebard 2025-04-23

そもそもSeverlessではなく、Serverleaseだった。

 
kaydash 2025-04-24

wwwww