コンテンツにスキップ
LinkedInX

クラウドアーキテクチャ入門

約10分

対象読者: 本番AIサービスの構成を理解したい方、クラウドアーキテクチャの基礎を学びたいエンジニア
前提知識: Python API呼び出し入門の基礎知識があると理解が深まります

クラウドアーキテクチャとは、アプリケーションやサービスをインターネット上のクラウドインフラ(AWS、GCP、Azureなど)で動かすための構成設計のことです。本番AIサービスでは、ユーザーのリクエストを受け取るAPIゲートウェイから、LLM API呼び出し、データベース、認証、監視まで、複数のコンポーネントが連携して動作します。

クラウドアーキテクチャを体系的に学ぶ順番

Section titled “クラウドアーキテクチャを体系的に学ぶ順番”

このセクションでは、本番AIサービスを支えるクラウドアーキテクチャの各要素を扱います。

  1. このページ: 本番AIサービスの全体構成と各コンポーネントの役割をつかむ
  2. API設計とAPIゲートウェイ: REST・GraphQL・gRPCの比較とレート制限・認証統合を学ぶ
  3. データベース設計パターン: RDB・ベクトルDB・キャッシュの使い分けを理解する
  4. 監視とオブザーバビリティ: ログ・メトリクス・トレーシングの設計を学ぶ
  5. デプロイとCI/CD: コンテナ・Kubernetes・GitHub Actionsを使ったデプロイを学ぶ

クラウドアーキテクチャの知識が必要な理由

Section titled “クラウドアーキテクチャの知識が必要な理由”

ローカルで動くAIスクリプトを本番環境に持っていくと、次のような課題に直面します。

  • 複数のユーザーが同時にリクエストしたとき、スケールできるか?
  • APIキーが漏洩しないよう安全に管理されているか?
  • システムがダウンしたとき、すぐに気づける体制があるか?
  • データベースのデータが消えないよう、バックアップがあるか?
  • デプロイするたびに手作業が発生しないよう自動化されているか?

クラウドアーキテクチャの知識は、これらの問題に対して体系的な答えを与えます。

graph TD
    User["ユーザー\n(ブラウザ/アプリ)"] --> CDN["CDN\nCloudflare / CloudFront"]
    CDN --> APIGW["APIゲートウェイ\nレート制限・ルーティング"]
    APIGW --> Auth["認証サービス\nOAuth2 / JWT"]
    Auth --> App["アプリケーションサーバー\nFastAPI / Node.js"]
    App --> DB["リレーショナルDB\nPostgreSQL"]
    App --> VDB["ベクトルDB\nPinecone / pgvector"]
    App --> Cache["キャッシュ\nRedis"]
    App --> Queue["メッセージキュー\nSQS / Pub/Sub"]
    App --> LLMAPI["LLM API\nAnthropic / OpenAI"]
    Queue --> Worker["非同期ワーカー"]
    Worker --> DB
    App --> Monitor["監視・ログ\nDatadog / CloudWatch"]
    APIGW --> Monitor
コンポーネント役割代表的なサービス
CDN静的ファイルをエッジで配信、DDoS対策Cloudflare、AWS CloudFront
APIゲートウェイリクエストのルーティング、レート制限、SSL終端AWS API Gateway、Kong、nginx
認証サービスJWT発行・検証、OAuth2フロー、セッション管理Auth0、AWS Cognito、自前実装
アプリケーションサーバービジネスロジック、LLM API呼び出し、レスポンス整形FastAPI、Express、Django
リレーショナルDBユーザー情報、会話履歴、設定データの永続化PostgreSQL、MySQL、Cloud SQL
ベクトルDB埋め込みベクトルの保存と類似検索(RAG用)Pinecone、pgvector、Weaviate
キャッシュ頻繁なリクエストへの高速レスポンス、セッション保存Redis、Memcached
メッセージキュー非同期処理、ピーク時のバッファリングAWS SQS、Google Pub/Sub、RabbitMQ
LLM APIテキスト生成・埋め込みの外部API呼び出しAnthropic、OpenAI、Gemini
監視・ログエラー検知、パフォーマンス監視、ログ集約Datadog、CloudWatch、Grafana

クラウドアーキテクチャの設計原則

Section titled “クラウドアーキテクチャの設計原則”

アプリケーションサーバーは、状態(セッション情報など)をメモリに持たない設計にします。状態はRedisやDBに外出しすることで、複数のサーバーインスタンスに負荷を分散(スケールアウト)できます。

各コンポーネントは必要最小限の権限だけを持ちます。アプリケーションサーバーはDBへの読み書きだけ、ワーカーはキューの読み取りだけ、という設計です。IAMロール(AWS)やサービスアカウント(GCP)で細かく制御します。

