Open4

Amazon ElastiCacheが高いから安くする方法を検討する

sjnyasjnya

背景

  • サーバサイドアプリケーション(NestJS)において、非同期処理を行う際に、BullMQが推奨されており、BullMQではRedisが必要なので、Amazon ElastiCache for Redisを使っていた
  • Amazon ElastiCacheの利用料金が高い
  • ただの非同期処理の利用用途のため、応答時間を始めとしたインメモリなニーズはなく、Amazon ElastiCacheはオーバースペックなので、代替手段を考える
  • コスト垂れ流しが痛いので急ぐ
sjnyasjnya

選択肢

  1. Redisサーバを自前で建てる
  2. Amazon ElastiCacheのコスト最適化をする
  3. Redisを用いない非同期処理に作り替える
  4. 今、NestJSを動かしてるコンテナでRedisも動かす

1、2はコスト最適化効果が見込みづらい(やったところでそこまで安くできないかもしれない)、3はアプリケーションの修正コストが高いとのことで、Bad Practiceだけど、4の方針でまずは検討

sjnyasjnya

今、NestJSを動かしてるコンテナでRedisも動かす

@@ -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