AppSignalでRailsのSolid Cacheパフォーマンスを監視・追跡する方法
AppSignalはSolid Cacheに対応しました。他のRailsキャッシュストアと同様に、キャッシュのパフォーマンスに関する深いインサイトを取得できるようになっています。
この記事では、Solid Cacheの概要と、AppSignalでアプリのキャッシュを監視することで得られるメリットについてご紹介します。
Solid Cacheとは?
Solid Cacheは、プラグアンドプレイでデータベース非依存のリモートディスクストレージ型キャッシュです。RedisやMemcachedがメモリ上にデータを保存するのに対し、Solid CacheはActive Recordを通じてSQLデータベースを利用し、キャッシュをディスク上に保持します。
比較的安定した大量の履歴データを扱うアプリケーションでは、Solid Cacheが有力な選択肢になります。たとえば37signalsのメールサービス「Hey」では、新着メール以外の過去のメールが突然変更されることはないため、Solid Cacheとの相性が非常に良いのです。
AppSignalでSolid Cacheを監視する
AppSignalはオランダ生まれです。オランダといえば風車や運河、ストロープワッフル、そして何よりも雨が有名。自転車が主な移動手段である私たちにとって、いつ雨が降るかを知ることは非常に重要です。そこで、SkySignalというRailsアプリを作成しました。
SkySignalはAPIに接続してオランダ各地の気象データを取得し、ユーザーの所在地で雨が降るかどうかをお知らせします。開発者がDRY原則を守りながら(🥁)、ずぶ濡れにならずに済むようサポートするアプリです。
Heyと同様に、私たちもキャッシュを活用して天気予報を素早くユーザーへ届け、アプリのレスポンスタイムを最適化したいと考えています。今回は、過去の気象データをキャッシュするためにSolid Cacheを使用します。
Solid Cacheを選んだ理由もHeyと同じです。Redisのような代替キャッシュストアと比べ、はるかに低コストで大量のデータをキャッシュできるからです。
Solid Cacheのインストール
Solid Cacheのインストールは簡単です。公式Readmeに記載されている手順に従いましょう。
- まず、対象環境の設定ファイルで、Solid Cacheをキャッシュストアとして設定します。
- 次に、Gemfileに
solid_cacheを追加します。 - そして、マイグレーションを作成して実行し、データベースにキャッシュ用テーブルを作成します。
ここではプライマリデータベースにキャッシュを書き込みますが、必要に応じて、キャッシュを複数のデータストアにシャーディングするようSolid Cacheを設定することも可能です。シャーディングとは、キャッシュを小さな単位に分割し、複数のデータベース(シャード)へ分散させる仕組みです。
続いて、アプリを監視するためにAppSignalをインストールしましょう。
AppSignalのインストール
AppSignalのインストールはシンプルです。インストールウィザードを使えば、すぐに監視を開始できます。
ウィザードを開始するには、AppSignalのアプリケーション概要ページにある「Add app」ボタンをクリックしてください。サインイン済みであれば、ウィザードへのリンクから直接開始することもできます。
ウィザードは、AppSignalのインストールが正常に完了したことを通知してくれます。万が一問題が発生した場合でも、開発者同士のきめ細かなサポート体制でお手伝いします。

手動でAppSignalをインストールしたい場合は、インストールドキュメントをご参照ください。
これでAppSignalの導入が完了しました。SkySignalアプリのパフォーマンス監視を始められます。
Solid Cacheの監視
AppSignalはアプリケーションのパフォーマンスメトリクスを収集し、実行可能なインサイトへと変換します。開発者フレンドリーな監視ツールを多数備えていますが、この記事では以下の2つの機能に焦点を当てます。
- メトリックダッシュボード: エラー率や全体的なレスポンスタイムなど、アプリのパフォーマンスデータを視覚的に追跡できます。SkySignalでは、キャッシュサイズとパフォーマンスタイムを確認します。
- 異常検知: メトリクスが特定のしきい値を超えたときにアラートを発するトリガーを作成できます。たとえば、短時間のうちにキャッシュサイズが大幅に増加したケースなどが該当します。
なお、Solid Cacheを使用していなくてもご安心ください。どのRailsキャッシュストアを使っていても、AppSignalで同じ優れたメトリクスを取得できます!
ダッシュボードでSolid Cacheを監視する
AppSignalのグラフは、アプリケーションのパフォーマンスを視覚的に監視するのに最適な手段です。パフォーマンススパイクの背景情報を共有するためのマーカーを追加したり、グラフ上の任意の地点をクリックしてその瞬間のパフォーマンススナップショットを表示したりできるため、デバッグも格段に容易になります。
レスポンスタイムの監視
Solid Cacheを設定した後のアプリのパフォーマンスを見てみましょう。

