[レポート] ANT203 NIKE社でのElasticsearchを使った検索技術 #reinvent

2018.11.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

re:Inventで開催されたセッション「ANT203 - Search at Nike with Amazon Elasticsearch Service」に参加してきたのでレポートします。

セッションの概要は以下のようになります。

Amazon Elasticsearch Service (Amazon ES) provides powerful, natural-language-based search features and a rich API to enable relevant search for applications like ecommerce, data lakes, and your application data. Nike upgraded the search engines for its web properties, including the Nike online store, standardizing on Amazon ES for these mission-critical workloads. With Amazon ES, Nike can focus on its core mission—enabling customers to find and purchase its products—without worrying about the hassle of deploying and scaling hardware, deploying Elasticsearch, configuring and securing its clusters, upgrading with security patches, or any of the low-value, operational tasks necessary to keep Elasticsearch maintained. Come to this session to learn the factors that Nike used in choosing Amazon ES. Get an overview of its architecture, and hear about the results of its migration

セッションの登壇者は以下の方々です。

Carl Meadows氏 - Principal Product Manager , Amazon Web Services

Andrew Mossbarger氏 - Director of Search Engineering , Nike

レポート

Amazon Elasticsearch Serviceの概要

マシンが生み出すデータは爆発してる

マシンによって生成されたデータは、ビジネスデータより10倍も、高速に増加する

  • DevOpsへの移行
  • IoTおよびモバイルデータの増加
  • クラウドベースになるアーキテクチャ

ソースはinsideBigData

Elasticserchの促進

Elasticsearchを使う利点はたくさんあります

  • オープンソースである
  • 値を迅速に処理できる
  • 簡単に取り込める
  • 簡単に視覚化できる
  • 高性能で分散処理できる
  • 最適な分析と検索が行える

ポピュラーなオープンソース・ソフトウェアの第7位に位置する。ソースはTechChrunch

Amazon Elasticsearch service

Amazon Elasticsearch Searviceは、ElasticsearchとKibanaをデプロイ、管理、及び拡張するのを容易にしたフルマネージドのサービスです。

Amazon Elasticsearch Serviceの利点

オープンソースなAPIとツールをサポート

新しいAPIやスキルを習得する必要がなく、簡単に取り扱える

使いやすい

プロダクトに対応したElasticsearchクラスタを数分で展開できる

スケーラブル

数回のクリック、または1回のAPI呼び出しでクラスタのサイズを変更できる

セキュア

VPCに展開し、セキュリティグループとIAMポリシーを使用してアクセスを制限する

高可用性

モニタリングと自動化された自己修復により、可用性ゾーンを超えてレプリケートされる

ほかのAWSサービスと緊密に統合されている

シームレスなデータ取り込み、セキュリティ、通知、オーケストレーション

Elasricsearchのユースケース

アプリケーションの監視と根本となる原因の分析

開発者に高い並列性と、セルフサービスの運用監視及び分析プラットフォームを提供します

セキュリティー情報とイベント管理

セキュリティ担当者が、組織全体のイベントを集中化して分析できるようになります

IoTとモバイル

開発者やビジネス側のユーザに、デバイスや車両に対するリアルタイムな位置情報の洞察を提供します

テキスト全文検索

ファセット処理や先読み入力などの高度な機能をサポートし、豊富な機能を備えたプライベートのアプリケーションに適します

