はじめまして、Webアプリチームのビリーです。
Elasticsearchのおかげでユーザーはスピーディーに検索することができますが、Elasticsearchの開発は大変なことが多いです。それを楽にするために、symfonyのデバッグツールバーを活かしてカスタムなデバッグツールを開発しました。
今回はそのデバッグツールについて話していきたいと思います。
symfonyデバッグツールバーとは
symfonyのデバッグツールバーは、ブラウザでsymfonyの役に立つデバッグ情報を確認することができるツールバーです。
詳細はこちらです:https://symfony.com/doc/current/profiler.html
デフォルトの情報は豊富ですが、自社のチームのニーズに応じてツールバーをカスタマイズすればさらに役に立つと思います。
Symfonyツールバーを使うメリットは、開発が早く、保守も容易で、カスタマイズすることができる点です。
Elasticsearchデバッグツールについて
オープンワークのエンジニアがElasticsearchの開発をする時、以下のようなことで困難していました。
クエリ、スコアの計算を確認することが大変
コード上でどのファイルがElasticsearchクエリを呼び出すかを確認することが大変
あるページが無駄にElasticsearchクエリを呼び出さないかを検証することが大変
この3点の困難を解消して、エンジニアの体験をよりスムーズにするために、Symfonyのツールバーをカスタマイズして、Elasticsearchをデバッグするツールを作成しました。
ツールのUIは以下のようです。
Elasticsearchリクエストごとに、以下の情報が表示されます
クエリ
スコアの計算
バックトレース
このシンプルなツールでElasticsearchの開発体験を向上することができました。
実装
Elasticsearch Client phpのElasticsearchクライアント。
ElasticsearchDebug Client Elasticsearch Clientを継承して、Elasticsearchリクエストの情報(クエリ、スコア計算、バックトレース)を持つクラス。
Elasticsearch Client Factory debug modeがtrueであれば、ElasticsearchDebugClientを作成する。falseであれば、Elasticsearch Clientを作成する。
Elasticsearch Data Collector Data Collectorは、Symfonyデバッグツールバーで表示される情報を持つクラスです。Elasticsearch Data CollectorはそのData Collectorを継承し、Elasticsearchリクエストの情報を持つクラス。
Data Collectorについての詳細はこちらです。 https://symfony.com/doc/current/profiler.html#creating-a-data-collector
最後に
自社チームのニーズに応じてツールを作成することで、このようにパフォーマンスを高めることができます。オープンワークでは、積極的に開発体験の改善に取り組むことを大切にしています。
最後に、弊社ではエンジニアを募集しています。今回の記事を読んで興味を持っていただけましたら、採用サイトの方もご覧いただけると嬉しいです。