リレーショナルデータベースは、データベースの中では最も一般的な形式で、顧客や商品情報の管理など多くの企業のデータベースで活用されています。
AWSでもクラウド型のリレーショナルデータベースとしてAmazon RDSを提供しており、これを利用することでコストの抑制や作業負担の軽減など、さまざまなメリットが得られます。
本記事ではAmazon RDSの特長や機能について、具体的に解説します。
AWSが提供するデータベースサービス
AWSではAmazon RDS以外にも多様なニーズに対応したフルマネージドのデータベースサービスを展開しており、目的・用途にあわせて選択することができます。
まずはAWSのデータベースに対する考え方について紹介します。
AWSでデータベースを利用する場合の考え方
AWSにはPurpose-built Database、簡潔に言えば「適材適所にデータベースを使いましょう」という考え方があります。
以前はリレーショナルデータベースによるデータ管理が主流でしたが、最近はデータの多様性やサービスの複雑性が高まり、格納するデータの種別も増えてきました。AWSでは8つの区分のデータベースサービスを提供しており、各ユースケースに応じたサービスを使うことによって、可用性やパフォーマンスを向上させることができるという考えをもっています。
これまでリレーショナルデータベースを利用していた方がAWSに乗り換えた際には「キーバリュー」や「インメモリ」など、用途に合わせて最適なデータベースを検討するのがおすすめです。
リレーショナル 参照整合性、ACIDトランザクション、schema-onwirte |
キーバリュー ⾼スループット低レイテンシのRDSread/write、制限のない拡張性 |
ドキュメント ドキュメントを格納し、クエリ利⽤により任意の属性に対して⾼速にアクセス |
||
AWS サービス |
Amazon RDS |
Amazon Aurora |
Amazon DynamoDB |
Amazon DocumentDB |
主な ユースケース |
従来のアプリケーション、ERP、CRM、会計 | トラフィックの多いウェブアプリ、eコマースシステム、リアルタイム⼊札 | コンテンツ管理、カタログ、ユーザープロファイル |
インメモリ キーを利⽤してマイクロ秒のレイテンシでクエリ |
時系列 時間経過に従って計測されるデータを収集、蓄積、処理 |
グラフ データ間の関係性を⾼速、容易に作成、探索 |
||
AWS サービス |
Amazon MemoryDB for Redis |
Amazon ElastiCache |
Amazon Timestream |
Amazon Neptune |
主な ユースケース |
キャッシュ、セッション管理、ゲームのリーダーボード、地理空間アプリケーション | IoTアプリケーション、イベントトラッキング | 不正検出、ソーシャルネットワーク、レコメンデーションエンジン |
時系列 時間経過に従って計測されるデータを収集、蓄積、処理 |
台帳 完全、不変かつ検証可能な、アプリケーションデータに対するすべての変更履歴 |
ワイドカラム スケーラブルで、可⽤性が⾼い、マネージドなApache Cassandra互換サービス |
|
AWS サービス |
Amazon Timestream |
Amazon QLDB |
Amazon Keyspaces |
主な ユースケース |
IoTアプリケーション、イベントトラッキング | 記録システム、サプライチェーン、ヘルスケア、トランザクション | 低レイテンシなアプリケーションの構築、Cassandraベースのアプリケーションをクラウドに移⾏ |
Amazon RDSの特徴
Amazon RDSで選べる6つのデータベースエンジン
AWSの代表的なデータベースサービスであるAmazon RDS(以下、RDS)は6つのデータベースエンジンが選択可能な、マネージドなリレーショナルデータベースサービスです。
選択可能なデータベースエンジンは以下のようになっています。
- SQL Server
- Oracle
- MySQL
- PostgreSQL
- MariaDB
- Aurora
AuroraはAWSが独自で開発したエンジンで、他のエンジンに比べるとクラウドネイティブな構成を簡単に実現できます。
RDSの利用におけるポイントは、4点あります。
1.) マネージドサービスなので管理が容易
RDSはマネージドなサービスとなっているため、ハードウェア、OS、データベースソフトウェアの管理を省くことができます。
ちなみに、「マネージド」と呼ばれる部分について、AWSではユーザーがAWSを利用する場合のクラウド提供事業者(AWS)とユーザーの責任範囲の分界点を「責任共有モデル」として定めています。
責任共有モデル:AWSとユーザーの間で共有される責任範囲を定めたもの
RDSはAWSサービス内ではPaaSに分類されており、ユーザーはアプリケーションレイヤーより上を管理する必要がありますが、アプリケーションレイヤーより下はAWSの管理となっており、運用負担はIaaSよりも軽くなっています。
2.) スケーラビリティ
クラウド利用の大きなメリットとなりますが、数クリックで簡単にコンピューティングとストレージのスケールが可能です。
3.) 高い可用性と耐久性
複数のアベイラビリティゾーン(地理的に離れたデータセンター群 以下、AZ)に自動でデータのレプリケーション、バックアップ、フェイルオーバーを設定できます。
4.) セキュリティ
データ保管時や伝送中の暗号化など、機能としてセキュリティが担保されています。
関連記事:AWSのAmazon RDSとは?サービスの特徴や料金について解説
RDSの運用や監視にお困りな方必見!
AWS運用代行サービスをわかりやすく解説!
こんなことを感じていませんか?
・AWS運用のために社内のリソースが足りずに困っている
・障害発生時の対応に不安がある
・運用だけでなく構成のアドバイスもあると嬉しい
データベース管理者がAmazon ADSを利用するメリット
オンプレミス環境におけるデータベース管理者(以下、DBA)は、データのバックアップや障害時のフェイルオーバー、パッチ当て、他にもハードウェアの部分の保守切れなどの対応を行っていました。
マネージドサービスであるRDSを導入することで、従来DBAが担っていた業務をAWSが肩代わりしてくれるため、DBAはパフォーマンスのチューニングやボトルネックの特定・解消、さらには新しい施策やサービス展開をするためのデータベースの検証やBIツールを利用したデータ分析など、より事業成長に貢献できる付加価値の高い仕事にシフトできます。
これまでDBAが行っていた作業
- バックアップスクリプトの作成、仕掛け
- 障害時のフェイルオーバー運用、障害サーバーの再構築
- パッチ適用やスケールのためのメンテナンス作業
- 各種ログ・メトリクスの可視化、アラート設定
- ハードウェア
これからのDBAが行う作業
- パフォーマンスのチューニング
- ログ・メトリクスからボトルネックを特定、解消
- 新しい施策に向けた検証やベンチマーク
- データベースを中心とした全体的なシステムアーキテクト
- 蓄積したデータに対してのデータ分析
なお、AWSにはRDS以外にもDBAが担う仕事を補助するようなサービスがいくつもあります。
例えばパフォーマンス分析や機械学習、適材適所なデータベースに移行するときに利用できる移行支援のツールなどです。本記事では詳細は割愛しますが、そういった部分でもAWSに乗り換えること、RDSを利用することでよりメリットを享受できます。
データベース運用の作業と課題
データベースを運用する上で必要となる作業や課題を、以下6つの区分に分けてみました。
耐久性 | サーバー、ラック、データセンター維持 |
可用性 | 高可用性を実現する設計、フェイルオーバー |
拡張性 | 需要にあわせたスケール、キャパシティプランニング、障害ホストの修復、撤去作業 |
セキュリティ | OSパッチ適用、DBパッチ適用、アクセスコントロール、暗号化、監査 |
運用 | バックアップ・リストア、パフォーマンスチューニング、インデックス設計・作成 |
監視 | CPU、メモリー、ストレージ、メトリクスの可視化 |
太字の部分は先述した責任共有モデルでAWS管理のもの、それ以外がユーザーが管理する作業です。
本記事ではこのうち、以下の4点に絞ってRDSがどのように効果を発揮するかご紹介します。
- 可用性
- 拡張性
- 運用
- 監視
Amazon RDSで可用性の課題を解決する方法
データベースにおける可用性の課題
- ユーザーがシステムを利用できない時間が増える
- 可用性レベルに応じてコストが増大する
Amazon RDSで解決に活用できる機能
- Multi-AZ
- 自動フェイルオーバー
可用性は「システムを継続的に利用可能とするための要求」として定義され、可用性が低い状態ではユーザーがシステムを利用できない時間が増えます。それに対して可用性を向上させようとすると、可用性のレベルに応じてコストは増加していく傾向があります。
AWSでデータベースの可用性を高めた運用を行うには、RDSが提供している「マルチアベイラビリティゾーン(以下、Multi-AZ)」と「自動フェイルオーバー」で解決します。
マルチアベイラビリティゾーン(Multi-AZ)
マルチアベイラビリティゾーンとは、複数のAZにまたがった配置をする構成のことを指しています。
RDSではワンクリックで簡単に有効化でき、高可用性のソリューションを自動的に提供してくれます。
Multi-AZに配置するメリットとしては、複数のデータが同時に障害に見舞われるリスクを軽減し、障害耐性を高められることが挙げられます。
自動フェイルオーバー
Multi-AZを有効化することによって使えるようになる機能の一つが、自動フェイルオーバーです。
例えば、稼働中のシステムでプライマリのインスタンスに障害が発生したという場合に、自動フェイルオーバーを有効化しておくと、別のAZにあったスタンバイが自動的にプライマリーに切り替わり、もともとプライマリーが存在していたAZには、スタンバイとなるインスタンスがこれも自動的に構築されます。
インスタンスが停止してしまった場合でも、自動的に切り替わる仕組みが備わっているため、継続してサービスをご利用いただくことが可能となっています。
なお、自動フェイルオーバーが機能する条件はいくつか存在します。
例えばAWSが管理するOSのパッチを適用する際には、自動フェイルオーバーの機能を使って、ダウンタイムを最小限に抑えることができます。また、プライマリーデータベースに障害が発生したケースや、ユーザー自身の操作によりデータベースインスタンスを変更する場合も該当します。
Amazon RDSで拡張性の課題を解決する方法
データベースにおける拡張性の課題
- 利用が増加するユーザーに耐えきれない
- 拡張に時間がかかり利益の損失が発生
Amazon RDSで解決に活用できる機能
- リードレプリカ
- オートスケーリング
拡張性の定義は「システムの性能および将来のシステム拡張に関する要求」となります。
システムを運用していく上で課題となりやすいポイントが、「ユーザーの増加に耐え切れない」「システムの拡張に時間がかかり機会損失が発生してしまう」といった点です。
RDSを利用した場合の解決策としては、「リードレプリカ」と「オートスケーリング」がありますが、以下では「スケーリング」としてまとめてご説明します。
スケーリング
スケーリングの機能によって、接続量やシステム負荷の増減に柔軟に対処することができます。
スケーリング手法のうち、スケールアウトでは読み取り専用の「リードレプリカ」を増設することができ、これにより読み取り処理のためのスケールアウトが可能となります。
また、スケールアップにおいては、ダウンタイムを最小限に抑えてCPUのメモリリソースの増設・増量をすることができます。
ストレージについては、容量の増加に応じて自動的にスケーリングをしてくれる「オートスケーリング」の機能が存在します。
これらRDSの機能を利用することにより、運用の負担は相当に軽減されることになります。
スケールアウト
読み取り専用のリードレプリカを増設することでスケールアウトが可能
スケールアップ
ダウンタイムを最小限に押さえて、CPUやメモリを増量
ストレージのオートスケーリング
ストレージ容量に応じて自動的にスケーリングを実施
Amazon RDSで運用の課題を解決する方法
データベースにおける運用の課題
- 既存タスクが多く新規タスクに着手できない
- データベースエンジンごとに高い専用スキルが求められる
Amazon RDSで解決に活用できる機能
- 自動バックアップ
- Performance Insights
運用の定義としては、「システムを継続的に提供するために発生する作業」となり、ここで発生する課題としては、既存タスクに忙殺され新しいタスクに着手できない、あるいは管理するデータベースエンジンごとに高い専門スキルが求められるといったことになると思います。
今回、RDSが提供する機能でご紹介したいのは「自動バックアップ」と、パフォーマンス分析に役立つ「Performance Insights」の2つです。
自動バックアップ
自動バックアップ機能では、指定した期間に応じてDBインスタンスのバックアップが自動的に実行されます。さらに、保存期間内の任意の時点を指定して、データベースを復元することも可能です。期間は0~35日の間で選択することができ、デフォルトでは1週間で設定されています。
加えて、「手動スナップショット」という手動でバックアップを取る機能もあり、これを使うことで別のリージョンや別のAWSアカウントに、同一のデータベースを構築することができます。例えばステージング環境やテスト環境を、本番環境とは別のアカウントで構築したいという方には最適なソリューションであると言えそうです。
Performance Insights
データベースのパフォーマンスのチューニングとモニタリングに役立つ機能で、システム負荷やボトルネックとなっている箇所を、ダッシュボードから把握することが可能です。
パフォーマンスの履歴は1週間まで無料で保存できますが、有料であれば数ヶ月単位で履歴を保存、分析できるようになっています。
サイトが重く感じる、などパフォーマンスに懸念が生じてきたような際には、Performance Insightsの画面を確認することで、問題を特定することができます。
Performance Insightsのダッシュボード
カウンターメトリクス
表示項目
- OSのリソース情報
- データベースの統計情報
データベース負荷
表示項目
- ボトルネックの原因の待機
- ボトルネックとなっているSQL
- 性能影響の高いホスト、ユーザー
Amazon RDSで監視の課題を解決する方法
データベースにおける運用の課題
- 監視サーバの運用負担
- 監視項目の複雑性
Amazon RDSで解決に活用できる機能
- Amazon CloudWatch
監視の定義は、「システムが問題なくユーザーにサービス提供できているか確認するための作業」としました。ここでも監視サーバーの運用や、SaaS形式の監視サービスを利用するという場合でも、なんらかの負担は発生することになります。
また、どの部分をどう監視するか、適切な監視プランを検討する部分でも複雑性が生じるのではないでしょうか。
そうした課題を解決する機能として、「Amazon CloudWatch」があります。
Amazon CloudWatch
Amazon CloudWatch(以下、CloudWatch)はRDSの機能ではなく、AWSが提供するサービスで、リアルタイムのログ取得やメトリックスなど様々な機能をもつ、運用に特化したサービスです。
CPUやデータベースの接続数カウント、空きストレージの状況など、RDSのパフォーマンスに関するさまざまなデータを提供してくれるほか、「CloudWatch Alarm」により、CPUの使用状況など設定した条件をトリガーとして通知を配信するようなことも可能です。
なお、拡張モニタリングの利用によりOS部分の監視も可能になります。責任共有モデル上では、OS部分はAWSの責任範囲となりますが、ユーザーのユースケースに応じて、OSレベルの詳細なモニタリングをすることもできます。
Amazon RDSの特長まとめ
本記事で最も強調したかったことは、RDSがフルマネージドなリレーショナルデータベースであるという点です。フルマネージドのサービスを利用することで、データベース作業の運用負担の軽減が期待できます。
またオンプレミ゙スの運用に比べて、高可用性や拡張性を簡単に実現できるので、データベース管理者は、より付加価値の高い仕事に集中することができます。
なお、RDSでは他にもさまざまな機能が提供されています。
イベント通知機能や、セキュリティを向上させるためのデータベース認証、Multi-AZよりもさらに高い可用性を備えたMulti-AZ DBクラスター、そしてコネクション問題を解決するプロキシのRDS Proxyなど、データベース運用における課題解決に効果を発揮する機能があります。
利用環境やユースケースに応じて、活用を検討してみてはいかがでしょうか。
パブリッククラウドサービスでシェアNo.1のAWSがなぜ選ばれているのか、特長やメリットなどの概要とともに、AWSの主要なデータベースサービスであるAmazon RDSについてご紹介します。