Undifferentiated Heavy Lifting の本質 - AWS が解決する問題と解決しない問題の境界線

AWS が繰り返し使う Undifferentiated Heavy Lifting というフレーズの真意を掘り下げ、マネージドサービスの責任境界、共有責任モデルの実態、フルマネージドの幻想と現実を解説します。

差別化につながらない重労働とは何か

Undifferentiated Heavy Lifting は、AWS のマーケティングや技術講演で頻繁に登場するフレーズです。2006 年に Jeff Bezos が MIT での講演で紹介したこの概念は、「どの企業がやっても同じ結果になる、差別化につながらない重労働」を意味します。サーバーのラッキング、ネットワークケーブルの配線、OS のパッチ適用、ストレージの容量管理、データセンターの空調管理。これらの作業は事業を運営するために不可欠ですが、どれだけ上手にやっても顧客がその企業を選ぶ理由にはなりません。AWS の提案は明快です。差別化につながらない重労働は AWS に任せ、企業は自社の競争優位性を生む活動に集中すべきだ、と。この提案自体は正しいのですが、実際にどこまでを AWS に任せられるのか、その境界線は思ったほど明確ではありません。

共有責任モデルの実態

AWS の共有責任モデルは、セキュリティの責任を「クラウドのセキュリティ」(AWS の責任) と「クラウド内のセキュリティ」(顧客の責任) に分けます。AWS はインフラストラクチャの物理的なセキュリティ、ハイパーバイザー、ネットワークの基盤を保護します。顧客はゲスト OS の設定、アプリケーションのセキュリティ、データの暗号化、IAM の設定を管理します。この分担は概念としては明快ですが、実務では境界が曖昧になるケースが頻繁に発生します。RDS を例に取ります。RDS は「フルマネージド」なリレーショナルデータベースサービスです。AWS がデータベースエンジンのインストール、パッチ適用、バックアップの自動化、フェイルオーバーを管理します。しかし、バックアップが自動で取られていても、リストアのテストは顧客の責任です。バックアップが正常に復元できることを定期的に検証しなければ、いざというときに復旧できない可能性があります。パラメータグループの設定、スロークエリの最適化、接続数の管理、暗号化の有効化もすべて顧客側の作業です。

マネージドの 4 段階 - 抽象度と制約のトレードオフ

AWS のサービスは、顧客が管理する範囲に応じて大きく 4 段階に分類できます。第一段階は EC2 に代表される IaaS です。仮想マシンが提供され、OS から上のすべてを顧客が管理します。自由度は最大ですが、OS のパッチ適用、ミドルウェアの設定、スケーリングの設計もすべて自分で行います。第二段階は ECS や EKS に代表されるコンテナマネージドです。コンテナのオーケストレーションは AWS が管理しますが、コンテナイメージの構築、アプリケーションの設定、ネットワーキングの設計は顧客の責任です。Fargate を使えばサーバーの管理からも解放されますが、コンテナの設計自体は変わりません。第三段階は Lambda に代表されるサーバーレスです。インフラの管理はほぼ完全に AWS に委ねられ、顧客はコードだけに集中できます。ただし、実行時間の上限 (15 分)、メモリの上限、コールドスタートのレイテンシといった制約を受け入れる必要があります。第四段階は Bedrock に代表されるモデルマネージドです。基盤モデルの学習、ホスティング、スケーリングをすべて AWS が管理し、顧客は API を呼び出すだけです。しかし、モデルの選択、プロンプトの設計、出力の品質管理は顧客の責任です。抽象度が上がるほど AWS が引き受ける範囲は広がりますが、同時に顧客が受け入れる制約も増えます。この制約が自分のユースケースに合わない場合、より低い抽象度のサービスを選ぶ必要があります。

フルマネージドの幻想 - 運用の自動化と設計の自動化は違う