Amazon Elasticsearchサービスを利用中の顧客(一部

今回はNIKE社の利用例を取り上げる

Nikeのスマートな検索

ここで、NIKEの検索エンジニアディレクター、Andrew Mossbarger氏の登場です。

これはいい類の問題です

いいこと

ダイレクトな消費者ビジネスが、急速に成長している

悪いこと

大幅に拡張されたが、脆弱な商用検索ソリューション

ブサイク

私達は、本来の道をそれて、ビジネスパートナーの信頼を失っていた

昔と今

いままで
  • 6つの商業国
  • 7つの言語をサポート
  • オンラインの商品のみ在庫を扱う
  • 規模も数百万ドル
  • 一握りの検索小売業者
これから
  • 50を超える商業国
  • 25を超える言語をサポート
  • 500以上の小売店舗在庫も扱う
  • 規模はウン十億ドル
  • 100を超える小売業者

運用と開発(いままで)

数千枚の書類による死

  • 2ヶ月に1度のデプロイ
  • 100secかかるデータ変換
  • 90%もの手動テスト
  • 編集してライブになるまで3時間
  • 新しい経験を取得するのに6ヶ月以上
  • ハードウェアに3ヶ月のリードタイムが必要

Nikeのミッションとビジョン

ミッション

あらゆる消費者の経験に基づき、消費者の関係する製品やコンテンツを見つけ出すことを可能するとするサービスを採用する。

ビジョン

検索サービスとして

  • インフラストラクチャをコードとして検索
  • API駆動
  • データモデルに依存しない
  • セルフサービス
  • 次世代向けに豊富な関連性
  • 増えるデータと既存データが邪魔にならない

今検索エンジンを使って行っていること

3つのコアデータ

1. アーキテクチャ
  • オープンソースファスト
  • クラウド対応
  • AWSにホストすることを第一に
2.製品
  • スケーラブル
  • データ駆動と信頼性
  • 急速なチャネル
3.エンジニアリング
  • 実績のある検索プラットフォーム
  • パフォーマンスの向上
  • 強いコミュニティ

候補

Solr

オープンソースやクラウドに対応しているが、AWSにホストされていなかったり、動的スケーラビリティに対応していない

Elasticsearch

Solrと同様

AWS Elasticsearch

オープンソースかは微妙だが、AWSにホストされ、動的スケーラビリティに対応している

ジレンマ

私達はなんの専門家ですか?

インフラストラクチャの検索です

私達で何を解決することができましたか?
  • 30年以上もの検索を経験
  • 2-3年ほどクラウドの基盤を作成
どうすれば早く動けるか?

ビジネスの機能に特化したチームを作る

選択

AWS Elasticsearch Seviceを選択した

  • APIによるクラスタの分類と管理
  • クラスタのスケーリング
    • 水平方向ではノード数
    • 垂直方向ではインスタンスのタイプ
  • 自動ノード復帰
  • セキュリティパッチ
  • IAM ロール
  • VPC
  • 暗号化

基礎

運用・管理ツール
  • クラスタの作成と管理
  • アプリケーションとユーザーのセキュリティ
    • IAMとJWT
  • 索引作成と管理
    • エアリアスや作成のユーティリティ
  • Jsonスキーマのマッピング
    • 言語別の論理/仮想インデックス
  • S3による自動スキーマ更新
  • 毎時バックアップ
  • クロスクラスタでのデータ複製
  • アドホック検索ツール

基本検索機能

SQLライクにアクセスできるライブラリ,

Elastic DSLクエリに変換

  • 11行の入力が291行へと展開
  • 直感でわかる→ほとんどの人が理解できないものへ
  • 検索としてベストな状態→修正が難しい

SEARCH ADMINの紹介

豊かな検索

クエリの意図
  • 同義語、スペルミス
  • フレーズ
ビジネスルール
  • 体験やチャンネルによる文書のフィルタリング
  • 商品化
  • 関連性戦略
    • クリックストリーム
    • 新機能
    • マージン
    • マニュアルマーチャンダイズ
    • MLのモデル

消費者の問い合わせの例

Nike queryをElastic queryに変換

今どこまで来たか

ミッションの達成度

1日以内に新しい体験を得られる

ビジョンの達成度
  • 検索管理UI
  • 20以上のクラスタに100のインデックス
  • Jsonスキーマ駆動型のデータモデル
  • ElasticDSLに直接アクセスできるライブラリ
  • 調整し、A/Bテストが可能な関連性モデル

運用と開発(これから)

数千枚の書類による死

  • 1日に平均2.6回のデプロイ
  • データ変換のひつようなし
  • 100%テスト自動化
  • 編集してライブになるまで5秒
  • 新しい経験を取得するのに1日で済む
  • ハードウェアのリードタイムは不要

おわりに

AWS Elasticsearch Serviceを使うことで、フルマネージドな検索サービスを作り上げることが可能となりました。大規模なショッピングサイトや検索要件のあるアプリケーションでは、利用が前提でアーキテクチャを設計する必要があります。

そのぶん、データのモデルをしっかりとしたものを定義しないといけないため、設計段階での負担が大きくなります。

また、今回のNikeさんの事例では、Nike DSLをElastic DSLに変換していましたが、これ欲しいなぁって本気で思いました。検索の条件を定義するのって意外と難しいんですよね…それを自前で実装するだけ、検索というのはユーザー体験に直結する部分を占めるので、力を入れる必要があるジャンルとも言えます。

AWS Elasticsearch Service、ぜひ皆様もお使いください。