ブログ

AWS の Amazon RDS をオススメする3つの理由(RDS と RDB on EC2の比較)

AWS で Oracle、Microsoft SQL Server、MySQL、PostgreSQL 等の RDB(リレーショナルデータベース)を利用する際、選択肢としては RDS を利用する方法と EC2 上に RDB を構築する方法の 2 通りがあります。

システム要件次第にはなるものの、基本的には RDS をオススメしており、その理由を EC2 上に構築する場合との比較を交えて紹介します。

 AWS の Amazon RDS とは? EC2 と比較して何が違う?

AWS の Amazon RDS( Amazon Relational Database Service )とは、名前の通り AWS のリレーショナル型のデータベースでフルマネージドサービスとなっています。

Amazon RDS では、データベースのインストールやバックアップなどのセットアップをしなくても、データベースが利用できる環境が提供されているため、すぐにAWS上でデータベースを使用することができます。

対応しているデータベースは2022年12月現在、下記のとおりです。

・Amazon Aurora

・MySQL

・MariaDB

・PostgreSQL

・Oracle

・Microsoft SQL Server

データベースをオンプレミス環境に構築するか、 EC2 に構築するか、 RDS を利用するかで、ユーザーの管理範囲が異なります。以下の表の通り RDS を利用することでユーザー管理の範囲が少なくなり、運用の手間を大幅に削減できることが分かります。

緑色はユーザー管理黄色は AWS 管理

詳細は AWS公式サイト もご覧ください

EC2 と比較して Amazon RDS をオススメする理由①:構築が楽

=新規構築=

Amazon RDS は構築がとても簡単です。以下は RDS の新規構築画面ですが、必要な設定値(データベース・インスタンスタイプ・マスターユーザー名・パスワード等)を設定するのみですぐに構築ができます。

構築に要する時間はインスタンスタイプによって変わりますがおおよそ 10 〜 15 分です。

もしオンプレミスや EC2 にデータベースを構築する場合は以下のように時間を要します。

・インストールメディアの準備が必要( RDS は不要)

・インストール自体も時間がかかる( RDS は 10 〜 15 分)

・スペック選定( RDS もスペック選定必要だが後で変えられる、 EC2 だと DB 以外のアプリも考慮が必要)

これだけ導入の敷居が低いということは、お試しで使ってみる・テスト環境を構築する等の場合にも適していますね。不要になったらすぐに消すこともできますし、停止させておくこともできます。

ただし、 RDS は停止させても1週間後に自動起動するので注意が必要です。
( EC2 であれば自動起動せず常時停止が可能です)

よって長期停止させておきたい場合は、スナップショット(バックアップ)を取得してから削除しておきましょう。
そうすればいざ必要となった際にスナップショットから再作成ができますし、データもスナップショット取得時のものが残っています。

=可用性=

「可用性」についても RDS では簡単に実現できます。 RDS では「シングル AZ 構成」(冗長化なし)と「マルチ AZ 配置」(冗長化あり)の 2 種類が用意されていて、マルチ AZ 構成を選ぶと、自動で複数のアベイラビリティ・ゾーンに本番系・待機系のインスタンスが配置されます。

本番系(マスター)・待機系(スレーブ)間のデータ同期も自動で行ってくれますので、万が一トラブルがあったとしてもマスターからスレーブに切り替えることで、システム停止を最小限に抑えられます。

高可用性・冗長化をもしオンプレミスや EC2 で実装するとなると相当なコストがかかります。

EC2 であれば ALB 等のロードバランサー機能が用意されてはいるものの、 WEB サーバーと異なりデータベースの場合はデータベース自体の冗長構成を構築しなければなりません。例えば Oracle RAC 等ですね。

Oracle を複数台用意して、それぞれをセキュアなネットワークでつなぎ、実データの共有サーバーはどうするか、 REDO ログの管理はどうするか等、設計しなければならない事項はたくさんあります。

RDS であれば以下のように「スタンバイインスタンスを作成する (本稼働環境向けに推奨)」にチェックを入れるだけです。

EC2 と比較して Amazon RDS をオススメする理由②:運用が楽

運用面でも RDS は非常に優れています。

まずインフラ基盤・ OS の部分はフルマネージドサービス故にすべて AWS にて提供されておりますので意識する必要がありません。ユーザーは Oracle の管理のみに専念することができます。

ただし、OS 部分も含めてユーザーにてメンテナンスをしたい等の要件がある場合は EC2 への構築も選択肢として入ります。RDS の場合は OS にログインするという概念がありません。

