【AWS】Amazon RDS について解説します。

Amazon RDSは、データベースを安心安全に稼働させるための大変便利な機能がたくさん用意されています。ここでは、AWSでインフラ環境を構築し始めている方や、これからAWSを利用しようとしているAWS初心者の方も対象に、RDSについて解説していきます。

■Amazon RDSとは

Amazon RDS(Relational Database Service)とは、AWSが提供するRDBMS(Relational Database Management System)のサービスを指します。サポートされているデータベースエンジンはAmazon Aurora、PostgreSQL、MySQL、MariaDB、Oracle Database、そしてMicrosoft SQL Serverの6種類です。Amazon RDSでは、データベースのインストールやバックアップなどのセットアップをしなくても、データベースが利用できる環境が提供されているため、契約後すぐにAWS上でデータベースを使用することができます。

AWS公式では、

Amazon Relational Database Service(Amazon RDS)を使用すると、クラウド上のリレーショナルデータベースのセットアップ、オペレーション、スケールが簡単になります。ハードウェアのプロビジョニング、データベースのセットアップ、パッチ適用、バックアップなどの時間がかかる管理タスクを自動化しながら、コスト効率とサイズ変更可能なキャパシティを提供します。これにより、アプリケーションに集中することができ、必要とされる高速なパフォーマンス、高可用性、セキュリティ、互換性をアプリケーションに実装できるようになります。

と紹介されています。

~参考~
RDBMS(Relational Database Management System)とは、リレーショナルデータベースを管理するソフトウェア(PostgreSQL、MySQLなど)の総称です。クラウド上なので、ラック設置などの物理的な運用はもちろん、RDBMSのインストール作業やパッチ更新、作成後のスペック変更やストレージ容量を増やせるなど、様々な運用において作業が楽になり効率よく進められます。

■RDSのメリット

MySQLやPostgreSQLをEC2インスタンスにインストールすれば、データベースをAWSインフラ環境へ導入は簡単だと言われています。しかし、データベースと言えば、Webサービスにおけるコアと言ってもいいほど重要なシステムであり、強靭な高可用性や耐障害性が求められます。それらを実現するのがこのRDSというサービスです。RDSはデータベースが止まらないように設計・運用する上で活躍してくれます。

代表的な機能は以下の通りです。
・ワークロードに応じたインスタンスタイプの選択
・スループットに応じたストレージの選択
・ストレージの拡張(オンライン拡張、自動拡張も可能)
・自動または手動バックアップ
・モニタリング機能
・ログの取得
・メンテナンスウィンドウ(システムメンテナンスの自動実行)
・削除保護機能
・フェイルオーバー(障害発生時または再起動時の自動切り替え)
・リードレプリカ(読み取り処理パフォーマンスの向上)
・耐障害性(フォールトトレランス)

RDSの良さは「システムのアップグレードやメンテナスといった管理コストをAWS側に任せることができること」や、「可用性やスケーリング、データ冗長化、セキュリティ向上や暗号化のための機能が大変容易に実装できること」が代表的なメリットです。
一方デメリットとしては、全てのデータベースエンジンやバージョンをサポートしているわけではなく、エンジンによっては一部機能に制限があることが挙げられます。

■マルチAZ(Availability Zone)構成

RDSが強靭な高可用性や耐障害性を実現するための構造であるマルチAZ構成とは、複数のデータセンターであるAZ(Availability Zone)に対してRDSが配置される構造のことを言います。起動時に用意されているマルチAZオプションをオンにすると、自動的に2つのRDSを2つのAZに渡って構築してくれる仕組みになっています。
RDSはマスター(プライマリ)とスレーブ(セカンダリ)という関係性があり、マスターへの変更が自動的にスレーブに反映されます。またこの仕組みをレプリケーションと呼び、その中でもマスターへの変更後にスレーブの変更が完了してから応答するため同期レプリケーションと言います。同期レプリケーションは、スレーブへのデータの反映を待つ時間だけ遅延が生じますが、データベース障害の影響を最小限に抑えることができます。

■フェイルオーバーとは

フェイルオーバーとは、予備も一緒に動かしている(ホットスタンバイ)システムにおいて、メインサーバーに障害が発生した時に自動的に予備サーバーに切り替えてくれる機能を指します。フェイルオーバーの目的は「サービスの継続稼働のための最小ダウンタイムの実現」です。アプリケーションやサービスが停止すると非常に困るという場面において、障害発生時に稼働可能なサーバーに切り替えることで、サービスを停止することなく最小限のダウンタイムで安定稼働させられる仕組みになっています。

■リードレプリカとは

リードレプリカとは、マスターからレプリケーションされた読み込み専用のデータベースです。リードレプリカを複数設置させることで、読み込みが多いサービスではデータベース1つにかかる負荷を削減させ、データベースの負荷分散をすることができます。読み込み専用のため、データ読み込み時はリードレプリカが処理を実行し、その他の削除 / 更新 / 追加に対してはマスターが処理を実行します。また、より可用性を向上させるためには複数のリードレプリカへのルーティングをロードバランサーによって負荷分散させる方法もあります。

※データベースに対する設定によって、どのデータベースに処理させるかはAWSでの設定ではなくプログラムに書く必要があります。

■スペック不足時にはスケールアップ

RDSは、EC2と同様にインスタンスタイプをスケールアップすることができます。CPUのスペック不足を感じた場合、コンソールからボタン1つでインスタンスタイプの変更が可能です。インスタンスタイプの変更には、必ずインスタンスの停止が必要になるので、必然的にフェイルオーバーが実行されます。それによりサービス自体を一時的に停止させなければならないため、サービスをリリースする前にできるだけスケールアップの必要がないよう、余裕のある設計が大切になります。

■RDSの料金体系

AWSを利用するうえでも重要な部分にあたるのがコスト面です。料金体系としては従量課金制と定額制が用意されていますが、いずれの場合も契約期間中にのみ料金が発生する「従量課金制」の仕組みをとっているため余分な費用は発生しません。利用するデータベースエンジンによって差はありますが、基本的にRDSにかかる料金は以下の3つの要素から算出できます。

1、インスタンスタイプ
(約3000円~/月)
2、ストレージ容量
(1GBあたり約30円~/月)
3、データ転送量
(0円~/月)※○GBまでなら0円の場合あり

さらにリードレプリカを追加時は、一番スペックの低いものでも一か月に約2000円前後かかります。コスト面も十分に考慮する必要があるため、AWSに対する知識を身につけ、サービスの規模やデータ処理量にみあった設計が必要になります。また、テストで少し試したい場合はRDSの無料枠も用意されているため、活用してみるのも1つの判断材料になります。

■まとめ

Amazon RDSを利用することにより、手間やコストの削減が見込めるだけではなく、可用性に優れたデータベースを構築することができます。バックアップやパッチ作業をAWS側で自動的に行ってくれるため、ユーザーは情報の追加や更新を行うだけでAWSを運用できます。今回の記事を参考に、Amazon RDSを活用を検討してみてはいかがでしょうか。

参考文献:
https://business.ntt-east.co.jp/content/cloudsolution/column-23.html
https://lab.taf-jp.com/rdsのフェイルオーバー時の挙動を理解してみる/
https://miyabi-lab.space/blog/31

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です