前の記事では、 Amazon S3の基本を学びました。
Amazon S3を利用すると、 画像・ログ・バックアップなどのデータを オブジェクトとして保存できます。
では、Webサービスのユーザー情報や商品情報など、 検索・追加・更新を行うデータは どこへ保存すればよいのでしょうか。
利用するにはどうすればいい?
そこで登場するAWSの代表的な データベースサービスが、 Amazon RDSです。
この記事はAWS中級講座のレッスン10です。 AWSでリレーショナルデータベースを利用するための Amazon RDSの基本を学びます。
AWS中級講座を見る →Amazon RDSの基本的な仕組みを理解し、 DBインスタンス・DBエンジン・Multi-AZ・ Read Replica・バックアップ などの基本用語を説明できるようになることを目指します。
Amazon RDSとは?
Amazon RDS(Relational Database Service)は、 AWSが提供する マネージド型のリレーショナルデータベースサービス です。
通常、データベースを利用するためには、 サーバーを用意してデータベースソフトウェアを インストールする必要があります。
Amazon RDSを利用すると、 こうしたデータベース基盤の管理作業の多くを AWSに任せることができます。
リレーショナルデータベースとは?
リレーショナルデータベースでは、 データをテーブルと呼ばれる 表形式で管理します。
たとえばWebサービスでは、 ユーザー情報・商品情報・注文情報などを テーブルとして管理できます。
RDSで利用できるDBエンジン
Amazon RDSでは、 複数のデータベースエンジンを 選択できます。
このようにRDSは、 「1種類のデータベースそのもの」ではありません。
RDSというサービス上で、 用途に応じたDBエンジンを選択して利用する というイメージです。
DBインスタンスとは?
RDSでデータベースを作成するときに登場するのが DBインスタンスです。
DBインスタンスは、 RDS上でデータベースエンジンを動かすための コンピューティング環境と考えると イメージしやすいでしょう。
作成時には、 必要なCPUやメモリに応じて DBインスタンスクラスを選択します。
EC2にデータベースを構築する場合との違い
データベースは、 EC2インスタンスへMySQLなどをインストールして 構築することもできます。
では、EC2とRDSでは 何が違うのでしょうか。
OSやDBソフトウェアなどを 自分で管理する
多くの管理作業を AWSに任せられる
RDSを利用しても、 データベース内のデータやユーザー、 アプリケーションからの利用方法まで AWSがすべて管理してくれるわけではありません。 どこまでAWSが管理し、どこから利用者が管理するか を意識することが重要です。
RDSはVPCの中に配置する
RDSを理解するときは、 これまで学んできた VPCやサブネットとの関係も重要です。
一般的なWebシステムでは、 RDSをインターネットへ直接公開するのではなく、 プライベートなサブネット側へ配置 する構成がよく利用されます。
WebサーバーからRDSへ必要な通信だけを許可し、 データベースをインターネットから直接アクセスできない 構成にすることで、 セキュリティを高められます。
DBサブネットグループとは?
RDSでは、 DBインスタンスを配置するサブネットを指定するために DBサブネットグループを利用します。
DBサブネットグループには、 通常、複数のAZに存在するサブネットを登録します。
これによって、 後ほど学ぶMulti-AZ構成などで 複数AZを利用できるようになります。
Multi-AZとは?
RDSの重要な機能の1つが、 Multi-AZです。
Multi-AZを利用すると、 複数のアベイラビリティゾーンを利用して データベースの可用性を高められます。
通常時はPrimary DBを利用します。
Primary側で障害が発生した場合は、 Standby側へ フェイルオーバーすることで、 データベースを継続して利用できるようにします。
Read Replicaとは?
RDSには、 Read Replica(リードレプリカ) という仕組みもあります。
Read Replicaは、 読み取り処理を分散するための 読み取り用レプリカです。
たとえば、 大量の検索処理が発生するシステムでは、 読み取り処理をRead Replicaへ分散することで Primary DBの負荷を軽減できます。
Multi-AZとRead Replicaの違い
この2つは非常に混同しやすいため、 目的の違いを整理しておきましょう。
障害発生時の フェイルオーバーに備える
読み取り処理を分散して DB負荷を軽減する
Read Replica → 読み取り処理を分散する
RDSのバックアップ
データベースでは、 障害や操作ミスに備えて バックアップを取得することが重要です。
RDSには、 データベースを保護するための バックアップ機能があります。
設定した保持期間に基づいて バックアップを管理
必要なタイミングで 手動スナップショットを作成
自動バックアップでは、 指定した保持期間内で ポイントインタイムリカバリを利用して、 特定の時点へ復元できます。
RDSへのアクセスはSecurity Groupで制御する
RDSへ誰でもアクセスできてしまうと、 重要なデータが外部から狙われる危険があります。
そのため、 RDSへの通信は Security Groupを利用して 制御することが重要です。
たとえばMySQLを利用している場合、 RDS側のSecurity Groupで WebサーバーのSecurity Groupからの TCP 3306番ポートだけを許可する といった設定ができます。
「インターネット全体からDBポートを許可する」のではなく、 データベースへアクセスする必要がある サーバーだけを許可する という考え方が重要です。
EC2・S3・RDSを組み合わせる
ここまで学んだAWSサービスを組み合わせると、 基本的なWebシステムの構成が見えてきます。
このように、 AWSでは各サービスに役割を分けて システムを構築できます。
あなたならどのRDS構成を選ぶ?
ここまで学んだ内容を使って、 RDSの構成を選択してみましょう。
DBサーバーに障害が発生しても、 できるだけサービスを継続できるようにしたい。
どちらの構成が適しているでしょうか。
今回求められているのは「可用性」です。
確認問題:Amazon RDS
Amazon RDSの説明として 正しいものはどれですか?
Amazon RDSは、 AWSが提供するマネージド型の リレーショナルデータベースサービスです。
RDS Multi-AZの主な目的は どれですか?
Multi-AZでは複数AZを利用し、 障害発生時のフェイルオーバーによって データベースの可用性を高めます。
データベースの読み取り処理を 分散したい場合に利用するものはどれですか?
Read Replicaを利用すると、 読み取り処理をレプリカへ分散し、 Primary DBの読み取り負荷を軽減できます。
3問に挑戦してみましょう。
まとめ
Amazon RDSは マネージド型のリレーショナルデータベースサービス
MySQL・PostgreSQL・Oracle・SQL Server・ AuroraなどのDBエンジンを選択できる
DBサブネットグループによって RDSを配置するサブネットを指定する
Multi-AZは データベースの可用性を高めるために利用する
Read Replicaは 読み取り処理の分散に利用する
自動バックアップや DBスナップショットによって データを保護できる
Security Groupを利用して RDSへの通信を必要な範囲だけ許可する
次は複数のサーバーへ通信を分散する「ELB」へ
ここまで、 EC2・S3・RDSという AWSの代表的なサービスを学んできました。
しかし、Webサービスへのアクセスが増えてくると、 1台のEC2インスタンスだけでは 処理しきれなくなる可能性があります。
そこで利用されるのが、 複数のサーバーへ通信を振り分ける ELB(Elastic Load Balancing)です。
ELBで負荷分散する仕組みを理解する
EC2・S3・RDSの役割を理解したら、 次はアクセスを複数のサーバーへ 分散する仕組みを学びましょう。
次の記事では、 ELB・ロードバランサー・ターゲット・ ヘルスチェック・ALB/NLB などの基本を整理します。
ELBで負荷分散する仕組みを理解する →