その他にも以下のような様々な運用を手助けするサービスが用意されています。

=自動バックアップ=

非常に手間のかかるバックアップ作業を AWS 側で自動的に実行させることが可能です。業務の負担や手間を軽減し、バックアップのし忘れを防ぎます。

EC2 でもバックアップ( AMI )が取れますが、あくまでも EC2 全体のイメージバックアップになりますので、データベース自体のバックアップは別途考慮する必要があります(静止点の確保等)

=自動パッチ適用(マイナーバージョンアップ)=

パッチ適用、すなわちマイナーバージョンアップを自動で行なえます。(手動でも可能です)
RDS はフルマネージドサービスのため、パッチ適用などをユーザー管理する必要がなく自動化できます。
EC2 の場合はパッチ作業をユーザーで管理する必要があり、RDS の方が手間が大きく軽減されます。

=リードレプリカ=

リードレプリカとはレプリケーション(まったく同じデータを持ったものを複数作ること)された読み取り専用のデータベースです。同じデータが複数存在するためデータの安全性が高まるほか、データベースひとつにかかる負荷を分散させることができます。アクセス集中が予想されるときにはリードレプリカを複数台作成し、アクセスが落ち着いた際にはリードレプリカを削除するといった柔軟な対応が可能です。

以下は Amazon Aurora を例に取ったリードレプリカの追加手順です。

まずは対象のクラスターを選択し、アクション→リーダーの追加です。

リーダー追加時の設定画面は省略しますが、基本的にはインスタンスタイプやセキュリティグループ等、マスターインスタンスの設定を引き継ぎますので非常に簡単です。

以下は実際にリードレプリカを11台作成した後の画面です。

特に Amazon Aurora の場合、リードレプリカが何台作成されていたとしても「リーダー専用のホスト」、すなわちアクセスポイントは共通のため、Amazon Aurora にアクセスするアプリ側の接続先情報は変更する必要がありません。

EC2 と比較して Amazon RDS をオススメする理由③:検証が楽

検証といっても目的は様々ですが、RDS を使った検証は準備も含めて簡単に行なえます。

前述の通り新規お試しで構築する場合の検証にも使えますが、ここではメジャーバージョンアップの検証を例に紹介します。

まずメジャーバージョンアップをオンプレミスや EC2 で実施する場合のことを想定してみましょう。

・バージョンアップ後の検証をどうするか

・バージョンアップにどれくらい時間がかかるのか

・バージョンアップに失敗した際の切り戻しはどうするか

等、課題はたくさんあり手間もかかります。

RDS の場合はいかがでしょうか。これはスナップショット(バックアップ)からもう 1 台検証用のコピー RDS を作成することで簡単に解決します。

スナップショットは前述の通り自動で取得できますが、必要に応じて手動でも取得できます。

対象のスナップショットを選択し、「スナップショットを復元」でコピー RDS を作成できます。

スナップショットを「復元」とありますが、リストアというよりはもう 1 台別の RDS インスタンスを構築するイメージです。もちろん中身はスナップショット取得時のデータがそのまま入っています。

あとはスナップショットから復元したコピー RDS を使用してバージョンアップを行います。

バージョンアップは対象のインスタンスの変更画面からバージョンアップ後のバージョンを指定するのみです。

スナップショットから復元したコピー RDS を使用したバージョンアップ検証によって以下のメリットがあります。

・コピーを作成して検証するので元の本番インスタンスには一切影響なく検証できる

・バージョンアップに要する時間を見積もれる

EC2 と Amazon RDS の違いを理解しうまく活用しよう! (まとめ)

いかがでしたでしょうか。
Amazon RDSを利用すると、手間やコストを軽減できるだけではなく、簡単に可用性に優れたデータベースを構築することができ、自動バックアップや自動パッチ適用などの作業を AWS 側で自動的に行ってくれます。

一方で下記のように RDB on EC2 を選択したほうがよいケースもあります。

・RDS で提供されていない RDB/インスタンスタイプ/ストレージの利用が必要

・RDS でサポートされない機能がある

・OS のチューニング、管理が必要

基本は RDS を前提に検討しつつ、どうしても RDS の制約で妥協できない場合に RDB on EC2 を検討されると良いかと思います。

是非 Amazon RDS を活用してみてくださいね。

元記事発行日: 2023年01月16日、最終更新日: 2024年02月28日