Redis導入したら、やらかしてしまった話


はじめに

最近インフラ周りを触り始めたエンジニアです。
日々予想外の出来事に悩みながら、一つ一つ勉強しています。
今回はElastiCacheを導入しようとしたときに、うっかりやってしまったミスを紹介します。

ElastiCacheの設定

ドキュメントやブログを参考にして以下のような構成で用意しました。
- キャッシュエンジン:Redis
- 1シャード3ノードの構成

※シャードとノードについてはこちらがわかりやすかったです。

よし(๑•̀ㅂ•́)و✧
そしてサーバの方でエンドポイントを設定します。
AWSのコンソールからクラスターを選択してエンドポイントを把握!そのままエンドポイントを設定しました...

何が起きたのか

1シャード3ノードの場合、以下のようになります。
Primary Node ✕ 1 = 読み書き可能
Replica Node ✕ 2 = 読み込みのみ可能
エンドポイントの設定でクラスターのエンドポイントを設定したために、キャッシュを書き込む際にReplica Nodeにも書き込みを行ってしまってました...そりゃエラーになるわけだぜベイベー...orz

どうすべきだったのか

現状はReplica Nodeを削除してPrimary Nodeのみで運用してます。
これ正直ベストはわかってないのですが、
書き込み時はPrimary Nodeのエンドポイントを指定
読み込み時はReplica Nodeのエンドポイントを指定
するのがよいのかなーと検討してます。
どなたかベスト・プラクティスを知ってる方いたらご教授いただきたいです...!

最後に

やっぱインフラは触ってみないとわからないこと多いですね。
挫けず日々精進したいと思います。