マネージドサービスに対する最も危険な誤解は、「マネージドだから設計を考えなくてよい」という思い込みです。DynamoDB は「フルマネージド」な NoSQL データベースですが、パーティションキーの設計を間違えればホットパーティションが発生し、プロビジョンドキャパシティを超えるリクエストがスロットリングされます。テーブル設計、アクセスパターンの分析、GSI (グローバルセカンダリインデックス) の設計は、すべて顧客の責任です。Aurora は「フルマネージド」なリレーショナルデータベースですが、クエリの実行計画の最適化、インデックス設計、コネクションプーリングの設定は顧客が行います。Aurora がマネージドしているのは、レプリケーション、フェイルオーバー、ストレージの自動拡張といったインフラ層の運用です。Lambda は「サーバーレス」ですが、関数のメモリ設定がパフォーマンスとコストに直結します。コールドスタートを最小化するためのアーキテクチャ設計、同時実行数の制御、エラーハンドリングの設計は顧客の仕事です。つまり、マネージドサービスが自動化するのは「運用」であって「設計」ではありません。サーバーのプロビジョニング、パッチ適用、バックアップ、スケーリングといった運用タスクは AWS が引き受けますが、そのサービスをどう使うかという設計の責任は常に顧客にあります。

境界線の見極め方 - サービス評価のチェックリスト

新しいマネージドサービスを評価するとき、「何を引き受けてくれるか」だけでなく「何を引き受けてくれないか」を確認することが重要です。以下の観点で整理します。可用性について、SLA は何パーセントか、SLA を下回った場合の補償はサービスクレジットだけか、マルチ AZ やマルチリージョンの構成は自動か手動か。バックアップについて、自動バックアップの頻度と保持期間はどれくらいか、ポイントインタイムリカバリは可能か、リストアのテストは誰が行うか。セキュリティについて、保存時の暗号化はデフォルトで有効か、転送中の暗号化は強制されるか、アクセス制御の粒度はどこまで細かいか。スケーリングについて、自動スケーリングの上限はあるか、スケーリング時にダウンタイムは発生するか、スケールダウンの制約はあるか。モニタリングについて、どのメトリクスが標準で提供されるか、カスタムメトリクスの追加は可能か、アラートの設定は誰が行うか。これらの質問に対する回答が「顧客の責任」である項目が、マネージドサービスを使っていても自分で設計・運用すべき範囲です。 クラウドの運用設計を深く理解するには関連書籍 (Amazon) も参考になります。

まとめ

Undifferentiated Heavy Lifting の概念は、AWS が引き受ける責任の範囲を理解する出発点です。共有責任モデルは概念としては明快ですが、実務では境界が曖昧になるケースが多く、マネージドサービスの抽象度が上がるほど AWS の責任範囲は広がる一方で制約も増えます。最も重要な認識は、マネージドサービスが自動化するのは運用であって設計ではないということです。サービスの選定時には「何を引き受けてくれないか」を明確にし、自分の責任範囲を正確に把握することが、マネージドサービスを活用する上での本質的なスキルです。

同じテーマの記事

