Anket のアーキテクチャを見直した結果 Redis はいなくなりました

Anket の話。

最近 bot 権限を付与した Anket ですが、今回はアーキテクチャの見直しなどを行いました。
blog.hatappi.me

今まで

f:id:hatappi1225:20190622120422p:plain

この構成になっている理由は以前記事を書いているのでそちらをご覧ください。

blog.hatappi.me

これから

f:id:hatappi1225:20190622120631p:plain

どこが変わったかよくわからないですね。
diff とってみます。
f:id:hatappi1225:20190622123609p:plain

Redis が消えてる 😲

なぜ Redis が消えたのか

まず Anket が Redis をどのように使っていたのをかを説明します。

  • Anket がインストールされた時の情報の管理
  • アンケートを作成するまでの情報を管理

後者のほうをもうちょっと説明します。

Anket は slash commands を使ってアンケートを作りはじめます。

一番シンプルなのは/anket 好きな色は? 赤 青 黄のように入力すると即座にアンケートが作られるものです。
それが次に示す図です。
f:id:hatappi1225:20190622170152j:plain

次は/anket 好きな色は?のようにアンケートのタイトルだけをいれた場合で、この場合はユーザーとAnketでいくつかのやりとりをしながらアンケートを作成することができます。
それが次に示す図です。
f:id:hatappi1225:20190622170229j:plain

このやりとりをする中でどのメッセージでやりとりをしているかなどのidを保存したりしています。

通常 Redis のデータはメモリ上に存在するため永続的ではないです。
そのためメンテナンスで再起動がかかったりするとデータが失われます。 

データの耐久性をあげる方法として Redis には AOF があります。
しかしドキュメントにも記載されてますが

AOF (Append Only File) は、cache.t1.micro ノードおよび cache.t2.* ノードではサポートされません。これらのタイプのノードの場合、appendonly パラメータ値は無視されます。

Anket では cache.t2.micro を使っているのでデータの永続化を考えると少々値段がかかるようです。
スナップショットをとるという方法も考えられますがスケジューリングできる期間が1日1回なので十分ではないです。

そこで今回は Redis をやめて今まで使っていた RDS に別データベースを作成することにしました。

最後に

AOF (Append Only File) は、cache.t1.micro ノードおよび cache.t2.* ノードがサポートされてないとは。。。