[レポート] Amazon ElastiCacheの新機能 #DAT323 #reinvent

2019.12.31

本記事は、AWS re:Invent 2019 の「DAT323-R1 - [REPEAT 1] Whatʼs new with Amazon ElastiCache」についてレポートします。

セッション情報

スピーカー

  • Nir Mashkowski - PM, Amazon Web Services
  • Ruchita Arora - Senior Product Manager Tech, Amazon Web Services
  • Itay Maoz - Senior Manager, Software Engineering, Amazon Web Services

セッション概要

Since re:Invent 2018, the Amazon ElastiCache team has been hard at work innovating on behalf of customers. In this session, we review the work that has been done in 2019 to make sure that ElastiCache is the most cost-effective and best performing Redis- and Memcached-compatible cloud service.

re:Invent 2018以来、Amazon ElastiCacheチームは顧客に代わって革新に取り組んでいます。 このセッションでは、2019年に行われた作業を確認して、ElastiCacheが最も費用効果が高く、パフォーマンスが最高のRedisおよびMemcached互換のクラウドサービスであることを確認します。

レポート

リアルタイムアプリケーションには低遅延と高スループットが必要

  • 数十億のデバイスが常にWebに接続している
  • 低レイテンシが求められている

A one size fits all database doesn't fit anyone - All Things Distributed

CTOのブログで、データベースに対する考え方の記事。1つのデータベースですべての要件を満たすことは難しく、目的に合ったものを使用する必要がある。

データカテゴリと一般的なユースケース

カテゴリ 特徴 用途
関係データベース 参照整合性、ACIDトランザクション、および書き込み時スキーマ CRM, 金融
キーバリュー 高いスループットとデータの高速取り込みによる低遅延のキー検索 リアルタイム入札、ショッピングカート、ソーシャル、製品カタログ、顧客の好み
ドキュメント指向 あらゆる属性のクエリをサポートするドキュメントのインデックス作成と保存 コンテンツ管理、パーソナライズ、モバイル
インメモリ マイクロ秒のレイテンシ、キーベースのクエリ、およびデータ構造 リーダーボード、リアルタイム分析、およびキャッシュ
グラフ指向 データ間の関係を簡単かつ迅速に作成およびナビゲートする 不正検出、ソーシャルネットワーキング、および推奨エンジン

リアルタイムアプリケーションには低遅延と高い同時実行性が必要

  • キャッシュ
  • リアルタイム分析
  • ゲームリーダーボード
  • 地理空間
  • メディアストリーミング
  • セッションストア
  • チャットアプリ
  • メッセージキュー
  • 機械学習

Memcached

  • 高速
  • オープンソース
  • 非永続化
  • very established
  • スケールが容易
  • slab allocator
  • 文字列、オブジェクトのサポート
  • マルチスレッド
  • インメモリキーバリューデータストア

Redis

  • 高速
    • ほとんどのコマンドで1ミリ秒以下の遅延
  • オープンソース
  • シンプル
  • 高可用性
    • レプリケーション
  • 原子性
    • トランザクションのサポート
  • インメモリキーバリューストア
  • パワフル
    • 200以上のコマンド, Luaスクリプト, チリ空間、Pub/Sub
  • さまざまなデータ構造
    • 文字列、リスト、ハッシュ、セット、ソート済みセット、ストリーム、ビットマップ、HyperLogLogs
  • バックアップ、リストア
    • スナップショットを有効

Redisは最も人気のあるキーバリューデータベース

Amazon Elasticache

Amazon ElastiCacheは、完全に管理されたRedisとMemcachedを提供します。 一般的なオープンソース互換のインメモリデータストアをシームレスに展開、実行、およびスケーリングします。 高スループットおよび低レイテンシのメモリ内データストアからデータを取得することにより、データ集約型のアプリを構築したり、既存のアプリのパフォーマンスを向上させたりします。 Amazon ElastiCacheは、ゲーム、アドテク、金融サービス、ヘルスケア、IoTアプリの一般的な選択肢です。

Amazon ElastiCache for Redis の紹介

  • 高い性能
    • ミリ秒未満の応答時間のメモリ内データストアとキャッシュ
  • フルマネージド
    • AWSは、すべてのハードウェアおよびソフトウェアのセットアップ、構成、監視を管理
  • スケーラブル
    • レプリカを使用した読み取りスケーリング
    • シャーディングを使用した書き込みとメモリのスケーリング
    • オンラインスケーリング
  • Reliable
    • マルチAZ
    • 深い監視
    • 自動フェイルオーバー
  • セキュア、コンプライアンス
    • Amazon VPC
    • HIPAA, PCI, FedRAMP
    • 保管中および転送中の暗号化
    • 認証
  • Redis互換
    • Redis 5.0.5 サポート
    • Redisクライアント互換

顧客

Amazon ElastiCache for Redis: 2019のアップデート

  • パフォーマンス
    • I/Oの拡張
    • T3インスタンスのサポート
  • セキュリティ
    • 認証トークンのローテーション
    • CMK
    • コマンドのリネーム
  • フルマネージド
    • セルフマネージド(Redis on EC2)からのオンラインマイグレーション
    • セルフサービスメンテナンスアップデート
  • スケーラビリティ
    • スケールアップ、ダウン
    • リーダーエンドポイント
  • OSS互換
    • Redis 5.0.5
    • Memcached 1.5.16

セルフマネージドRedisの課題

  • 管理の難しさ
    • サーバーのプロビジョニング、ソフトウェアのパッチ適用、セットアップ、構成、およびバックアップの管理
  • 高可用性を確保するのは難しい
    • 高速なエラー検出と修復を実装する必要がある
  • スケールの難しさ
    • オンラインスケーリングはエラーが発生しやすいため、レプリケーションパフォーマンスを監視する必要がある
  • 高価
    • 人、プロセス、ハードウェア、ソフトウェアに投資