AWS AppFabric で SaaS 監査ログを集約 - OCSF 標準化と Security Lake 統合AppFabric による SaaS アプリケーションの監査ログ収集、OCSF 形式への標準化、分析パイプラインの構築を解説します。AWS AppConfig で実装するフィーチャーフラグ - 安全な設定デプロイとロールバックAppConfig によるフィーチャーフラグの管理、段階的デプロイ戦略、自動ロールバックの設定を解説します。アーキテクチャレビュー - AWS Well-Architected Tool でワークロードを体系的に評価するAWS Well-Architected Tool を使ったワークロードのアーキテクチャレビューを解説。6 つの柱に基づく評価、改善計画の策定、カスタムレンズの活用を紹介します。監査ログの設計と運用 - CloudTrail による API アクティビティの完全記録AWS CloudTrail を活用した監査ログの設計手法を解説し、API アクティビティの記録、S3 への長期保存、Config との連携によるコンプライアンス対応を紹介します。AWS Backup による一元バックアップ管理 - バックアッププランとクロスリージョン保護AWS Backup によるマルチサービスのバックアップ一元管理、バックアッププランの設計、Vault Lock によるコンプライアンス対応を解説します。AWS Chatbot で実現する DevOps 通知 - Slack ・ Teams への AWS イベント連携AWS Chatbot による Slack ・ Microsoft Teams への CloudWatch アラーム、CodePipeline、Security Hub の通知設定と ChatOps の実践を解説します。ChatOps 通知基盤 - AWS Chatbot で実現する運用自動化AWS Chatbot を活用した ChatOps 通知基盤の構築方法を解説します。Slack や Microsoft Teams への AWS イベント通知、CloudWatch アラームの即時配信、SNS 連携によるインシデント対応の自動化など、運用効率を向上させる実践的な設計を紹介します。AWS CloudFormation で実践する Infrastructure as Code - テンプレート設計とスタック管理CloudFormation によるテンプレート設計、スタックのライフサイクル管理、ネストスタックの活用を解説します。AWS CloudShell で即座に始める AWS 操作 - ブラウザベースのシェル環境活用術CloudShell のブラウザベースシェル環境、プリインストールツール、永続ストレージの活用法を解説します。AWS CloudTrail で実現する API 監査ログ - 証跡の設計とセキュリティ分析CloudTrail による API アクティビティの記録、証跡の設計、CloudTrail Lake によるクエリ分析を解説します。Amazon CloudWatch で構築する統合監視 - メトリクス、ログ、アラームの設計CloudWatch によるメトリクス監視、ログ集約、アラーム設計、ダッシュボードの構築を解説します。AWS Config で実現する継続的コンプライアンス監視 - ルール評価と自動修復AWS Config によるリソース構成の記録、Config ルールによるコンプライアンス評価、自動修復アクションの設定を解説します。AWS Control Tower でマルチアカウント環境を構築 - ランディングゾーンとガードレールControl Tower によるランディングゾーンのセットアップ、ガードレールの適用、Account Factory の活用を解説します。AWS Control Tower で構築するマルチアカウント環境 - ランディングゾーンとガードレールControl Tower によるランディングゾーンの構築、ガードレールの設計、Account Factory によるアカウント自動作成を解説します。Amazon CloudWatch RUM でフロントエンドのパフォーマンスを監視 - リアルユーザーモニタリングCloudWatch RUM による Web アプリケーションのクライアント側パフォーマンス監視、エラー追跡、ユーザージャーニー分析を解説します。AWS Health Dashboard で構築するインシデント管理 - 障害通知の自動化と影響分析Health Dashboard によるサービス障害の検知、EventBridge 連携による自動通知、Organizations 統合による組織全体の影響分析を解説します。IT サービスプロビジョニング - AWS Service Catalog で実現するセルフサービス型インフラ提供AWS Service Catalog による承認済み IT サービスのカタログ化と、CloudFormation との連携によるセルフサービス型インフラプロビジョニングを解説します。ガバナンスを維持しながら開発チームの自律性を高める運用パターンを紹介します。Amazon Managed Grafana で構築する統合オブザーバビリティダッシュボードManaged Grafana による CloudWatch、Prometheus、OpenSearch のデータソース統合、ダッシュボード設計、アラート管理を解説します。Amazon Managed Service for Prometheus によるコンテナモニタリング - EKS メトリクスの収集と分析Managed Prometheus による EKS/ECS のメトリクス収集、PromQL によるクエリ、Managed Grafana との統合を解説します。AWS Marketplace でソフトウェアを調達 - SaaS サブスクリプションとプライベートオファーMarketplace によるサードパーティソフトウェアの検索・購入、プライベートオファー、一括請求の活用を解説します。ML ベースの運用異常検知 - Amazon DevOps Guru で障害を予兆段階で発見するAmazon DevOps Guru を使った ML ベースの運用異常検知を解説。CloudWatch メトリクスの自動分析、異常の予兆検知、推奨アクション、CloudFormation スタック単位の監視を紹介します。マルチアカウント管理 - AWS Organizations と RAM で実現する組織全体のガバナンスAWS Organizations によるマルチアカウント戦略の設計と、AWS RAM (Resource Access Manager) によるリソース共有の実践手法を解説します。組織全体のセキュリティガバナンスとコスト管理の最適化パターンを紹介します。マルチアカウント戦略と AWS Organizations - クラウドガバナンスの最適解AWS Organizations を活用したマルチアカウント戦略を解説します。運用監視の実践 - CloudWatch によるフルスタック可観測性の実現AWS CloudWatch を中心とした運用監視の設計手法を解説し、メトリクス収集、ログ分析、アラーム設定による包括的な可観測性の実現方法を紹介します。AWS Organizations で実現するマルチアカウント管理 - OU 設計と SCP によるガバナンスOrganizations による OU 階層の設計、SCP によるアクセス制御、一括請求によるコスト管理を解説します。AWS RAM で実現するクロスアカウントリソース共有 - VPC サブネットと Transit Gateway の共有RAM によるリソース共有の設定、VPC サブネット共有によるマルチアカウントネットワーク設計を解説します。レジリエンス評価 - AWS Resilience Hub でアプリケーションの耐障害性を定量化するAWS Resilience Hub を使ったアプリケーションの耐障害性評価を解説。RTO/RPO の定義、レジリエンスポリシー、自動評価、改善推奨事項の活用を紹介します。AWS Resilience Hub でアプリケーションの耐障害性を評価 - RTO/RPO 目標の達成状況を可視化Resilience Hub によるアプリケーションの耐障害性評価、RTO/RPO ポリシーの設定、改善推奨事項の活用を解説します。リソース共有管理 - AWS RAM で実現するマルチアカウント環境の効率的なリソース活用AWS RAM (Resource Access Manager) によるマルチアカウント環境でのリソース共有と、AWS Organizations との連携による組織全体のリソース管理を解説します。VPC サブネット共有やトランジットゲートウェイ共有の実践パターンを紹介します。AWS Service Catalog で実現する IT ガバナンス - 承認済み製品の標準化とセルフサービスService Catalog による承認済み AWS リソースのカタログ化、ポートフォリオ管理、エンドユーザーへのセルフサービス提供を解説します。AWS Systems Manager Parameter Store で管理する設定と秘密情報 - 階層構造と暗号化Parameter Store による設定値と秘密情報の管理、階層構造の設計、Secrets Manager との使い分けを解説します。AWS Systems Manager によるフリート管理 - パッチ適用・インベントリ・ Run Command の自動化Systems Manager による EC2 フリートのパッチ管理、インベントリ収集、Run Command によるリモート操作の自動化を解説します。システム運用管理の効率化 - Systems Manager による統合運用基盤の構築AWS Systems Manager を活用したシステム運用管理の設計手法を解説し、パッチ管理、パラメータストア、Run Command による運用自動化の実現方法を紹介します。AWS Trusted Advisor でベストプラクティスを自動チェック - コスト削減とセキュリティ改善Trusted Advisor によるコスト最適化、セキュリティ、パフォーマンス、耐障害性のチェックと改善を解説します。AWS 環境の最適化診断 - Trusted Advisor によるベストプラクティスチェックAWS Trusted Advisor を使った環境の自動診断を解説。コスト最適化・セキュリティ・耐障害性・パフォーマンス・サービス制限の 5 カテゴリのチェック項目と活用方法を紹介します。AWS Well-Architected Tool でワークロードをレビュー - 6 つの柱に基づくアーキテクチャ改善Well-Architected Tool による 6 つの柱のレビュー、リスク評価、改善計画の策定を解説します。