私は開発者として、そのアプリケーションがどのように動作すべきか、非常に強い関心を抱いています。
高速に動いた結果、何かを壊すことには興味がありません。正直、世界を変えることにも興味はありません。
快適で人間工学に基づいたソフトウェアを作ることに興味があります。そして、その対価としてお金を貰いたいという思いが強くあります。
私の会社「Buttondown」は、そんな思いから生まれました。Buttondownは、メールやニュースレターを送信するためのツールです。
市場にはこの手のツールはたくさんあります。しかし、Buttondownの強みは「ミニマリスト」であるということです。開発者にとって快適な体験を提供しています。
それはプログラムへのアクセス、アクセシビリティ、そしてパフォーマンスを優先しているためです。
しかし、アプリケーションの性能は時間とともに劣化する
開発者たちはみんな「高パフォーマンスを意識して開発しなければならない!」と考えています。
その意志は常に正しいです。一方で、簡単なことではないことも知っています。
- 新機能の立ち上げ時には、可能な限り慎重にリリースします。 APIルートごとのデータベース呼び出し回数や負荷テストなど、厳しいテストを実施しています。
- 誰かが非常に遅いエンドポイントについてバグレポートを提出した場合(あるいは、タイムアウトに関する例外が発生した場合)、私はできるだけ早く対応します。
これは簡単で、テストも可能です。
しかし、性能は時間の経過とともに、ゆっくりと、静かに低下していきます。
余分なループが一つ、最適化されていないデータベースを一回呼び出す……。
それが積み重なっていくように、目に見える小さな問題が積み重なっていくのです。
解約した顧客からメールを受け取って初めて、そのことに気づきます。
彼らは口を揃えて「UX(ユーザ体験)がよくない 」と言います。
クラッシュしないので「問題ない」ように思っていましたが、アプリは知らぬ間に悪化していました。
パフォーマンスを抽象的なものから実用的なものへと変化させる
私は長い間Sentryを、他のユーザーの皆さんと同様エラー処理と問題報告のために使っていました。
軽量なインターフェースと迅速なインストールプロセスにより、私は簡単に問題を処理し、優先順位をつけ、解決することができました。
私は、電子メールの受信箱と同じように、ソフトウェアの問題をクリーンな状態に保っています。
正直、パフォーマンス・モニタリングに注力しているときの私は、半信半疑でした。
たくさんのデータやダッシュボードが送られてきて、それを毎朝監視して見なければいけないからです。
非常に時間がかかる作業な上、結局人が見て判断しなければならないため、億劫に感じました。
しかしその疑念は、Sentryの提供する「パフォーマンスのためのクリアで簡素なアクション層」を理解した途端に消え去りました。
Sentryは、パフォーマンスに関する情報を分かりやすい内容で通知してくれます。
これまでは、分かりにくい折れ線グラフではないにしろ、答えを与える代わりに疑問を増やすだけのものが多かったのです。
代わりに、Sentryは明確で解決可能な問題を提示してくれました。
例えば、SentryはN+1エラー通知をしてくれるので、オンボーディングが重要なルートを高速化することができました。このようなことをPythonの2行で表現しました。
そして、Sentryはこの遅いDB操作にアラートしてくれました。
Sentryは、送信メールのレンダリングと送信を倍の速度で行う方法を教えてくれました。
Sentryは、プログラムのどこでどのトランザクションがパフォーマンスの問題を引き起こしているのかを正確に教えてくれました。
そのため、問題の根本原因を見つけるために、多くのダッシュボードやレポートの分析に時間を費やす必要はありませんでした。
Sentryを使ったおかげで、無駄な作業が減り、アプリのパフォーマンスに注力することができるようになります。
Sentryでは、コードエラーを処理するのと同じように、パフォーマンスの問題を処理することができるので大変便利でした。
開発者にとってパフォーマンスが重要な理由
多くの開発者たちは、アプリケーションのパフォーマンスを「あったらいいな」程度の機能として扱っています。
開発計画や製品ロードマップを作成しているとき、アプリのパフォーマンスについて十分に考えていない開発者がいるのです。これはよくわかります。
お客様の多くは、ページの読み込み時間の遅さやその他のパフォーマンスの問題を受け入れてくれると考えていることが多いからです。
一方で、新機能を搭載しなければ、お客様は不満を募らせるだろうと考えています。
ですから、パフォーマンスよりも新機能を優先することはよくあることです。
しかし、ユーザーや顧客は性能を気にしており、意外とすぐその変化に気がつきます。
しかし、実際にどう説明したらいいのかわからないこともあります。
Buttondownを使い始めてから数カ月後のあるお客様と電話をしたことがあります。
お客様:よく分からないんだけど、[加入者向け管理画面] が操作しやすくなったんですよね。いずれにせよ、UX(ユーザー体験)を向上させたのは素晴らしいです!
とはいえ、UXは1ピクセルも変わっていませんでした。
変わったのは、スピードとパフォーマンスです。Sentryのおかげで、5秒のフィードバックループを1秒に短縮することができました。Sentryを使えば、それは本当に簡単なことでした。
一部製品、一部プロセス: アプリケーションのパフォーマンスに関する考え方のオススメ
パフォーマンス問題の優先順位付けと、改善を厳密に行うことに関心のあるエンジニアにお勧めのプロセスがあります。
これは、私がAmazonやStripeでエンジニアをしていたときに実際に効果が合った方法です。
パフォーマンスに関する見方が広がるかもしれません。
- パフォーマンスの問題を解決可能な問題に素早く変えます
Sentryのパフォーマンスダッシュボードのようなツールを使って、具体的かつ実行可能なものにしましょう。Sentryは、どのシステムが遅いのか、速度をどのように測定しているのかを説明してくれます。パフォーマンス改善の目的は、問題の原因を正確に把握し、迅速に解決できるようにすることなので、この機能は大変役立ちます。 - ユーザー体験、顧客体験を定量化します
具体的な問題に対して、なぜパフォーマンスが重要なのかを説明します。ユーザー体験の中で、具体的にどこがパフォーマンスの問題によって影響を受けるのか?パフォーマンスの問題のために、ユーザーができないことは何か?この不快感は、アクティブユーザーの何割が感じているのでしょうか? - 問題を解決するためのアクションプランを設定します
パフォーマンスの問題が解決できると分かったら、問題が再発しないようにプロセスとテスト(チェッカー、Sentryダッシュボード、リグレッションテストなど)を設定します。これは、パフォーマンス重視の文化を創るのに役立ちます。新機能と同じように、パフォーマンスも「健全なソフトウェア」の一部となります。
今日のソフトウェアが昨日よりも高速なようにしましょう。これは、ユーザーやお客様に対しての義務です。
Sentryは、アプリケーションコードの健全性を監視するために不可欠です。エラートラッキングからパフォーマンス監視まで、開発者たちは、フロントエンドからバックエンドまで、アプリケーションをより明確に把握し、より迅速に解決し、継続的に学習することができます。
Sentryは、350万人以上の開発者と世界中の85,000以上の組織に愛され、Disney、Peloton、Cloudflare、Eventbrite、Slack、Supercell、Rockstar Gamesといった世界的有名企業の多くにコードレベルの監視機能を提供しています。
毎月、世界中で人気のサービスやアプリケーションから、数十億件の例外を処理し続けています。
IchizokuはSentryと提携し、日本でSentry製品の導入支援、テクニカルサポート、ベストプラクティスの共有を行なっています。Ichizokuが提供するSentryの日本語サイトについてはこちらをご覧ください。またご導入についての相談はこちらのフォームからお気軽にお問い合わせください。