上のグラフから、SkySignalが比較的高速なレスポンスタイムを維持していることがわかります。また、新しい気象データをバッチで取り込む際に発生するレスポンスタイムのスパイクも確認できます。
キャッシュサイズの監視
私たちは、大量のデータをリモートディスクキャッシュに保存することで、レスポンスタイムを安定的かつ効率的に改善するためにキャッシュを採用しました。

キャッシュを最適な状態に保つには、キャッシュサイズを継続的に追跡し、急激な増加がないかを確認することが重要です。このデータをもとにキャッシュ設定を微調整すれば、アプリケーションのニーズに最適な構成を維持できます。
Solid Cacheのテーブルサイズを追跡するダッシュボードの設定方法については、関連ブログ記事をご覧ください。
AppSignalでキャッシュの異常を検知する
AppSignalのダッシュボードは、アプリのパフォーマンスを把握するためのエレガントで直感的な方法ですが、残念ながら一日中グラフを見続けるわけにはいきません。そこで活躍するのが異常検知(Anomaly Detection)です。
AppSignalの異常検知機能では、特定のメトリクスがしきい値に達したときに通知するトリガーを作成できます。たとえば「エラー率が10%を超えた場合」や「キャッシュストレージの消費が速すぎる場合」といった条件を設定可能です。

異常検知があれば、本来の業務に集中できます。メールやSlack、Discordなどの人気コラボレーションツール経由で通知を受け取れるようAppSignalを設定できるため、トリガーが発火した際に確実にアラートを受け取れます。これにより、ボトルネックがアプリのパフォーマンスやスケーラビリティに影響を与える前に、プロアクティブな監視が実現するのです。
アプリのキャッシュ監視を始める準備はできましたか?
AppSignalでは、あらゆる面で卓越したサービスを提供することを目指しています。だからこそ、最新のRails機能を確実にサポートできるよう日々努めています。
お客様に「AppSignalのどこが魅力的か」を尋ねると、次のような回答をよくいただきます。
- 直感的で操作しやすいインターフェース
- シンプルで予測しやすい料金体系
- 開発者による開発者のためのサポート
まだAppSignalをご利用でない方は、こちらからトライアルアカウントを作成してください。トライアルユーザーの方は、監視データの送信開始後にお知らせいただければ、ストロープワッフルの詰め合わせをプレゼントします🍪!
Solid Cacheについてさらに詳しく知りたい方は、YouTubeで公開されているDonal McBreen氏のRails Worldトークをご覧になることをおすすめします。
Connor James
AppSignalのデベロッパーマーケティングマネージャー。ポッドキャストが趣味で、カンノーリが大好きすぎて名前を「Connoli」に変えようか考えたこともあるほど。colorにはuが入るべきだと信じるイギリス英語派。オフの日はマイクの前、ステージの上、あるいはソファの上でくつろいでいる姿が見られるかもしれません。
-
Rubyで学ぶUNIXデーモンの仕組み――理論と実装のステップバイステップ解説
UNIXデーモンとは、バックグラウンドで動き続けるプログラムのことです。Nginx、PostgreSQL、OpenSSHなどがその代表例として挙げられます。デーモンはいくつかの特殊なテクニックを使ってプロセスを「切り離し(detach)」し、どの端末からも独立した状態で動作できるようにしています。 筆者は昔からデーモンに何かと魅了されてきました(名前の響きのせいかもしれません)。そこで今回は、デーモンがどのように動作するのか、そしてRubyでどうやって作れるのかを解説します。 ……ただし、その前に。 本番環境では真似しないでください! 正直なところ、自分でデーモンを作りたい場面はほとん
-
DerailedでRailsアプリのGem別メモリ使用量をプロファイリングする方法
Railsアプリのメモリ消費、その原因はGemかもしれない Railsアプリが大量のRAMを消費している――それ自体はよくある話です。しかし、それが「仕方のないこと」だと諦める必要はありません。実は、アプリケーションのメモリフットプリントを押し上げている犯人が、1つまたは複数の肥大化したGemであるケースは少なくありません。 Derailedとは何か 最近、Richard Schneeman氏による非常に興味深いプロジェクト「Derailed」を見つけました。これは自動ベンチマークツールのコレクションで、GitHub上で公開されています。導入はとても簡単で、Railsアプリのボトルネックとな