3. 障害に備えた設計(Fault Tolerance)

Section titled “3. 障害に備えた設計(Fault Tolerance)”

単一障害点(SPOF: Single Point of Failure)をなくします。DBはレプリカ(読み取り専用のコピー)を用意し、アプリケーションサーバーは複数台起動します。LLM APIが一時的に応答しない場合の再試行ロジックも必要です。

問題が発生したときに素早く原因を特定できるよう、3種類のデータを収集します。

種類内容ツール例
ログアプリケーションの動作記録、エラーメッセージCloudWatch Logs、Datadog
メトリクスレイテンシ、エラー率、CPU/メモリ使用率Prometheus、CloudWatch Metrics
トレースリクエストが各コンポーネントをどう通ったかAWS X-Ray、Jaeger、OpenTelemetry

ひとつのセキュリティ対策に頼らず、複数の層で守ります。

[CDN層] DDoS対策、WAF(Web Application Firewall)

[APIゲートウェイ層] レート制限、APIキー検証

[アプリケーション層] 認証・認可、入力バリデーション

[データ層] 暗号化、アクセス制御

最初から完全な構成を作る必要はありません。段階的にアーキテクチャを育てる考え方が実践的です。

graph LR
    A["フェーズ1\nMVP"] --> B["フェーズ2\n本番対応"]
    B --> C["フェーズ3\nスケール対応"]

    subgraph A["フェーズ1: MVP"]
        A1["単一サーバー\n(例: Railway, Render)"]
        A2["PostgreSQL\n(マネージド)"]
        A3["LLM API直接呼び出し"]
    end

    subgraph B["フェーズ2: 本番対応"]
        B1["コンテナ化\n(Docker)"]
        B2["認証追加\n(Auth0等)"]
        B3["監視追加\n(Datadog等)"]
    end

    subgraph C["フェーズ3: スケール対応"]
        C1["Kubernetes / ECS"]
        C2["CDN + APIゲートウェイ"]
        C3["キャッシュ・キュー追加"]
    end

一般のWebサービスと異なり、LLMを使うAIサービスでは次の点に注意が必要です。

LLMのレスポンスは生成に時間がかかります。ユーザー体験を改善するために、生成中のテキストをリアルタイムに送信するストリーミングレスポンス(Server-Sent Events や WebSocket)が重要です。

LLM APIはトークン数に応じた従量課金です。リクエスト数・トークン数を監視し、コスト上限アラートを設定します。同じリクエストへの重複した呼び出しをRedisでキャッシュすると、コストと速度の両方が改善します。

プロンプトインジェクション対策

Section titled “プロンプトインジェクション対策”

ユーザー入力にプロンプトを操作しようとする悪意ある文字列が含まれる場合があります。入力バリデーションと、システムプロンプトとユーザー入力を明確に分離した設計が必要です。

  • 本番AIサービスは、APIゲートウェイ・認証・DB・ベクトルDB・LLM API・監視が連携する多層構成
  • ステートレス設計・最小権限・障害対応・オブザーバビリティ・多層防御が基本原則
  • 最初はシンプルな構成から始め、段階的に機能を追加するのが実践的
  • LLM特有の課題(レイテンシ、コスト、プロンプトインジェクション)に対応した設計が必要

Q: AWS・GCP・Azureのどれを選べばいいですか?

A: 3つとも本番AIサービスを構築できます。日本国内では、既存の企業システムがAWSを使っている場合が多いため、AWS(特にAmazon Bedrock)が選ばれることが多いです。GCPはVertex AIとGeminiとの統合が強く、Azure はMicrosoft 365環境との親和性があります。

Q: コンテナとサーバーレスのどちらを使うべきですか?

A: LLMのレスポンスは生成に数秒〜数十秒かかるため、コールドスタートが問題になるサーバーレス(AWS Lambda等)は工夫が必要です。常時起動が前提のコンテナ(ECS、Cloud Run、Kubernetes)のほうが安定しやすいです。

Q: ベクトルDBは必須ですか?

A: RAGを使わないシンプルなAIチャットなら不要です。社内文書検索やパーソナライズ機能を追加する場合に必要になります。小規模なら、PostgreSQLのpgvector拡張で始めるのが手軽です。

Q: 個人開発で本番AIサービスを動かすには?

A: Railway、Render、Flyなどのマネージドサービスを使うと、Dockerfileがあればサーバー管理なしで本番デプロイできます。PostgreSQLも同じプラットフォームで提供されるため、初期コストを抑えられます。

このページの外部仕様・背景情報は、参考文献を参照してください。[1][2][3][4][5]

  1. AWS Well-Architected Framework
  2. Google Cloud Architecture Framework
  3. The Twelve-Factor App
  4. OpenTelemetry Documentation
  5. FastAPI Production Deployment