IT-Q

キャッシュを入れて、逆に困ることはありますか。

直したはずの内容が反映されず、コードのバグかキャッシュが古いだけかを判断できなくなります。もう1つ危ないのが、ユーザーごとに違う内容を共有キーでキャッシュする事故です。

面接官が見ているのはキャッシュの代償を語れるか。

これは「キャッシュした内容を、更新されたタイミングで最新にしたい。どうしますか。」への追撃質問です。

よくある答えと、面談でどう見られるか

  • 古い内容が出て、コードのバグかキャッシュかの切り分けに時間を取られる
    調査時間を持っていかれるのが実務上いちばん痛いところです。
  • ユーザーごとに違うデータを共有キャッシュに入れると、他人のデータが見える
    最も重い事故です。ここに言及できると、経験があると受け取られます。
  • メモリを消費する
    間違いではありませんが、実務で本当に困るのは「反映されない」と「他人のデータが見える」の方です。
  • とくに困ることはない。速くなるだけ
    速度と引き換えに考えることが増えます。代償を挙げられないと、入れる判断も雑になります。

面接官は何を見ているか

  • 古い内容が出る問題を挙げた
  • 原因の切り分けが難しくなる点に触れた
  • ユーザーごとに違うデータの扱いに気づいた

模範解答

一番困るのは、直したはずの内容が反映されず、コードのバグなのかキャッシュが古いだけなのか、その場で判断できないことです。調査時間を持っていかれます。

もう1つ危ないのは、ユーザーごとに違う内容をキャッシュしてしまう事故です。共有のキャッシュに個人向けの内容が入ると、他人のデータが見えます。これは体感できる不具合ではなく、気づかないまま流れ続けるので影響が大きくなります。

だから、ログイン後の個人向けデータは原則キャッシュしないところから始めて、必要になったら範囲を絞って入れる、という順序にします。