Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

Elastic{ON} Tokyo 2016レポート ~ Search Functionality and Log Management with Elastic Stack at Fast Retailing 〜 #elasticon

はじめまして、柳原です!
初投稿のElasticsearch使いエンジニアです!
主に日本語検索のECシステムを開発中です^^

f:id:acro-engineer:20161216000631p:plain

次は、ファーストリテイリング社の羽山典孝さん、Reuben Liさんによる発表
「Search Functionality and Log Management with Elastic Stack at Fast Retailing」です。

撮影NGでしたので、テキストによるレポートになっている旨はご了承ください(^^;

サマリ

ファーストリテイリング様は2020年に売上3兆円目標に向けて海外展開をしており、
EC、流通などに加えてビジネスのIT化にも力を入れているそうです。

その中で、マイクロサービス・Elasticsearchを取り入れた事例に関して
前半は羽山さんによるユニクロでのIT化の取り組みの紹介と、マイクロサービス化した話
後半はReuben LiさんによるElasticsearchによる、ログ可視化とそれをビジネスにつなげた話
がありました。

ユニクロでのIT化の取り組みの紹介と、マイクロサービス化

羽山典孝さんによる、ユニクロでのIT化の取り組みの紹介と、マイクロサービス化、ユニクロアプリの話です。

1.ファーストリテイリング様でのIT施策

ファーストリテイリング様では以下のIT活用を行っているそうです。

1)ユニクロアプリでのバーコードスキャン
 購入履歴を管理し、プロモーション、レコメンド、ECと店舗の距離の接近させるサービスなど
2)商品にRFIDを付与
 セルフレジや、お勧め製品、お勧めファッションをレコメンドしてくれるサービス

私もユニクロよく活用するのですが、あまり気づきませんでした。。。
様々な取り組みをやっているみたいですね。

そして、すべてのサービスが一体化していた状態から、マイクロサービスに移行した話。

  • Before 全部一体型

いままでECサイト、モバイルサイト、アカウント管理etc...なにもかもが1つにつながっていた。
 ×どこががボトルネックになると全体に影響する。
 ×LINE連携などをいれようとすると全体に影響して大変。。。
  などなど問題があったそうです。

  • After マイクロサービス

各サービス単位でマイクロサービス化し、サービス同士はRESTAPIでそれぞれ接続。
 ○それぞれのチームが独立して開発、デプロイできるようにした。
 ○コンシューマ向けのサービスはAWS上で構成しているので、特定のサービスだけスケールアウトできる。

 マイクロサービスが今着目されていますが、先進的に取り入れられている例ですね!

2.Elasticsearchに注目した理由

▽カタログ検索に利用
 商品データは、商品名や、画像が混在していて複雑。
→Mappingによって、柔軟に対応できることからElasticsearchに注目したようです。

また、以下のようなワークフローが明確になっていたので、
 CSVデータimport→スキーマ更新→Data Indexing→クエリで検索
と役割分担されており、各APIとしてわけやすかった、というのもメリットにもあったそうです。

3.Elasticsearchを使って、苦労した点

みなさんご存知ユニクロアプリ(よく割引クーポンがありますね。)
これも様々なマイクロサービスで構成されているそうです。

  • 苦労した点

 要件として、800店舗ある店舗ごとで、在庫がないものは表示しないようにしたい。
 しかし、商品ごとに在庫状況Fieldを800店舗分もつくるわけにはいかない。

そこで、
【工夫ポイント】

1)Mappingの工夫
 店舗数分indexを作成した。
 考える単位を商品ごとから、店舗ごとにする、という発想の転換が必要ですね。

2)aliasの活用
 index名:店舗番号+タイムスタンプ
 alias:店舗番号
と使い分けて、検索時には、aliasを対象にして店舗番号で検索したそうです。
indexは名前、aliasは検索のキー用という感じですね。

マイクロサービスとElastic Stack

ここからはReuben Li さんの発表です。
システムが出力するログの可視化システムです。

1.アーキテクチャ

API・データリソース→logstash→Elasticsearch Cluseter(data nodes + kibana)
という流れで、システムのログをElasticsearchに貯めます。
Elasticsearchにログを貯めるときに、良く使われるパターンですね。

2.使用ログデータ
  • ログ3億件/日(最大で毎秒900件)
  • うちクーポンのマイクロサービスに関してが、2000万件/日
3.ログの可視化
  • クーポン消費量の可視化

 可視化したことで、店舗で使うクーポンが開店時間から閉店時間までまんべんなく使われている一方、
 ECでのクーポンは夜間にピークがあり、消費傾向の違いがはっきりと表れていた、
 ということがわかったそうです。

 →ITからビジネス戦略に活かす、理想的な形ですね!!

4.課題
  • 課題 1 Mappingが多すぎて、OOMEが起きていた。

→システムのログの出力内容を改善し、Mappingのサイズを減らした。

  • 課題 2 リクエストとログのIndexデータの対応付け

対象のシステムに1件のリクエストが来た時に、システム内では複数のログを出力するケースがあった。
→同じリクエストのログを同時に見ることができるように、
リクエストIDによってAggregationして散らばってIndexされないようにした。

気軽に投入できるのもElasticsearchの利点ですが、パフォーマンスを考えると、
投入するデータやMappingなどの調整が必須、というところが
構築してみるとわかりますね。

私もElasticsearchを使った検索システムの開発に関わっているので、
是非、参考にしたいと思います。

まとめ

Elasticsearchを活用した事例がかなり具体的に、そして技術的にも
細かく紹介されていました。

以上、マイクロサービス+Elasticsearch
という最先端の事例紹介セッションでした!

Acroquest Technologyでは、キャリア採用を行っています。


  • ビッグデータHadoop/Spark、NoSQL)、データ分析(Elasticsearch、Python関連)、Web開発(SpringCloud/SpringBoot、AngularJS)といった最新のOSSを利用する開発プロジェクトに関わりたい。
  • マイクロサービスDevOpsなどの技術を使ったり、データ分析機械学習などのスキルを活かしたい。
  • 社会貢献性の高いプロジェクトや、顧客の価値を創造するようなプロジェクトで、提案からリリースまで携わりたい。
  • 書籍・雑誌等の執筆や、対外的な勉強会の開催・参加を通した技術の発信、社内勉強会での技術情報共有により、エンジニアとして成長したい。

 
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。

【Elastic search 関連】
Elasticsearchを仕事で使いこみたいデータ分析エンジニア募集中! - Acroquest Technology株式会社のエンジニア中途・インターンシップ・契約・委託の求人 - Wantedlywww.wantedly.com

【データ分析】
データ分析案件の急増に伴い実践的なデータ分析エンジニアWanted! - Acroquest Technology株式会社のエンジニア中途・インターンシップ・契約・委託の求人 - Wantedlywww.wantedly.com