クラウドへの移行を検討するとき、こんな疑問が浮かんだことはないだろうか。
「MySQLをAWS上に移行するなら、EC2に自分でインストールするのと、RDSを使うのと、どっちが正解なんだ?」
オンプレでは自分でミドルウェアをインストール・設定・管理するのが当たり前だった。それがクラウドになっても「自分でやる」派のエンジニアは多い。一方でクラウドが提供するマネージドサービスは確かに便利だが、「ベンダーロックインが怖い」「カスタマイズできないのでは」という懸念も根強い。
この記事では、マネージドサービスとセルフマネージドの本質的な違いを整理し、DB・ミドルウェア・コンテナ基盤など主要カテゴリ別にAWSとAzureのサービス対比と選定の判断軸を解説する。「どちらが正しい」という答えはなく、ユースケース・チームのスキルセット・コスト・運用負荷を総合して判断するためのフレームワークを提供する。

マネージドサービス vs セルフマネージドとは何か
まず基本的な定義を確認しよう。
セルフマネージド(Self-Managed)とは、EC2やAzure VMなどの仮想マシン上に、MySQLやKafka、Redisなどのミドルウェアを自分でインストール・設定・運用する方式だ。オンプレのサーバーで管理していたのと同じアプローチをクラウドに持ち込む形で、「Lift & Shift」移行でよく見られる。
マネージドサービス(Managed Service)とは、インフラ層の運用(OSのインストール・パッチ適用・フェイルオーバー設定など)をクラウドベンダーが担当し、ユーザーはアプリケーション層の設定と利用に専念できる方式だ。Amazon RDS、Amazon ElastiCache、Amazon MSKなどがその代表例となる。
| 観点 | セルフマネージド | マネージドサービス |
|---|---|---|
| 運用責任 | OS・ミドルウェア含めユーザー負担 | クラウドベンダーがインフラ層を担当 |
| パッチ適用 | 自分でスケジュール・適用・検証 | 自動化またはメンテナンスウィンドウで実施 |
| フェイルオーバー | 自前で設計・実装が必要 | マルチAZ設定で自動フェイルオーバー |
| カスタマイズ性 | 高い(任意の設定が可能) | 制限あり(パラメータグループ等の範囲内) |
| コスト構造 | EC2料金+人的運用コスト | マネージドサービス料金(同等EC2より割高) |
| ベンダーロックイン | 低い(オープンソース準拠) | サービスへの依存度が高まる |
セルフマネージドが向いているケース
「マネージドサービスが正解」という先入観を持ちがちだが、セルフマネージドが合理的な選択になる場面も確実に存在する。
1. 深いカスタマイズが必要な場合
マネージドサービスはパラメータグループや設定APIの範囲内でしか動作をカスタマイズできない。カーネルパラメータの細かな調整、独自のストレージエンジン、特殊なコンパイルオプションが必要なケースでは、セルフマネージドしか選択肢がない。
・例: MySQL 5.7の特定マイナーバージョン固定が必要な業務システム
・例: PostgreSQL拡張モジュール(TimescaleDB等)をコンパイルして使うケース
2. 既存ライセンスをクラウドに持ち込む場合
オンプレで保有しているソフトウェアライセンス(Oracle DB等)をクラウドVMに持ち込む「Bring Your Own License(BYOL)」方式ではセルフマネージドが基本となる。マネージドサービスで提供されるエンジンと契約上の制約が合わないケースも多い。
3. コスト試算でセルフマネージドが有利な場合
マネージドサービスはインフラ管理の手間を省く対価として、同等スペックのEC2より20~50%程度割高になることが多い。大規模・長期稼働でリソース効率を極限まで高めたい場合や、自社にインフラエンジニアが十分いる場合は、セルフマネージドの方がTCOで優位になる計算が成り立つことがある。
マネージドサービスが向いているケース
1. 運用リソースが限られている場合
インフラエンジニアが少ない組織、あるいはアプリ開発に専念したいチームにとって、OSパッチ・フェイルオーバー設定・バックアップ管理の自動化は大きな価値を持つ。障害対応の夜間対応頻度を下げるだけでも、エンジニアの疲弊を大幅に抑えられる。
2. 高可用性構成を短期間で実装したい場合
マルチAZ構成のフェイルオーバーをゼロから実装するには、Pacemaker/Corosyncのようなクラスタリングミドルウェアの習熟が必要だ。マネージドサービスであればコンソールのチェックボックス1つでマルチAZが有効になり、フェイルオーバーも自動で行われる。クラウド移行初期や、短期間でHA構成を整えなければならないプロジェクトには特に有効だ。
3. セキュリティパッチ対応を確実にしたい場合
セキュリティパッチの適用漏れはインシデントの主要因の一つだ。セルフマネージドでは「パッチを当てたくても本番への影響が怖くて後回し」になりがちだが、マネージドサービスのメンテナンスウィンドウ機能を使えば、自動更新のスケジュールをコントロールしながら確実に対応できる。
カテゴリ別:AWSとAzureのマネージド vs セルフマネージド対比
1. リレーショナルデータベース(RDBMS)
| 方式 | AWSの選択肢 | Azureの選択肢 |
|---|---|---|
| セルフマネージド | EC2上にMySQL/PostgreSQL/Oracle等をインストール | Azure VM上にSQL Server/PostgreSQL等をインストール |
| マネージドサービス | Amazon RDS、Amazon Aurora | Azure Database for MySQL/PostgreSQL、Azure SQL Database |
AWSではAmazon RDSとAmazon AuroraがマネージドRDBMSの代表格だ。AuroraはMySQL/PostgreSQL互換でありながらAWS独自の最適化が施されており、標準MySQLの最大5倍(MySQL互換時)のスループットを実現する。セルフマネージドからの移行を検討する際は、アプリの接続文字列変更だけで移行できるエンジン互換性の高さが魅力だ。
2. キャッシュ・インメモリDB(Redis / Memcached)
| 方式 | AWSの選択肢 | Azureの選択肢 |
|---|---|---|
| セルフマネージド | EC2上にRedis/Memcachedをインストール | Azure VM上にRedisをインストール |
| マネージドサービス | Amazon ElastiCache(Redis/Memcached対応) | Azure Cache for Redis |
キャッシュ層はセルフマネージドで構築するエンジニアも多いが、Redisのマルチマスタークラスタリング・レプリケーション設定はノウハウが必要だ。Amazon ElastiCacheであればクラスターモードの設定から自動フェイルオーバーまでコンソールで管理できる。ただし、LUAスクリプトの一部制約やモジュール非対応など、Redis本来の機能が使えない場合があることは認識しておく必要がある。
3. メッセージングブローカー(Apache Kafka)
| 方式 | AWSの選択肢 | Azureの選択肢 |
|---|---|---|
| セルフマネージド | EC2クラスター上にApache Kafka + ZooKeeperを構築 | Azure VM上にKafkaクラスターを構築 |
| マネージドサービス | Amazon MSK(Managed Streaming for Apache Kafka) | Azure Event Hubs(Kafkaプロトコル互換) |
Kafkaのセルフマネージド運用は特に難易度が高い。ZooKeeperの管理、ブローカーのスケールイン・アウト、パーティション再分散(Kafka Reassignment)など、専門的な運用知識が必要だ。Amazon MSKはこれらの運用負荷をAWSに委ねつつ、Kafkaのプロトコル互換性はほぼ完全に維持できる。
4. コンテナオーケストレーション(Kubernetes)
| 方式 | AWSの選択肢 | Azureの選択肢 |
|---|---|---|
| セルフマネージド | EC2上にKubernetesをkops/kubespray等で自前構築 | Azure VM上にKubernetesを自前構築 |
| マネージドサービス | Amazon EKS(コントロールプレーン管理をAWSが担当) | Azure Kubernetes Service(AKS) |
Kubernetesのコントロールプレーン(etcd、API Server、Scheduler)をセルフマネージドで運用するのは専門的なスキルが必要で、etcdのバックアップ・リストア手順をミスすると全クラスターが停止するリスクがある。Amazon EKSではコントロールプレーンをSLA保証付きでマネージドにし、ワーカーノードの管理だけに集中できる。
選定の判断フレームワーク
現場で判断に迷ったとき、以下の4ステップで整理できる。
Step 1: カスタマイズ要件を確認する
マネージドサービスの設定項目(パラメータグループ、設定API)で実現できるか?
→ できない(独自カーネル設定・非標準エンジン等が必要)→ セルフマネージド一択
→ できる → Step 2へ
Step 2: 運用チームのリソースを確認する
OSパッチ・フェイルオーバー設計・バックアップ管理を継続的に担えるインフラエンジニアがいるか?
→ いない、または他業務で手一杯 → マネージドサービスを検討
→ いる → Step 3へ
Step 3: TCOを比較計算する
「マネージドサービス料金」と「EC2料金+運用人件費換算」を比較する。一般的に運用工数が月10時間以上かかる規模であれば、マネージドサービスの追加コストが人件費を下回ることが多い。
→ セルフマネージドのTCOが明らかに低い → セルフマネージドも検討
→ 僅差または不明 → マネージドサービスを優先(不測の障害対応コストが高い)
Step 4: 引き継ぎリスクを評価する
担当者が異動・退職した場合に、セルフマネージドの運用知識がブラックボックス化するリスクはないか?
→ 人依存のリスクが高い → マネージドサービスを優先
よくある選定ミスと対処法
【ミス1】セルフマネージドで始めてマネージドに移行できなくなる
「まずEC2でMySQLを動かしてみよう」と始めたプロジェクトが、数年後にカスタム設定が積み重なってRDSへの移行が困難になるケースはよくある。移行コストを恐れてセルフマネージドに縛られ続けると、技術的負債が膨らむ。
対処法: プロジェクト開始時にマネージドサービスとの互換性を意識した設定にしておく。マネージドサービスでサポートされていない機能をなるべく使わない。
【ミス2】マネージドサービスの「見えないコスト」を見落とす
RDSでマルチAZを有効にするとインスタンス料金が約2倍になる。ElastiCacheでクラスターモードを使うとノード数が増えてコストが跳ね上がる。「マネージドなら安心」と思い込んで可用性設定を有効化し続けると、月額が想定の数倍になることがある。
対処法: マネージドサービスの料金はオプション機能込みで試算する。開発・検証環境ではマルチAZやレプリカを無効にして節約する。
【ミス3】「ベンダーロックインが怖い」だけでセルフマネージドを選ぶ
ベンダーロックインのリスクを過大評価してセルフマネージドを選ぶケースは多い。しかし実際にはクラウドベンダーを丸ごと乗り換えるプロジェクトはほとんど発生せず、運用コストの節約機会を逃し続ける結果になることが多い。
対処法: ロックインリスクよりも「運用コストとリスクの現実的な試算」を優先する。ポータビリティを重視する場合は、Kubernetes上でポータブルなワークロードを動かすアプローチを検討する。

