| この記事の要点 |
|
Web サービスのプラットフォームとは
Web サービスを公開するには、必ずどこかのサーバ上でプログラムを動かす必要があります。自前のオンプレミスサーバから、フルマネージドなクラウドサービスまで選択肢は幅広く、これらをまとめてプラットフォームと呼びます。本ページは、本サイトで扱っている Web プラットフォーム関連記事の入口です。
プラットフォームの主な分類
| 分類 | 特徴 | 代表サービス |
|---|---|---|
| IaaS (Infrastructure as a Service) | 仮想マシン・ストレージ・ネットワークを丸ごと借りる。自由度高めだが OS 以降は自前運用 | AWS EC2 / GCP Compute Engine / Azure VM |
| PaaS (Platform as a Service) | アプリのコードを git push するだけで動く。ミドルウェア管理はサービス側 | Heroku / Render / Fly.io / Railway |
| FaaS / サーバレス | 関数単位で実行・課金。アイドルコスト 0、スケール自動 | AWS Lambda / Cloudflare Workers / Vercel Functions |
| 静的サイトホスティング | HTML/CSS/JS をエッジ配信。SSG / SPA 向け | Vercel / Netlify / Cloudflare Pages / GitHub Pages |
| コンテナ / Kubernetes | Docker イメージをそのまま動かす。マイクロサービス向け | AWS ECS/EKS / GCP GKE / Azure AKS |
主要プラットフォームの比較
| プラットフォーム | 得意領域 | 料金感 | 学習コスト |
|---|---|---|---|
| AWS | 本格運用・大規模・エンタープライズ | 従量、最適化必須 | 高 |
| GCP | 機械学習・BigQuery・コンテナ | 従量 | 中〜高 |
| Azure | Microsoft 系資産との連携・大企業 | 従量 | 中〜高 |
| Heroku | 素早く Web アプリを公開(Rails / Node)。2026-02 から新機能開発を止めた維持運用体制 | 固定 + アドオン | 低 |
| Vercel | Next.js / フロントエンド全般 | 無料枠あり / Pro $20〜 | 低 |
| Cloudflare | エッジ配信・Workers・KV / R2 | 無料枠太い | 低〜中 |
| Render / Fly.io | Heroku 後継的なフルスタック PaaS | Render は無料枠あり、Fly.io は新規の無料枠なし(2026-10 時点) | 低 |
選び方の指針
個人開発・プロトタイプ
立ち上げ速度と無料枠が決め手です。フロントエンドだけなら Vercel / Netlify / Cloudflare Pages、API も必要なら Render / Fly.io / Railway を試すと良いでしょう。
業務システム・本番運用
規模と SLA、組織のスキルセットで決まります。すでに社内で AWS を使っているなら AWS に寄せる方が運用コストが安く、ML が多いなら GCP、Microsoft 365 と統合するなら Azure というのが定石です。
サーバレス志向
イベント駆動 / 低トラフィックなら Cloudflare Workers や AWS Lambda が安価で柔軟です。コールドスタートと実行時間制限は事前に確認しておきます。
IaaS / PaaS / FaaS の境界
同じクラウドサービスでも、利用者が責任を持つ範囲が違います。IaaS では仮想マシンから上をすべて自分で構築・運用する必要があり、PaaS は OS とミドルウェアまでベンダー任せ、FaaS は関数のコードだけを書きます。運用者の人手が少ないほどマネージドの度合いが高いサービスを選ぶのが効率的です。
| レイヤー | IaaS | PaaS | FaaS |
|---|---|---|---|
| アプリ | ユーザ | ユーザ | ユーザ |
| ランタイム | ユーザ | ベンダー | ベンダー |
| OS / ミドルウェア | ユーザ | ベンダー | ベンダー |
| 仮想化 / ハードウェア | ベンダー | ベンダー | ベンダー |
サーバレスの典型的なメリット・デメリット
| 観点 | メリット | デメリット |
|---|---|---|
| 料金 | アイドル時間 0 円。実行回数課金で小規模に強い | 実行が長時間/高頻度になると割高化 |
| 運用 | OS パッチ・スケール設定が不要 | ベンダーロックインが起こりやすい |
| 起動 | イベント駆動で即起動 | コールドスタート遅延が問題になる場面あり |
| 開発 | 関数単位でデプロイが速い | 長時間バッチ・ステートフル処理が不向き |
プラットフォーム選定で確認すべきポイント
- 料金体系: 従量制か固定制か、無料枠の範囲、転送量課金の有無
- 対応ランタイム: 自分の使う言語・バージョンが公式対応か
- リージョン: 日本国内リージョンの有無と RTT
- 付帯サービス: マネージド DB、CDN、ストレージが揃っているか
- SLA とサポート: 商用利用に耐える SLA かどうか
- 法令・コンプライアンス: 個人情報保護法、GDPR、各業種ガイドラインへの対応
初学者がやりがちな失敗
- 無料枠だけで動かしたつもりが課金: 転送量・関数呼び出し回数・ストレージ I/O は無料枠でも上限があり、超えると即課金される。アラート設定を必ず入れる
- 本番リージョンを米国にしてしまう: 日本のユーザに向けるなら最低でも日本リージョンを選ぶ。RTT で体感がまるで変わる
- シークレットを環境変数 / 設定 UI で管理しない: API キーをコミットしてしまう事故が多い。Secret Manager 系を必ず使う
- サーバレス前提なのに長時間処理を書く: Lambda は 15 分で打ち切られ、Cloudflare Workers は CPU 時間に上限がある(無料 10 ミリ秒、有料は既定 30 秒・最大 5 分)。バッチ処理向けではない
- 静的ホスティングなのに動的処理を期待する: GitHub Pages はサーバ実行できない。フォーム送信などはサーバレス関数や外部サービスを併用する
料金最適化の基本
クラウドの請求額は、契約形態と使い方の組み合わせで大きく変わります。本番運用に入ったら以下を順番に検討します。
- 常時稼働する VM はリザーブドインスタンスやセービングプランで 30〜60% カット
- 転送量は CDN 経由にしてキャッシュヒット率を上げる
- 古いログ・バックアップは低価格ストレージ層に自動移動 (S3 IA / Coldline)
- 夜間に止められる開発環境はスケジュール停止
- 毎月のコストエクスプローラ確認を運用ルーチンにする
子ページから選択してください
本サイトでは、各プラットフォームの導入方法や使い方を個別記事で解説しています。サイドメニューの子ページ一覧から目的のプラットフォームを選択してください。
関連記事
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38