はじめまして、柳原です!
初投稿のElasticsearch使いエンジニアです!
主に日本語検索のECシステムを開発中です^^
次は、ファーストリテイリング社の羽山典孝さん、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