本記事のまとめ
マネージドサービスとセルフマネージドの選択は、「どちらが優れているか」ではなく「自社の状況に合っているか」の問いだ。
・セルフマネージド: カスタマイズが必須、既存ライセンス活用、大規模・長期でTCO優位が見込める場合
・マネージドサービス: 運用リソースが限られる、短期間でHA構成が必要、セキュリティパッチを確実に当てたい場合
| カテゴリ | セルフマネージド(AWS) | マネージドサービス(AWS) | 選択の目安 |
|---|---|---|---|
| RDBMS | EC2 + MySQL/PostgreSQL | Amazon RDS / Aurora | カスタム設定が少なければRDS |
| キャッシュ | EC2 + Redis | Amazon ElastiCache | ほぼElastiCacheで代替可能 |
| Kafkaブローカー | EC2 + Apache Kafka | Amazon MSK | 小規模を除きMSKが運用楽 |
| K8sコントロールプレーン | EC2上にkops等で自前構築 | Amazon EKS | etcd管理リスクを避けるならEKS |
クラウド移行の目的は「インフラの管理から解放されてビジネス価値の提供に集中すること」だ。その文脈で、マネージドサービスの活用は移行の本来のゴールに直結している。セルフマネージドを選ぶときは「それが本当に必要な理由」を明確にしてから判断してほしい。
PR
AWS運用入門 押さえておきたいAWSの基本と運用ノウハウ(佐竹陽一・山﨑翔平ほか/SBクリエイティブ)
マネージドサービスの選定から日次運用・コスト管理まで、AWSを現場で使いこなすための実践的なノウハウが体系的にまとめられた一冊。セルフマネージドとの比較検討をする際にも参考になる。
