Open4
Amazon ElastiCacheが高いから安くする方法を検討する
背景
- サーバサイドアプリケーション(NestJS)において、非同期処理を行う際に、BullMQが推奨されており、BullMQではRedisが必要なので、Amazon ElastiCache for Redisを使っていた
- Amazon ElastiCacheの利用料金が高い
- ただの非同期処理の利用用途のため、応答時間を始めとしたインメモリなニーズはなく、Amazon ElastiCacheはオーバースペックなので、代替手段を考える
- コスト垂れ流しが痛いので急ぐ
選択肢
- Redisサーバを自前で建てる
- Amazon ElastiCacheのコスト最適化をする
- Redisを用いない非同期処理に作り替える
- 今、NestJSを動かしてるコンテナでRedisも動かす
1、2はコスト最適化効果が見込みづらい(やったところでそこまで安くできないかもしれない)、3はアプリケーションの修正コストが高いとのことで、Bad Practiceだけど、4の方針でまずは検討
今、NestJSを動かしてるコンテナでRedisも動かす
- Dockerfileを修正(NestJSからredisの向き先もlocalhostに変更)
参考:Running redis on nodejs Docker image - Stack Overflow
@@ -1,5 +1,8 @@
FROM public.ecr.aws/docker/library/node:18-bullseye-slim
+RUN apt-get update
+RUN apt-get -y install redis-server
+
WORKDIR /app
COPY dist/ /app/dist
@@ -7,4 +10,4 @@ COPY package*.json /app/
RUN npm ci --omit=dev
-CMD ["node", "/app/dist/main"]
+CMD redis-server --daemonize yes && node /app/dist/main
Amazon ElastiCacheを削除
Easy...
- この方法はBad practiceなので別の手段を引き続き検討します。