新型コロナウイルスに関係する内容の可能性がある記事です。
新型コロナウイルス感染症やコロナワクチンについては、必ず1次情報として厚生労働省首相官邸のウェブサイトなど公的機関で発表されている発生状況やQ&A、相談窓口の情報もご確認ください。※非常時のため、すべての関連記事に本注意書きを一時的に出しています。
見出し画像

一ヶ月でアクセスが4倍になった話

CAMPFIRE 開発チーム

こんにちは!SREの岩崎です。今回は「一ヶ月でアクセスが4倍になった話」と題して、最近の急激なアクセス増に対応した話を書こうと思います。SEO対策やグロース施策でアクセスが4倍になった話ではありませんのでご了承ください…。

コロナウィルスサポートプログラム

前回も少し触れた通り、CAMPFIREではコロナウィルスサポートプログラムというコロナで被害を受けられた方々向けのプログラムを展開しています。

そして非常にありがたいことに、現在までたくさんの方々にこのプログラムを利用していただいています。結果として、CAMPFIREの流通額も過去最高にまで伸び、それに伴ってアクセスも急激に増加していきました。

自分たちが関わっているサービスが多くの人の役に立っているという嬉しさの一方で、SREチームとしては急激なトラフィック増に対応する必要がありました。

下のグラフを見ていただくとわかるように、4月から5月にかけては一ヶ月でアクセスが4倍になるという驚異的な月でした。

画像1

アクセス増対策

アクセス増対策としてまず行ったのはEC2インスタンスとElastiCache、RDSインスタンスの増強です。CAMPFIREではECSを使っており、Fargateは使っていないためバックエンドはEC2となっています。まず、このEC2インスタンスの数を増やしました。また、ElastiCacheとRDSについては現状アクティブが一台だけの構成のため、スケールアップで対応しました。

上記と並行して、スロークエリ対策も行いました。CAMPFIREではスロークエリをSlackに通知するようにしているため、少しでも怪しそうなクエリがあれば優先的に潰すようにしました。

モニタリングもこれまで以上に入念に行いました。SREチームのMTGでは毎回ローテーションでMackerelのメトリクスを眺めるようにし、EC2やRDSの数値に異常があればすぐに対応しました。

また、これ以上アクセスが増えた場合のプランBとして、マルチDBの実装や負荷試験環境の構築も行いました。

マルチDB

マルチDBは本当はRails6に上げてからRails6の機能を使いたかったのですが、当時の伸びを考えると間に合いそうになかったため、仕方なくswitch_pointを使って実装しました。今はトラフィックが落ち着いているのでこの実装が日の目を見ることはなさそうですが、switch_pointは薄くてなかなか良かったです。

実装にあたっては主に以下の記事を参考にさせていただきました。ありがとうございました!
https://tech.raksul.com/2018/08/03/rails_switch_point/

実装中に何箇所かテストでエラーが出たため、テストの時はリードDBを見に行かないように独自のラッパーメソッドを実装して対応しました。

# app/models/application_record.rb

self.abstract_class = true

use_switch_point :campfire unless Rails.env.test?

def self.with_readable
  if Rails.env.test?
    yield
  else
    with_readonly { yield }
  end
end 

コミュニケーション

アクセスが伸びていた時期は関係各所とこれまで以上にコミュニケーションを取るようにしました。ビジネス側に対しては、もし大型案件が公開されるなどの情報があれば早めに教えてもらい、必要に応じて準備するようにしました。

開発チームに対しても大きな変更があれば事前に教えてもらうようにし、並行してアクセスが多い時間帯のデプロイは避けてもらうようにしました。また、以前のように一気に半分のインスタンスを入れ替えるようなデプロイではなく、常に80%は残すようにするなどパラメーターを調整しました。

開発チームからすれば生産性が落ちてしまったと感じられるかもしれませんが、全社的な状況を説明し理解してもらいました。

終わりに

今回のコロナ騒動でCAMPFIREは急激にアクセスが伸びたわけですが、対策の甲斐あってサーバはほぼ無傷で乗り切ることができました。

振り返って、普段からスケールしやすい構成にしていたこと、関係各所としっかりコミュニケーションを取りながら対策できたことが大きかったと感じています。関係者の方々はどうもありがとうございました。

一ヶ月でトラフィックが4倍になるのはなかなかない経験ですが、今回経験できて良かったと思います。とはいえ、コロナの影響でもっと急激なトラフィック増に見舞われたところもあるのではないかと思っています。落ち着いたらぜひその方たちの話も聞いてみたいところです。インフラは地味な仕事ですが、サービスを支える大事な仕事です。これからもお互い頑張っていきましょう!

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
CAMPFIRE 開発チーム
国内最大のクラウドファンディング「CAMPFIRE : https://camp-fire.jp 」開発チーム公式 note 🔥