アフィリエイト広告を利用しています
はじめに
11月に入ったら一気に寒くなってきましたね~。この時期は温泉に行きたい欲が大きくなって、旅行を考えている作者です。とは言っても、春は山口・長門、夏は秋田・乳頭とどの季節も行ってますが。笑
今回は、今の業務で運用しているAWSで体験した、気を付けたいポイントを書いていこうと思います。
ElastiCache の運用
ElastiCacheは、MemcachedとRedisの2種類に、先月からはValkeyという新しいキャッシュが登場しました。今の業務ではRedisを使用していますが、Memcachedと違ってデータ保持ができて、特にSession情報の保持によく使われてますね。でもRedisはシングルスレッドで動くので、CPUコア数を上げても、比例して性能が上がるわけではないので、使用率改善でCPUだけに注目しないように注意です。また、メモリ使用率は使われているデータ量に関連するので、こちらもスケールインの際はインスタンスタイプのメモリ領域よりもデータ量が多ければ失敗しますので注意です。
ElastiCacheを運用していると、定期的にサービス更新があり、重要度によっては自動的に更新をスケジュールされるのですが、大半はスケジューリングされない更新ばかりです。これが運用上めんどくさいなと思うのが、この場合のサービス更新が、手動で即時実行するのみしかできないことです。時間を指定して実施(メンテナンスウィンドウ時とか)するには、スクリプトを組んでLambdaなどで時間になったらそのスクリプトを実行するなどしないといけません。
Fargate Spotの導入
Fargate Spotは、EC2のスポットインスタンスのようにAWS側で余っているリソースを割安で利用できるインスタンスで、タスク中断のリスクはあるものの、通常の3割の価格で利用できるのは魅力です。Capacity Provider で導入割合を決めて、CPU使用率的にこの分はSpot化したいや、開発環境は全部Spotにしたいなどができるので、コスト削減で是非使いたいところです。
問題は、TerraformでAWSリソースを管理している時です。Fargate Spotを導入するには、capacity_provider_strategyの設定をするのですが、Terraformで設定すると、今動いているECSの更新には当たらず、サービスの作り直しになり、一時的にサービスが止まります。そのため、オンライン実装には、Terraformで設定する前にCLIコマンドで設定するか、ignore_changesでTerraform実行後にCLIやコンソールで対応するかが必要になります。(2024/10時点)
おわりに
今回は、ElastiCacheとFargate Spotについて記載しました。
この記事はシリーズ化しようと思いますので、今後も自身の体験を記載していきます。是非よろしくお願いします。

コメント