はじめに
試験勉強した際のメモを自分用に記事化。
内容は公式やBlack Beltの写経ですので目新しいことはありません
RDS
RDSのセキュリティ保護について
データベースの暗号化は、データベースの作成時に行うことができる。
・暗号化の対象
DBインスタンス、自動バックアップ、リードレプリカ、スナップショット
・暗号化方式
AES-256、AWS KMSによる鍵管理
インスタンス作成時にのみ暗号化が可能
スナップショットのコピーの暗号化/リストアが可能
ちなみにDBのリストアとはバックアップしていたスナップショットを突っ込んだり、複製したりの意味。
RDSのリードレプリカについて
RDSは最大5個のリードレプリカを作成して、読み取り処理の負荷を分散させることができる。
それにより、RDSインスタンスのスケールアップを実施することなくコスト最適な対応が可能。
・ちなみにRDSのレプリケーションとは
複製(レプリカ)を作ること。
マスターのデータベースと同じ内容のデータベースを作成するため、負荷分散やホットスタンバイとしての利用が可能。
・ちなみにRDSの主系はマスター、副系をスレーブという。
リードレプリカについては公式がわかりやすい。
https://aws.amazon.com/jp/rds/features/read-replicas/
マスター、スレーブ、リードレプリカを図にすると以下になる。
RDSをマルチAZで構成していたら
プライマリに障害が発生した場合、自動でフェールオーバーが発生し切り替わる。
CNAMEレコードをスタンバイから切り替えてプライマリに昇格する。
RDSのパフォーマンス改善
リードレプリカを増加(最大5台)することでパフォーマンスを向上させることが可能。
アプリケーションの大容量読み込みトラフィックを提供することができるらしい。
ちなみにリードレプリカは非同期的にレプリケートされる個別のDBインスタンスであるため、
レプリケーションデータが遅れることが多く、最新のトランザクションのいくつかを表示できない可能性がある。
RDSプロキシとは
RDSの機能。例えばLambdaとRDSを連携させたい場合はRDSプロキシを間に挟んで連携する、コネクション管理機能のこと。
(以前はこの機能が実装されていなかったらしい)
RDSのスケーリングについて
RDSオートスケーリングという機能が存在する。
データ容量が不足した際に、容量を自動でスケーリングする機能。
容量をアップするのであって、パフォーマンスを向上させる訳ではないので注意すること★
RDSとファイルシステム
RDSはファイルシステムへのアクセスがサポートされていないため、ファイルシステムへのアクセスに基づく設定や自社管理を実現するためにはEC2インスタンスにデータベースをインストールしてデータベースサーバーをカスタムで構築する必要がある。
RDSとPostgreSQL
・RDSはPostgreSQL13のサポートを開始している
・RDSではPostGISをサポートしている。
※PostGISはPostgreSQLオブジェクトRDB用の地理空間データベース拡張。地理オブジェクトがサポートされているので、SQLで場所のクエリを実行できるようになる
・RDSはEC2インスタンスとの連携やオンプレミスサーバーとの連携が可能
RDSへの負荷分散(効果が無い対応)
RDSへのアクセス集中を軽減するためにSQSによるキューイング処理を行う。。のは一見効果がありそうだが、負荷分散にはならない。
RDSへのリクエスト処理を並列化しても処理するRDS側のDBインスタンス数は変わらないのが理由。
RDSとOracle RAC
RDSではRAC構成は実現できないので、EC2インスタンスにOracleをインストールして構成する。
ちなみにRACはOracleのクラスタリング機能で、複数のサーバーで1つのデータベースを構成。
「負荷分散」「拡張性向上」「耐久性向上」を実施することができる。
RDSの読み取りパフォーマンス向上
RDSの読み取りパフォーマンスを向上させるためには以下のような対応を行う。
・RDSのリードレプリカを追加して、読み取り処理を分散させる
・Elasticacheによるキャッシュレイヤーを追加して、アクセスが集中する一部クエリをキャッシュ処理することで高速処理を実現し、RDSへの負荷を減少させる。
・ストレージタイプをIOPSの大きなサイズに変更することで、RDS本体のI/Oパフォーマンスを向上させる。
※IOPSはHDDやSSDの性能指標のひとつ
この中で用意に実行できてプロセスの改善効果が高いのはリードレプリカ。
RDSリードレプリカは、DBインスタンスのパフォーマンスと耐久性を強化する。
この機能により、読み取りが多いデータベースワークロードの場合、単一のDBインスタンスの容量の制約を超えて柔軟にスケールアウトできる。
既存のDBインスタンスに対してマネジメントコンソール画面から容易に追加することが可能。
混同しやすい点
RDSインスタンスのサイズをアップグレードする
IOPS性能によってパフォーマンスは向上するが、読み取り処理のスケーリングにはリードレプリカの方が効果的。
RDSのオートスケーリングを有効化する
スケーリングによりデータ容量の増強が可能になるが、パフォーマンスの向上にはならない
インスタンスタイプの変更
ストレージ最適化インスタンスなど、インスタンスの利用目的に合ったインスタンスタイプに変更することで、その特質に応じた性能が向上する可能性はある。
ただし、インスタンスタイプをマグネティックに変更することで、逆に性能が悪くなる可能性が高い。
おわりに
引き続き追記します!
以上です。