

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon ElastiCache Well-Architected レンズの信頼性の柱
<a name="ReliabilityPillar"></a>

信頼性の柱は、ワークロードがその意図した機能を果たし、需要に応じて迅速に障害から回復する方法に焦点を当てています。主なトピックとして、分散システムの設計、復旧計画、および要件の変更への対応方法があります。

**Topics**
+ [REL 1: 高可用性 (HA) アーキテクチャの導入をどのようにサポートしているか。](#ReliabilityPillarREL1)
+ [REL 2: ElastiCache を使用して目標復旧時点 (RPO) をどのように達成しているか。](#ReliabilityPillarREL2)
+ [REL 3: ディザスタリカバリ (DR) 要件をどのようにサポートしているか。](#ReliabilityPillarREL3)
+ [REL 4: フェイルオーバーを効果的に計画するにはどうすればよいか。](#ReliabilityPillarREL4)
+ [REL 5: ElastiCache コンポーネントがスケーリングに対応するように設計されがいるか。](#ReliabilityPillarREL5)

## REL 1: 高可用性 (HA) アーキテクチャの導入をどのようにサポートしているか。
<a name="ReliabilityPillarREL1"></a>

**質問レベルの紹介:** Amazon ElastiCache の高可用性アーキテクチャを理解することで、可用性イベントが発生しても回復力のある状態で運用できるようになります。

**質問レベルのメリット:** 障害に強い ElastiCache クラスターを構築することで、ElastiCache デプロイの可用性を高めることができます。
+ **[必須]** ElastiCache クラスターに必要な信頼性のレベルを決定します。完全に一時的なワークロードからミッションクリティカルなワークロードまで、ワークロードが異なれば回復力の基準も異なります。開発、テスト、本番環境など、運用する環境のタイプごとにニーズを定義します。

  キャッシュエンジン: ElastiCache for Memcached と ElastiCache for Valkey および ElastiCache for Redis OSS

  1. ElastiCache for Memcached にはレプリケーションメカニズムがなく、主に一時的なワークロードに使用されます。

  1. ElastiCache for Valkey と ElastiCache for Redis OSS は、以下で説明する HA 機能を提供します。
+ **[最良]** HA を必要とするワークロードでは、1 つのシャードしか必要としないスループット要件の低いワークロードでも、1 シャードあたり少なくとも 2 つのレプリカがあるクラスターモードで ElastiCache を使用します。

  1. クラスターモードを有効にすると、マルチ AZ が自動的に有効になります。

     マルチ AZ は、計画的または計画外のメンテナンスが発生した場合に、プライマリノードからレプリカへの自動フェイルオーバーを実行することでダウンタイムを最小限に抑え、AZ の障害を軽減します。

  1. シャーディングされたワークロードの場合、最低 3 つのシャードを使用するとフェイルオーバーイベント中の復旧が速くなります。これは、Valkey または Redis OSS クラスタープロトコルでは、クォーラムの達成にプライマリノードの過半数を利用可能にする必要があるためです。

  1. アベイラビリティ全体で 2 つ以上のレプリカを設定します。

     レプリカが 2 つあると、1 つのレプリカがメンテナンス中のとき、読み取りのスケーラビリティが向上し、シナリオでの読み取りの可用性も向上します。

  1. Graviton2 ベースのノードタイプ (ほとんどのリージョンでのデフォルトノード) を使用します。

     ElastiCache では、これらのノードでのパフォーマンスがさらに最適化されました。それにより、レプリケーションと同期のパフォーマンスが向上し、全体的な可用性が向上しています。

  1. 予想されるトラフィックのピークに対応するためにモニタリングし、適切なサイズに調整します。負荷が高いと、エンジンが応答しなくなり、可用性に影響する可能性があります。`BytesUsedForCache` および `DatabaseMemoryUsagePercentage` は、メモリ使用量を示す優れた指標で、`ReplicationLag` は、書き込み速度に基づくレプリケーションの状態を示す指標です。これらのメトリクスを使用してクラスタースケーリングをトリガーできます。

  1. [本番環境でフェイルオーバーイベントが発生する前にフェイルオーバー API ](https://docs.amazonaws.cn/en_us/AmazonElastiCache/latest/APIReference/API_TestFailover.html)でテストすることで、クライアント側の耐障害性を確保します。

  **[リソース]: **
  + [可用性を向上させるための ElastiCache for Redis OSS の設定](https://aws.amazon.com/blogs/database/configuring-amazon-elasticache-for-redis-for-higher-availability/)
  + [レプリケーショングループを使用する高可用性](Replication.md)

## REL 2: ElastiCache を使用して目標復旧時点 (RPO) をどのように達成しているか。
<a name="ReliabilityPillarREL2"></a>

**質問レベルの紹介:** ワークロードの RPO を理解して、ElastiCache のバックアップとリカバリの戦略に関する意思決定に役立てます。

**質問レベルのメリット:** RPO 戦略を策定することで、ディザスタリカバリシナリオが発生した場合の事業継続性を向上させることができます。バックアップと復元のポリシーを設計すると、ElastiCache データの目標復旧時点 (RPO) の達成に役立ちます。ElastiCache には、Amazon S3 に保存されるスナップショット機能と、設定可能な保持ポリシーがあります。これらのスナップショットは、定義されたバックアップウィンドウ中に取得され、サービスによって自動的に処理されます。ワークロードにさらに細かいバックアップが必要な場合は、1 日あたり最大 20 の手動バックアップを作成できます。手動で作成されたバックアップにはサービス保持ポリシーがなく、無期限に保存できます。
+ **[必須]** ElastiCache デプロイの RPO を理解し、文書化します。
  + Memcached はバックアッププロセスを提供していないことに注意してください。
  + ElastiCache のバックアップと復元の機能を確認してください。
+ **[最良]** クラスターをバックアップするためのプロセスをしっかりと伝えておきます。
  + 必要に応じて手動バックアップを開始します。
  + 自動バックアップの保存ポリシーを確認します。
  + 手動バックアップは無期限に保持されることに注意してください。
  + 自動バックアップは使用率が低い時間帯にスケジュールします。
  + リードレプリカに対してバックアップオペレーションを実行して、クラスターのパフォーマンスへの影響を最小限に抑えます。
+ **[良い]** ElastiCache のスケジュールバックアップ機能を活用して、定義した時間帯に定期的にデータをバックアップします。
  + バックアップからの復元を定期的にテストします。
+ **[リソース]: **
  + [Redis OSS](https://aws.amazon.com/elasticache/faqs/#Redis)
  + [ElastiCache のバックアップと復元](backups.md)
  + [手動バックアップの作成](backups-manual.md)
  + [自動バックアップのスケジュール](backups-automatic.md)
  + [ElastiCache クラスターのバックアップと復元](https://aws.amazon.com/blogs/aws/backup-and-restore-elasticache-redis-nodes/)

## REL 3: ディザスタリカバリ (DR) 要件をどのようにサポートしているか。
<a name="ReliabilityPillarREL3"></a>

**質問レベルの紹介:** ディザスタリカバリは、あらゆるワークロードプランニングの重要な側面です。ElastiCache には、ワークロード回復力要件に基づいてディザスタリカバリを実装するためのオプションがいくつか用意されています。Amazon ElastiCache グローバルデータストアを使用すると、1 つのリージョンのクラスターに書き込み、そのデータを他の 2 つのクロスリージョンのレプリカクラスターから読み取ることができるため、リージョン間での低レイテンシーの読み取りとディザスタリカバリが可能になります。

**質問レベルのメリット:** さまざまな災害シナリオを理解して計画することで、事業継続性を確保できます。DR 戦略は、コスト、パフォーマンスへの影響、およびデータ損失の可能性とのバランスを取る必要があります。
+ **[必須]** ワークロード要件に基づいて、すべての ElastiCache コンポーネントの DR 戦略を策定し、文書化します。ElastiCache がユニークなのは、完全に一時的で DR 戦略を必要としないユースケースもあれば、逆に、きわめて強固な DR 戦略を必要とするユースケースもあるという点です。すべてのオプションは、コストの最適化に対して比較検討する必要があります。回復力を高めるには、より多くのインフラストラクチャが必要です。

  リージョンレベルおよびマルチリージョンレベルで利用可能な DR オプションを理解します。
  + AZ 障害を防ぐために、マルチ AZ 配置が推奨されます。マルチ AZ アーキテクチャでは、必ずクラスターモードを有効にして、最低 3 つの AZ が利用可能な状態でデプロイします。
  + リージョンの障害を防ぐために、グローバルデータストアの使用が推奨されます。
+ **[最良]** リージョンレベルの耐障害性を必要とするワークロードには、グローバルデータストアを有効にします。
  + プライマリのパフォーマンスが低下した場合に備えて、セカンダリリージョンへのフェイルオーバーを計画します。
  + 本番環境でフェイルオーバーする前に、マルチリージョンのフェイルオーバープロセスをテストします。
  + `ReplicationLag` メトリクスをモニタリングして、フェイルオーバーイベント中のデータ損失の潜在的な影響を把握します。
+ **[リソース]: **
  + [障害の軽減](disaster-recovery-resiliency.md#FaultTolerance)
  + [Global Datastore を使用した AWS リージョン間のレプリケーション](Redis-Global-Datastore.md)
  + [クラスターのサイズ変更 (オプション) によるバックアップからの復元](backups-restoring.md)
  + [マルチ AZ を使用して ElastiCache for Valkey と ElastiCache for Redis OSS のダウンタイムを最小限に抑える](AutoFailover.md)

## REL 4: フェイルオーバーを効果的に計画するにはどうすればよいか。
<a name="ReliabilityPillarREL4"></a>

**質問レベルの紹介:** 自動フェイルオーバーでマルチ AZ を有効にすることは、ElastiCache のベストプラクティスです。場合によっては、ElastiCache for Valkey と ElastiCache for Redis OSS はサービス運用の一貫としてプライマリノードを置き換えます。例えば、計画されたメンテナンスのイベントや、ノードの障害またはアベイラビリティゾーンの問題という万一の場合が含まれます。フェイルオーバーが成功するかどうかは、ElastiCache とクライアントライブラリの設定の両方に依存します。

**質問レベルのメリット:** ElastiCache フェイルオーバーのベストプラクティスを特定の ElastiCache クライアントライブラリと組み合わせて実行すると、フェイルオーバーイベント中の潜在的なダウンタイムを最小限に抑えることができます。
+ **[必須]** クラスターモードが無効になっている場合は、タイムアウトを使用して、クライアントが古いプライマリノードから切断して、更新されたプライマリエンドポイントの IP アドレスを使用して新しいプライマリノードに再接続する必要があるかどうかを検出できるようにします。クラスターモードが有効になっている場合、クライアントライブラリは基盤となるクラスタートポロジの変更を検出します。これは、ほとんどの場合、ElastiCache クライアントライブラリの設定によって実現されます。これにより、頻度と更新方法も設定できます。各クライアントライブラリには独自の設定があり、詳細は対応するドキュメントに記載されています。

  **[リソース]: **
  + [マルチ AZ を使用して ElastiCache for Valkey と ElastiCache for Redis OSS のダウンタイムを最小限に抑える](AutoFailover.md)
  + ElastiCache クライアントライブラリのベストプラクティスを確認してください。
+ **[必須]** フェイルオーバーが成功するかどうかは、プライマリノードとレプリカノード間のレプリケーション環境が正常であるかどうかによります。Valkey および Redis OSS レプリケーションの非同期性、およびプライマリノードとレプリカノード間のレプリケーションの遅延を報告するための CloudWatch メトリクスを確認して理解します。より高いデータの安全性が求められるユースケースでは、WAIT コマンドを活用して、接続されたクライアントに応答する前にレプリカが書き込みを確認するよう強制します。

  **[リソース]: **
  + [Valkey または Redis OSS のメトリクス](CacheMetrics.Redis.md)
  +  [Amazon CloudWatch を使用した ElastiCache のモニタリングのベストプラクティス](https://aws.amazon.com/blogs/database/monitoring-best-practices-with-amazon-elasticache-for-redis-using-amazon-cloudwatch/)
+ **[最良]** ElastiCache テストフェイルオーバー API を使用して、フェイルオーバー中のアプリケーションの応答性を定期的に検証します。

  **[リソース]: **
  + [ElastiCache でのリードレプリカへの自動フェイルオーバーのテスト](https://aws.amazon.com/blogs/database/testing-automatic-failover-to-a-read-replica-on-amazon-elasticache-for-redis/)
  + [自動フェイルオーバーのテスト](AutoFailover.md#auto-failover-test)

## REL 5: ElastiCache コンポーネントがスケーリングに対応するように設計されがいるか。
<a name="ReliabilityPillarREL5"></a>

**質問レベルの紹介:** スケーリング機能と利用可能なデプロイトポロジを理解することで、ElastiCache コンポーネントは変化するワークロード要件に合わせて経時的に調整できます。ElastiCache には、イン/アウト (水平) とアップ/ダウン (垂直) の 4 通りのスケーリングがあります。

**質問レベルのメリット:** ElastiCache デプロイのベストプラクティスに従うと、スケーリングの柔軟性が最大化されるだけでなく、障害の影響を最小限に抑えるために水平方向にスケーリングするという Well Architected の原則も満たすことができます。
+ **[必須]** クラスターモード有効ポロジとクラスターモード無効トポロジの違いを理解します。ほとんどの場合、クラスターモードを有効にしてデプロイすることが推奨されます。これは、時間の経過とともにスケーラビリティが向上できるためです。クラスターモードが無効になっているコンポーネントでは、リードレプリカを追加することにより水平方向にスケーリングする機能に制限があります。
+ **[必須]** いつ、どのようにスケーリングすべきかを理解します。
  + READIOPS を増やすには、レプリカを追加します
  + WRITEOPS を増やすには、シャードを追加します (スケールアウト)
  + ネットワーク IO を増やすには — ネットワーク最適化インスタンス、スケールアップを使用します
+ **[最良]** ElastiCache コンポーネントをクラスターモードを有効にしてデプロイし、少ないノード数で大規模にするのではなく、小さなノードを数多くします。これにより、ノード障害時の影響範囲を効果的に制限できます。
+ **[最良]** クラスターにレプリカを含めると、スケーリングイベント中の応答性が向上します
+ **[良い]** クラスターモードが無効になっている場合は、リードレプリカを活用して全体的な読み取り容量を増加します。ElastiCache は、クラスターモードが無効な状態で最大 5 つのリードレプリカをサポートし、垂直スケーリングもサポートします。
+ **[リソース]: **
  + [ElastiCache クラスターのスケーリング](Scaling.md)
  + [オンラインスケールアップ](redis-cluster-vertical-scaling.md#redis-cluster-vertical-scaling-scaling-up)