Online Migration to Amazon ElastiCache

  • スナップショットを作成し復元するやり方ではダウンタイムが発生するためこのツールを作成した

Demo: Amazon EC2 migration tool and performance

セルフマネージドRedis on EC2からElastiCache for Redisへのオンラインマイグレーションのデモ

パフォーマンス

パフォーマンスの旅

  • Amazon ElastiCache用に最適化されたM5およびR5インスタンスをローンチしたとき、パフォーマンスの旅は2018年第4四半期に始まりました。
  • お客様に最高のパフォーマンスと最高の価格/性能を提供する方法を常に模索
  • これには、さまざまなハードウェアオプションの評価と最適化が含まれる

M5、R5最適化インスタンス

  • 最大170 TBのメモリ内容量まで拡張
  • 専用のハードウェアと軽量のハイパーバイザーであるAWS Nitro Systemは、ベアメタルと見分けがつかないパフォーマンスを提供
  • 最大3.1 GHzのカスタムIntel XeonスケーラブルプロセッサとAVX-512

Redisはシングルスレッドアーキテクチャ

  • シンプルさ
  • 競合や同期の必要がない
  • 理解と拡張が簡単
  • 豊富な機能を簡単にサポート
  • シェアードナッシングアーキテクチャ - シャーディングによる拡張
  • キャッシュの一貫性を改善

Redis connection processing: Sequential

  • シングルスレッドなので多数のクライアントが接続した場合にボトルネットがある
  • 処理時間の70%はI/O層との通信にかかっている

拡張I/O処理

Redis 用の Amazon ElastiCache を使用したアプリケーションパフォーマンスの向上とコストの削減 | Amazon Web Services ブログ

T3サポート

  • 使用中に一時的なスパイクが発生する可能性のあるエントリーレベル、中小規模のAmazon ElastiCacheワークロードに最適
  • T3は、バーストCPU使用を処理する能力を持ち、短時間でベースライントラフィックに対して1秒あたり3倍のリクエストのトラフィックスパイクを維持できます。
  • RedisおよびMemcachedのT2ノードよりも最大36%優れたベースラインパフォーマンスと価格/パフォーマンス
  • T2からT3へのオンラインスケールアップ
  • 無料利用枠 T2と同じ価格

セキュリティ

設計により保護

ElastiCacheクラスターはパブリックIPを持たないためインターネットから攻撃できない

アクセスパターン

WebサーバなどのEC2からアクセスする

TLSでクラスターとデータを保護する

クラスターを出入りするトラフィックを暗号化する

セキュリティアップデート

顧客管理顧客マスターキー(CMK)による暗号化

  • お客様は、セキュリティ要件を満たすために、より多くの制御と柔軟性を求めていた
  • 顧客管理CMKは、作成、所有、管理するAWSアカウントのCMK
  • KMSの顧客管理CMKを使用した保存時の暗号化
  • Redis用Amazon ElastiCacheは、S3に保存されているサービスバックアップを含むすべてのデータを暗号化キーで暗号化

Redis認証トークンの変更

  • この機能の前は、作成時に認証トークンが一度だけ設定され変更できなかった
  • トークンのローテーションを許可することによりセキュリティを改善
  • クライアントを中断せずに認証トークンを変更する2段階のプロセス
  • 認証トークンなしで以前にセットアップされた既存のクラスターに新しいトークンを追加する
  • 転送中の暗号化が有効なクラスターでサポート
  • Redis 5.0.5以降でサポート

コマンドの名前変更

  • 潜在的に侵入的または高価なコマンドの誤用防止
  • フルマネージド、オンライン、手動介入なし、ダウンタイムなし
  • 名前の変更は、再起動および置換しても持続
  • Redis 5.0.3以降でサポート

スケーラビリティ

  • クラスターモードが無効
    • 1つのマスタノード、5つのリードレプリカ
  • クラスターoモードが有効
    • クラスター内のデータ全体の断片を含む複数のマスターノード
    • 各シャードには最大5つのリードレプリカを含めることができる
    • クラスターには、ノードの種類に関係なく、最大250のノードを含めることができます
    • オンラインスケールイン/アウトで最大170TBをサポート

オンラインスケールアップ、ダウン

  • ピークトラフィックに合わせてスケールアップ
  • 適切なサイズに縮小してコストを節約
  • 完全にオンライン、クラスターは読み取りと書き込みを引き続き提供
  • Amazon ElastiCache for Redis 5.0.5
  • クラスターモードが有効、クラスターモードが無効(自動フェールオーバーが有効)
  • すべてのシャードのスケールアップ/ダウン

読込みエンドポイント(クラスターモード無効時)

  • すべての読み取りトラフィックを単一のリーダーエンドポイント経由で転送
  • すべてのリードレプリカ間でエンドポイントへの着信接続を分散
  • クライアントを中断したり、アプリケーションを変更したりすることなく、レプリカを追加または削除
  • クラスターモードが無効

フルマネージド

セルフサービスアップデート

  • Amazon SNS、AWS Personal Health Dashboard、Amazon CloudWatchイベント、またはメールでサービスの更新が利用可能になったときに通知を受け取ります
  • 更新をいつ適用するかコントロール可能
  • 進行状況をリアルタイムで追跡
  • 自動フェイルオーバー対応クラスターのオンライン更新

さいごに

Elasticache for Redisに多くの改善がされていることがわかりました。システムを構築する上でElasticacheを利用することも多いかと思います。そのようなサービスに様々な改善がされていることは喜ばしいですね。アーキテクチャを考える上でポイントとなるようなアップデートもありました。本記事が参考になれば幸いです。