こんにちは。検索基盤部 検索基盤ブロックの佐藤(@satto_sann)です。
11月30日にElasticOn Tokyo 2022が行われました。今回弊社からは検索システムに関わるメンバー10名で参加して、そのうち2名が登壇しました。本記事では弊社エンジニアによる登壇の様子や気になったセッションについて紹介していきます。
目次
ElasticOn Tokyoについて
ElasticOn Tokyo 2022は2022年11月30日に開催されました。コロナ禍の影響で、オフラインでの開催は3年ぶりでした。開催場所は恵比寿駅から徒歩5分ほどに位置するウェスティンホテル東京です。
会場の詳しい様子は、記事の最後に紹介します。
プログラム
本カンファレンスのプログラムは、午前は全体聴講、午後は分科会形式で行われました。
プログラムの詳細は下記を参照ください。
全体聴講
午前は、Elasticsearch株式会社の代表である山賀氏の挨拶に始まり、基調講演や落合陽一氏による特別講演が目玉になっていました。Elastic社のGeneral ManagerであるMatt Riley氏の基調講演では、Elastic社のこれまでの歴史や今後の展望についてなど話がありました。
今後の展望に関しては、特にセキュリティ・オブザーバビリティ・AIという3つの分野がキーワードになっており、ただデータを蓄積するだけでなくよりパワフルにデータ活用できる環境を目指しているようでした。また、Elastic社のアジアVPであるBarrie Sheers氏によるアジア市場での展望の話では、アジアの各国にElastic社の拠点を作るほどアジアを重要視していることが紹介されていました。
ユーザ分科会
午後の部は、「ユーザー分科会」と「テクニカル分科会」の2つのブースに分かれます。参加者は気になるセッションのブースへ参加して聴講するという形式でした。
ユーザー分科会では、各ユーザー企業がElastic Stackの活用事例を発表し、参加者に知見が共有されました。
Elastic Stackの活用方法は企業によって様々でした。いずれの企業においてもElastic Stackを利用することでシステムが抱えていた大きな課題が解消されており、ソリューションのひとつとして大きな役割を担っていることが分かりました。
また、今後Elastic Stackの活用の幅をより広げていこうとしている企業も見受けられました。
テクニカル分科会
テクニカル分科会では、Elastic Stackの最新機能や実践的な利用方法が紹介されていました。ユーザー分科会と比べ、より技術的な知識の共有が際立っていました。
共通するテーマとして、膨大で複雑なデータを集約していかにそれらを活用するかが掲げられていました。また、オブザーバビリティ(可観測性)を強調するセッションも多く見受けられました。こちらのセッションについては、後ほどエンジニアがいくつか紹介するので詳細はそちらをご確認ください。
カンファレンスの後には、ネットワーキングの時間もあり、Elastic Stackを利用する様々なユーザー企業とコミュニケーションを取ることもできました。
ZOZOエンジニアが2名登壇しました
ZOZOも午後のユーザー分科会に「ZOZOTOWNの商品検索におけるElasticsearch活用事例」というタイトルで登壇しました。
2名で登壇し、前半パートは検索基盤部 検索基盤ブロックの池田より発表しました。Elasticsearchを用いた商品検索のシステム構成や、ElasticsearchLTRプラグインを用いた「おすすめ順」の仕組みなどについて話をしました。
後半パートは、SRE部ECプラットフォーム基盤SREブロックの立花より「検索APIが利用するElasticsearchの運用をプロダクションレディにするための取り組み」について説明しました。
登壇後には、Elastic CloudのTerraform管理や運用面の課題に興味を持ってくださったユーザー企業様とネットワークを形成でき、ユーザー分科会の目的を達成できました。
登壇資料は以下にアップしておりますので、詳細はこちらをご参照ください。 speakerdeck.com
参加メンバーによるセッション紹介
ここからは参加メンバーから、聴講したテクニカル分科会やユーザ分科会の内容を一部紹介していきます。
ベクトルサーチによる関連性の追求
検索基盤部 検索基盤ブロックの今井です。
このセッションでは、ベクトル検索入門の話やElasticsearchでのベクトル検索の実現方法について紹介がありました。
ある単語を検索したとき、全文検索ではインデックス内に存在する文章の中から、その単語が含まれる文書を見つけます。言い換えると、文章内に単語が含まれていないと検索できないことを意味します。
一方、ベクトル検索を利用することで文章内に検索対象の単語が含まれていなくとも、単語の意図や意味を考慮して検索出来るようになります。そのほか、入力としてテキストだけでなく音声や画像も扱うことが出来たり、ドメインの特異性(ECのドメイン知識など)を学習して活用出来たりと、今まで出来ていなかった検索をすることが出来るようになります。
ベクトル入門、類似性について
クエリと検索対象の文書をそれぞれベクトル化することで、ベクトルの距離が近いほど類似しているというように数学的な比較が出来るようになります。
また、ベクトルの次元数が多ければ多いほど、要素をより多く表現/比較することが出来るため精度は高くなります。ただ、その分計算量が増えてしまい処理時間がかかるようになってしまいます。次元数はElasticsearchでは最大2048次元まで対応しており、現実的なところでは300次元ほどではという話がありました。次元の上限に関しては、以下公式リファレンスにdimsパラメータの記載がありますので参照ください。
ベクトルを用いた検索のために、ElasticsearchではANN(近似最近傍探索)がサポートされています。ANNではHNSWという複数レイヤーを使って近似値を出すアプローチをとっています。これにより、多少の精度とは引き換えに速度優先で検索することが出来て、大規模インデックスにおいても優れた処理速度で処理することが出来るとのことでした。
Elasticsearchでのベクトル検索について
実際にどう実装するかの話ですが、セッションでは以下の手順の紹介がありました。
- 学習モデルの準備
- PyTorch(目的に沿ったモデル選び)→ クラスターへのモデルアップロード(eland_import_hub_model)→ KibanaのTrained Modelでアップロードモデル確認可能
- ※モデルアップロードにはML機能を利用可能なライセンスが必要
- データの取り込みと埋め込み(embedding)生成
- ML inference Processorを用いて埋め込み
- ベクトルクエリ発行
- クエリの埋め込みを生成(/ml/trained_models/<model_id>/infer)→ 生成された埋め込みをESLのknn項目に指定して_searchエンドポイントにリクエストを発行
- knn項目で指定する内容は以下公式リファレンスを参照ください www.elastic.co
手順の紹介の最後には、全文検索でのスコアとベクトル近似スコアを組み合わせて利用することも可能という説明もありました。
このセッションを聴講して、テキストマッチングと組み合わせて利用することでテキストと画像を一緒に検索してスコアリングするなど検索の幅が広がり、可能性を感じました。知見はまだまだ貯まっていないと思いますので、実際に導入を検討する場合はベクトルの次元や要素の選定やベクトル検索の処理速度など実用レベルで利用するためによく検証する必要はあると思いました。
サーバレスアーキテクチャへの道
SRE部 ECプラットフォーム基盤SREブロックの大澤です。
このセッションではElasticsearchが現在アーキテクチャに至る経緯と課題から、今後予定されているアーキテクチャについて紹介されました。その中でもSREチームとして気になった内容についてピックアップして紹介します。
Elasticsearchは拡張性・耐障害性のためのShard分割、効率的なデータ管理のためのデータ階層化を経て現在のアーキテクチャに至りました。しかしながら様々な課題を抱えており、それら課題を解決するための新しいアーキテクチャが「ステートレス」です。
ここで特に注目したトピックは「データ投入と検索の分離」「オブジェクトストア」です。現在のアーキテクチャはデータ投入と検索でCPUを共有していますが、ステートレスではそれぞれ独立したCPUを使用します。それぞれの機能がCPUを占有して使えるようになることから、データ投入時のスループット向上やCPUコストの低減が期待できるようです。
SREチームでも負荷試験を行う際、データ投入処理にCPUが使われることで検索性能が低下する状況を観測しています。こうした状況に改善が見られるのではと非常に期待しています。
また、各ノードのローカルディスクに保持していたデータがデータオブジェクトになりレプリカデータを保持しなくなるようです。現在のアーキテクチャではノード拡張時にレプリカデータの作成完了を待つ必要があります。ステートレスアーキテクチャではこのようなアイドルタイムが軽減され、ノード拡張したら検索機能を直ちに使える状態になるのではとこちらも期待してます。
さらに将来的なアーキテクチャとしてサーバレスが紹介されました。定期的なバージョンアップ作業を抱えるSREチームとしては、バージョンレスといったキーワードは非常に魅力的です。
性能面・運用面共に新アーキテクチャはSREチームが抱える課題を解決してくれる可能性を感じました。機能提供された際には機能検証を行い、クラスタの乗換えを検討していきたいです。
闇の魔術から身を守る。スピードが肝心 | Elasticでスピードを加速させるには?
検索基盤部 検索基盤ブロックの佐藤(@satto_sann)です。
こちらのセッションでは、昨今のサイバー攻撃の脅威からサービスを防衛するための効率的なElastic Securityの利用方法について紹介されています。
とにかくタイトルが強烈だったので気になり参加しました。また、本カンファレンスの最後のセッションということもあり、私同様に気になって参加された方も多いのではないでしょうか?
昨今の働き方の多様化やシステムのクラウド化に伴って、社内だけ守る時代は終わり、ネットワークに混在する様々な自社のデバイスやシステムを脅威から守る必要があります。しかし、セキュリティ対策や監視に必要なログや関連するデータは複雑かつ指数関数的に増加する一方です。
インシデントが発生した際に、原因究明のためこれらのデータをシステムやデバイスごとに手作業で分析していては、被害がさらに拡大する恐れもあります。また、効率化のため個人で作成したツールやクエリで分析していては、スキルの属人化を招いてしまいます。そこで紹介されているのが、Elastic Securityです。
Elastic Securityは以下の機能を提供しています。
- オープン&統合
- セキュリティソリューションを1つの環境に閉じ込めず、再利用できるものは他の環境でも利用可能
- セキュリティソリューションをブラックボックス化しない
- 検知ルールもオープンになっているので、アラート発生理由がわかる
- ネイティブプロテクション
- MITRE ATT&CKというサイバー攻撃の流れと手法を体系化したフレームワークやMLモデルを利用
- どんなインシデントが起きていて、その原因や発生場所といった断片的なイベントを繋げた一貫した情報を提供
- 未来のスケールに他対応する設計
- 大量のデータ登録や分析が可能
- 今後Elastic Cloudに導入が検討されているサーバーレスの新アーキテクチャが利用できれば、よりインフラ側を意識しなくても良くなる
- インサイトの自動化
- インシデントが起きた際の情報収集やトリアージ等の作業を自動化
- 分析者の負担を軽減
- ハイブリッドクラウド
- マルチクラウドの利用が可能
- マルチクラウドでデータを貯めていてもKibanaのフェデレーション機能で横断的に検索可能
発表を聞く限りElastic Cloudにデータを集約することで、オブザーバビリティが向上して、インシデント発生時に検知から解決までを一貫して効率よく対応できそうでした。
今回のカンファレンスでは特に、オブザーバビリティが強調されていたので、このセッションでもその有用性が紹介された形です。
最後にデモでは、Kibana上からElastic Securityを操作しながら上記機能を具体例と共に紹介していました。
例えば、クラウド上にあるKubernetesの設定が不足していてセキュリティの脆弱性があった場合、Elastic Securityではそれらを分析して、87%良いといったように良し悪しを可視化します。
他にもホストごとにセキュリティスコアを算出して可視化するEntity Analyticsダッシュボード。時系列ごとにどのようなアクションがされたか可視化、またその詳細の深掘りやアラート原因の可視化などをデモで紹介していました。
これらダッシュボードの詳細については下記公式ドキュメントを参照ください。
セッションを聞いた感想としては、インシデント発生時の原因の分析やトリアージといった分析者の負担が特に大きい部分をElastic Securityでサポートしてもらう。これにより、迅速な対応が可能となり、被害も従来より抑えられそうだなと感じました。
また、このようなセキュリティ対策や対応は属人化も問題になるので、1つのサービスで完結できるとそういった課題も解決でき便利に感じました。
最後に
数年ぶりのオフラインイベント参加でしたが、現地でしか得られない最新情報を聞けただけではなく、合間の休憩時間でユーザー企業様と検索について意見交換できたのでとても有意義な時間を過ごせました。オンラインにはない良さを改めて感じました。
また、ZOZOではセミナー・カンファレンスへの参加を支援する福利厚生があり、カンファレンス参加チケット・宿泊費・交通費などは全て会社に負担してもらっています。今回参加メンバーが10人でカンファレンスの中でもトップレベルの大所帯だったと思いますが、例外なく福利厚生を受けられました。
ZOZOでは一緒に働く検索エンジニアを募集していますので、興味のある方は以下リンクからぜひご応募ください。
番外編:会場の様子をお届け
検索基盤部 検索基盤ブロックの可児(@KanixT)です。
最後に会場の様子を簡単にご紹介いたします。
朝9時から開場だったため、朝早く遠方から参加された方や朝食を食べ忘れた方向けに軽食が用意されていました。
続いてElastic製品に触れられるブースです。
Kibanaなどのアイコンと一緒に写真が撮れるフォトブースもありました。
お昼はビュッフェ形式でお寿司やカレーなどさまざまなお料理が並びました。その中でもデザートのスイーツはとても美味しかったです。
セッション終了後には懇親会が催され、登壇者の方やElastic社の様々な方とお話させていただきました。