SlideShare a Scribd company logo
Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
ここがツラいよElasticsearch
⾼高林林  貴仁/@tatakaba
2016/01/07
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
2
⾃自⼰己紹介
⾼高林林  貴仁  /  @tatakaba
2011  〜~  リクルート⼊入社
APソリューショングループ
Ø 検索索基盤
Ø データ解析
Ø DWHとCEP
Ø Webアプリケーション開発
Ø R&D(ウェアラブル端末等)
それ以前
Ø 主に検索索システム担当
Ø web,地図,local検索索等
Ø WPO(Web  Performance  
Optimization)
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
Elastic{ON}ダイジェスト  ~∼  活⽤用例例  〜~
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
4
Elasticsearchを活⽤用したサービス基盤
全社プッシュ通知基盤
l  リアルタイムな検索索要件
l  Dynamoの補完
検索索
条件抽出
データ取得
全社検索索基盤
l  サイト内検索索
l  キーワードサジェスト
l  スペラー
l  関連検索索ワード
可視化
l  UU
l  コンバージョン
l  ログ
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
5
全社検索索基盤:QASS
検索索結果をQass基盤へ集約
検索索に関連する情報を⼀一箇所に集積検
索索結果を横断的に専⾨門家が集約・分析
機械学習による検索索品質向上
ログを利利⽤用することで、
検索索品質の向上を⾏行行う
検索索結果分析基盤
検索索品質の継続的向上を⾏行行う全社基盤
フィードバックサイクル
による検索索改善
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
6
QASSの全体構成
各サイトのindex
(Doc数:数百万〜~数千万単位)
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
7
全社プッシュ通知基盤:Pusna-‐‑‒RS
p  スマートフォンなどに簡単に通知を送る事ができる仕組み
GCM
Google  Cloud  Messaging
Push!	
Push!	
APNs
Apple  Push  Notification  Service
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
8
Pusna-‐‑‒RSの全体構成
リクルート
8	
  
デバイス管理理
プッシュ配信管理理
DynamoDB Elasticsearch
登録API SQS 登録worker
配信worker SQS
操作⽤用WebUI
管理理API
配信担当者
データ基盤
APNs
GCM
事業サーバ
デバイス情報や配信情報の
実データの索索引として利利⽤用
(Doc数:億単位)
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
9
可視化
各サービスの定量量的な指標確認
l  コンバージョン
l  Bucket(A/B)テスト
l  ログ監視
l  ユーザログ
検索索結果の分析
検索索効果の可視化
サービスノード
lo
g
サービスメトリクス
の可視化
検索索結果分析基盤
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
Elastic{ON}ダイジェスト  ~∼  運⽤用編  〜~
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
11
Elasticsearch運⽤用編
Plugin機構の利利⽤用
動的ロード
A/Bテスト
Snapshot機構の利利⽤用
オンラインバックアップ
本番環境の複製
環境に合わせたIndex作成
AWS(クラウド上)環境
オンプレミス環境
Qass	
  Plugin
ICU	
  Plugin Kuromoji	
  
Plugin
…	
  
Plugin
Alias Alias
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
12
独⾃自プラグイン
Qass独⾃自のPlugin機構
独⾃自の機構により無停⽌止のモジュール更更新
サイト運営に影響を与えず検索索改善
⾼高速な検索索軸でのA/Bテスト可能な基盤を整備
各サービスサイト Qass  Plugin
検索索チーム
検索索ロジックA  v1
検索索ロジックB  v1 検索索ロジックB  v2
検索索チームで動的切切替
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
13
SnapShotの活⽤用
Snapshot/Restore  APIをJenkinsで定期実⾏行行
実際の検索索結果を元に検索索改善を実施するクラスタを複製
データサイエンティストが⾃自由に検索索アルゴリズムを操作、確認可能
Snapshot  API
Snapshots
サービス⽤用クラスタ
検索索改善⽤用クラスタ
Restore  API
本番同等の内容で
検索索改善結果を確認可能な
環境を⾃自動的に⽣生成
アルゴリズムの操作
結果の確認
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
14
環境に合わせたIndex作成
環境によって異異なるIndex作成⽅方法を採⽤用
どのような環境でもサービス影響出さず安全な更更新が可能
AWS環境
サービス⽤用クラスタ
(Blue⾯面)
サービス⽤用クラスタ
(Green⾯面)
Blue-‐‑‒Green  Deployでク
ラスタ切切替
オンプレミス環境
Index
A
Index
B
Doc
Alias Alias
River:差分更更新
Aliasで
Index切切替
サービスノードサービスノード
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
Elastic{ON}ダイジェスト  ~∼  運⽤用時の注意点  〜~
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
16
バージョンアップ
Qass Pusna 可視化
バージョン
0.9
1.4
1.5 1.5
1.7
2.1
最新バージョンを
利利⽤用するようにしているが、
リリースサイクルが早く
追いつききれていない
バージョンアップの際はどのような対応が必要か?
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
17
バージョンアップ
0.9  -‐‑‒>  1.7へのバージョンアップ
2バージョンのクラスタを⽤用意してリアルタイムで移⾏行行
v0.9  クラスタ v1.7  クラスタ
両⽅方へ書込
v0.9  クラスタ v1.7  クラスタ
⽚片バージョンを切切り離離し
APIやレスポンスが変わっているため、
そのままの移⾏行行は不不可能
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
18
リクルートのelasticSearchの活⽤用
l 検索索基盤として、Pluginを活⽤用した最適化
l QueryのRewrite
l 重み付けsort
l SolrのリクエストをElasticsearchで受け付けれる
l Dynamoの補完とリアルタイム性
l DyanamoDBが苦⼿手なデータ検索索の補完
l リアルタイム性を利利⽤用したPush通知
l データの可視化
l データをグラフで可視化するとわかりやすい!
l 説得材料料になる!
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
ここがツラいよElasticsearch
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
1:バージョンアップがツラいよ!!
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
21
バージョンアップがツラいよ!!
p  1.0.0(2014/02/12)がリリース以降降、頻繁にupdateが⾏行行われている。
最新版は、2.1.1
p   サービスをバージョンアップを⾏行行う場合、現⾏行行で利利⽤用しているAPI正
常に動作するか検証する必要があるため、バージョンアップにコスト
がかかる。
p APIも⼤大幅に変更更される場合あり
p 各バージョンのPluginを⽤用意しないとならない
p 2.x以降降は、集計処理理(Aggregation)機能が強化されたイメージが強
いので、検索索エンジンとしては、必要な機能をみたいしている為、
bugFix以外では、2.x系にバージョンアップをするモチベーションが
上がらない。
ただし、Elasticのサポートが必要な場合は、3バージョンしかサポートして
くれないらしいので、サポートをうける場合バージョンアップをする必要あり。
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
22
Elastic社が来⽇日した時に、
upgradeに関して質問した所・・・
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
23
Elastic社にきいた簡単なバージョンアップ法
VIP
既存クラスタ 新クラスタ
両⽅方へ書込
既存クラスタ 新クラスタ
VIP
LB reIndexが終わった段
階でSearch⽤用のLBを
切切り替えればいいよ!
LB
VIP VIP
LBの向き
先を変更更オンプレの環境だと、クラスタの準備や
VIPの切切替などの⾊色々⼤大変
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
2:Riverが⾮非推奨なったのツラいよ!!
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
25
Riverが⾮非推奨なったのツラいよ!!
p  1.5.xからriverは、⾮非推奨となり、2.0からは、riverは削除されます。
h7ps://www.elas>c.co/blog/depreca>ng-­‐rivers	
  
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
26
検索索基盤:QassでのRiver利利⽤用事例例
サイト
検索索
サーバー
Web  server
Batch  server
NFS
riverdata.ulogid
Admin
1.  インデックス作成
3.  インデックス作成
Qass  Client
2.  インデックス作成リクエスト
4.  インデクシング
Indexer
5.  インデクシングリクエスト
4.  update_̲log  出⼒力力(file  put)
5.  update_̲log  を読んで、
  データを更更新(nfs  mount)
Update  log  file:/YYYMMDD/${ulogid}.qass.gz
mount mount
Indexの作成が、Riverに依存している
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
27
Riverを利利⽤用しない、新しい仕組みが必要
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
28
現在、検討中の案
p  River同等の処理理を⾏行行うプロセスを⽴立立ち上げて、Zookeeperにて、管理理
p  その他にもconsul,Kafka+Logstashなどの実装も検討  
Server1
river代替
process
zookeeper
Server2
river代替
process
zookeeper
Server3
river代替
process
zookeeper
共有設定
どのサー
バーで
最後に何
時、動作
したのか
を保持す
る
Server1でうごく
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
29
検討中の案
Zookeeperが起動プロセスを管理理しているので
同時起動で重複書き込みのリスクが減らせる
Server1
river代替
process
zookeeper
Server2
river代替
process
zookeeper
Server3
river代替
process
zookeeper
共有設定
最後に動いた時間から、
数分経ったので、
どちらかが動く
Server3で動く:20151110_̲17000000に動いた
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
3:フィールドに「.」が使えないのがツラいよ!!
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
31
フィールドに「.」が使えないのがツラいよ!!
p  2.xから「.」をフィールドが利利⽤用できない
p index/mapper/object/ObjectMapper.javaにある、parseProperties
メソッドで、FileldNameをチェックしてるのでelasticsearchが⽴立立ち
上がらない。
p 1.x系からUpgradeする際には、elasticsearch-‐‑‒migrationプラグイン
で確認すること
h"ps://github.com/elas3c/elas3csearch-­‐migra3on
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
32
p  昔(Solr)から、Fieldの命名規則に、「.」を付けているサービスが多い
p  アプリのフレームワークにも依存している部分が⼤大きいため、影響範囲が
⼤大きい
フィールドに「.」が使えないのがツラいよ!!
h7ps://www.elas>c.co/guide/en/elas>csearch/reference/current/
breaking_20_mapping_changes.html
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
4:Replication-‐‑‒Async⾮非推奨がツラいよ!!
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
34
Replication-‐‑‒Async⾮非推奨がツラいよ!!
p  1.5より、ReplicationのAysncが⾮非推奨(2.0では削除)
p  全件更更新の際に更更新スピードを上げる為、Aysncを利利⽤用
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
5:ズレがツラいよ!!
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
36
ズレがツラいよ!!
p  リロケート、リバランス、レプリカ⽣生成中に、primaryに更更新が⼊入ると
documentにズレが発⽣生
p  レプリカ時の現象に関しては、2.xで解消済み(Issue⾒見見当たらず)
p  Issueは、すでに上がっている(#13719、#14252)
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
37
①セグメントファイルのコピー
②トランザクションのコピー
Shardの移動(relocate,rebalance)の発⽣生時
セグメントファイルを新しいnodeにコピー後、トランザクションファイルがコピー
されて、追っかけ更更新(トランザクションの読み込み)が始まり、shardの同期が⼊入る
が、更更新(add,delete,update)が⼊入った場合にドキュメントに差異異が発⽣生!!
ただし、status的にはgreenな為、ドキュメント数で確認するしかない。
更更新(UPDATE,DELETE,INSERT)が⼊入ると・・・。
途中のデータが⽋欠損している場合がある。(リアルタイム更更新等)
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
38
対策案
サイト
検索索
サーバー
Web  server
Batch  server
NFS
riverdata.ulogid
Admin
1.  インデックス作成
3.  インデックス作成
Qass  Client
2.  インデックス作成リクエスト
4.  インデクシング
Indexer
5.  インデクシングリクエスト
4.  update_̲log  出⼒力力(file  put)
5.  update_̲log  を読んで、
  データを更更新(nfs  mount)
Update  log  file:/YYYMMDD/${ulogid}.qass.gz
mount mount
Doucumet数のズレを監視して、ズレが
あれば過去のupdateログから再実⾏行行
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
最後に
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
40
検索索関係のディスカッション
p  Facebook上で「検索索技術研究会」というグループで検索索やビックデータ
系の技術を共有してますので、こちらも是⾮非参加してみてください。
h7ps://www.facebook.com/groups/search.tech/
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
41
参考資料料
p Qass
p Elasticsearch+Hadoopベースの⼤大規模検索索基盤⼤大解剖
p Pusna-‐‑‒RS
p ⼤大規模プッシュ通知基盤⼤大解剖
p リクルートテクノロジーズについて
Qass
pusna-‐‑‒rs
リクルートテクノロジーズ  ブログ
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
42
リクルートテクノロジーズでは、
Elasticsearchを始めとした、
“先端技術”を使って⼀一緒に仕事をする
仲間を募集しています!
43
Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved
ご清聴ありがとうございました!

More Related Content

PDF
検索基盤Qass
PDF
JJUG CCC リクルートの Java に対する取り組み
PPTX
とあるKVSをAutoscalingしてみる
PDF
[よくわかるクラウドデータベース] Amazon RDS for SQL Server導入事例
PDF
Kubernetes on Alibaba Cloud
PDF
Alexaスキルを作ろう
PPTX
比較サイトの検索改善(SPA から SSR に変換)
PDF
Well-Architectedな組織を
実現するためのチャレンジ - なぜ、CA W-Aを作ろうと思ったのか - #jawsdays 2019
検索基盤Qass
JJUG CCC リクルートの Java に対する取り組み
とあるKVSをAutoscalingしてみる
[よくわかるクラウドデータベース] Amazon RDS for SQL Server導入事例
Kubernetes on Alibaba Cloud
Alexaスキルを作ろう
比較サイトの検索改善(SPA から SSR に変換)
Well-Architectedな組織を
実現するためのチャレンジ - なぜ、CA W-Aを作ろうと思ったのか - #jawsdays 2019

What's hot (20)

PPTX
APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部
PDF
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦
PDF
デジタル化への第一歩 「エンタープライズデータレイク構築事例のご紹介」
PDF
AWSによるサーバーレスアーキテクチャ
PDF
Storm の新機能について @HSCR #hadoopreading
PDF
Yahoo! JAPANにおけるオンライン機械学習実例 #streamctjp
PDF
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
PPTX
アメーバブログを支えるデータセンターとインフラ技術
PDF
AWSでのセキュリティ運用 ~ IAM,VPCその他
PDF
【初公開】チャットワーク検索機能を支える技術
PDF
クラウド時代だからこそ見直したい
PHPアプリケーションのパフォーマンスチューニング
PDF
NuxtJS + REST APIで運用中サービスをNuxtJS + GraphQLに変更したことによる光と影
PDF
AWS & Google Cloud 両方を駆使するチームでの技術選定
PDF
2018/9/11 SAP on AWS お客様事例セミナー@東京(BeeX資料2/2)
PDF
AWS re:Inventに行くために今日からやるべき3つのこと
PDF
2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション
PDF
2018/9/11 SAP on AWS お客様事例セミナー@東京(BeeX資料1/2)
PDF
SAP S/4HANA化に向けたAWS構築・移行の勘所(インフラベーシス編)
PDF
Dist 29 gcp_serverless_web_app_development
PDF
JAWS DAYS 2017 Mafia Talk
APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦
デジタル化への第一歩 「エンタープライズデータレイク構築事例のご紹介」
AWSによるサーバーレスアーキテクチャ
Storm の新機能について @HSCR #hadoopreading
Yahoo! JAPANにおけるオンライン機械学習実例 #streamctjp
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
アメーバブログを支えるデータセンターとインフラ技術
AWSでのセキュリティ運用 ~ IAM,VPCその他
【初公開】チャットワーク検索機能を支える技術
クラウド時代だからこそ見直したい
PHPアプリケーションのパフォーマンスチューニング
NuxtJS + REST APIで運用中サービスをNuxtJS + GraphQLに変更したことによる光と影
AWS & Google Cloud 両方を駆使するチームでの技術選定
2018/9/11 SAP on AWS お客様事例セミナー@東京(BeeX資料2/2)
AWS re:Inventに行くために今日からやるべき3つのこと
2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション
2018/9/11 SAP on AWS お客様事例セミナー@東京(BeeX資料1/2)
SAP S/4HANA化に向けたAWS構築・移行の勘所(インフラベーシス編)
Dist 29 gcp_serverless_web_app_development
JAWS DAYS 2017 Mafia Talk
Ad

Similar to Elasticsearch勉強会 (20)

PPTX
AppPot製品概要
PDF
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
PDF
Unification of the middle scale services by Nuxt.js
PDF
Googleアシスタントアプリ実際のところ
PPTX
何故DeNAがverticaを選んだか?
PPTX
fastlane x iOSアプリのCI
PDF
【HinemosWorld2014】A2-4_Hinemos レポーティングオプションを活用したLinux+Apache+PostgreSQLの監視とレポ...
PDF
おすすめインフラ! for スタートアップ
PDF
Automation with SoftLayer and Zabbix
PDF
チラシルiOSでの広告枠開発
PPTX
オールアバウトにおける技術への取り組み
PPTX
Dangerでpull requestレビューの指摘事項を減らす
PPTX
MSC2014_NetApp_Session
PDF
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
PDF
Yahoo!ブラウザーにおける市場環境の分析と戦略化
PPTX
APIに関するセッション資料
PPT
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
PPTX
20170705 apiをつくろう
PDF
YJTC18 A-1 大規模サーバの戦略
PDF
リクルートにおけるPaaS活用事例
AppPot製品概要
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Unification of the middle scale services by Nuxt.js
Googleアシスタントアプリ実際のところ
何故DeNAがverticaを選んだか?
fastlane x iOSアプリのCI
【HinemosWorld2014】A2-4_Hinemos レポーティングオプションを活用したLinux+Apache+PostgreSQLの監視とレポ...
おすすめインフラ! for スタートアップ
Automation with SoftLayer and Zabbix
チラシルiOSでの広告枠開発
オールアバウトにおける技術への取り組み
Dangerでpull requestレビューの指摘事項を減らす
MSC2014_NetApp_Session
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Yahoo!ブラウザーにおける市場環境の分析と戦略化
APIに関するセッション資料
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
20170705 apiをつくろう
YJTC18 A-1 大規模サーバの戦略
リクルートにおけるPaaS活用事例
Ad

Elasticsearch勉強会

  • 1. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved ここがツラいよElasticsearch ⾼高林林  貴仁/@tatakaba 2016/01/07
  • 2. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 2 ⾃自⼰己紹介 ⾼高林林  貴仁  /  @tatakaba 2011  〜~  リクルート⼊入社 APソリューショングループ Ø 検索索基盤 Ø データ解析 Ø DWHとCEP Ø Webアプリケーション開発 Ø R&D(ウェアラブル端末等) それ以前 Ø 主に検索索システム担当 Ø web,地図,local検索索等 Ø WPO(Web  Performance   Optimization)
  • 3. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved Elastic{ON}ダイジェスト  ~∼  活⽤用例例  〜~
  • 4. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 4 Elasticsearchを活⽤用したサービス基盤 全社プッシュ通知基盤 l  リアルタイムな検索索要件 l  Dynamoの補完 検索索 条件抽出 データ取得 全社検索索基盤 l  サイト内検索索 l  キーワードサジェスト l  スペラー l  関連検索索ワード 可視化 l  UU l  コンバージョン l  ログ
  • 5. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 5 全社検索索基盤:QASS 検索索結果をQass基盤へ集約 検索索に関連する情報を⼀一箇所に集積検 索索結果を横断的に専⾨門家が集約・分析 機械学習による検索索品質向上 ログを利利⽤用することで、 検索索品質の向上を⾏行行う 検索索結果分析基盤 検索索品質の継続的向上を⾏行行う全社基盤 フィードバックサイクル による検索索改善
  • 6. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 6 QASSの全体構成 各サイトのindex (Doc数:数百万〜~数千万単位)
  • 7. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 7 全社プッシュ通知基盤:Pusna-‐‑‒RS p  スマートフォンなどに簡単に通知を送る事ができる仕組み GCM Google  Cloud  Messaging Push! Push! APNs Apple  Push  Notification  Service
  • 8. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 8 Pusna-‐‑‒RSの全体構成 リクルート 8   デバイス管理理 プッシュ配信管理理 DynamoDB Elasticsearch 登録API SQS 登録worker 配信worker SQS 操作⽤用WebUI 管理理API 配信担当者 データ基盤 APNs GCM 事業サーバ デバイス情報や配信情報の 実データの索索引として利利⽤用 (Doc数:億単位)
  • 9. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 9 可視化 各サービスの定量量的な指標確認 l  コンバージョン l  Bucket(A/B)テスト l  ログ監視 l  ユーザログ 検索索結果の分析 検索索効果の可視化 サービスノード lo g サービスメトリクス の可視化 検索索結果分析基盤
  • 10. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved Elastic{ON}ダイジェスト  ~∼  運⽤用編  〜~
  • 11. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 11 Elasticsearch運⽤用編 Plugin機構の利利⽤用 動的ロード A/Bテスト Snapshot機構の利利⽤用 オンラインバックアップ 本番環境の複製 環境に合わせたIndex作成 AWS(クラウド上)環境 オンプレミス環境 Qass  Plugin ICU  Plugin Kuromoji   Plugin …   Plugin Alias Alias
  • 12. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 12 独⾃自プラグイン Qass独⾃自のPlugin機構 独⾃自の機構により無停⽌止のモジュール更更新 サイト運営に影響を与えず検索索改善 ⾼高速な検索索軸でのA/Bテスト可能な基盤を整備 各サービスサイト Qass  Plugin 検索索チーム 検索索ロジックA  v1 検索索ロジックB  v1 検索索ロジックB  v2 検索索チームで動的切切替
  • 13. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 13 SnapShotの活⽤用 Snapshot/Restore  APIをJenkinsで定期実⾏行行 実際の検索索結果を元に検索索改善を実施するクラスタを複製 データサイエンティストが⾃自由に検索索アルゴリズムを操作、確認可能 Snapshot  API Snapshots サービス⽤用クラスタ 検索索改善⽤用クラスタ Restore  API 本番同等の内容で 検索索改善結果を確認可能な 環境を⾃自動的に⽣生成 アルゴリズムの操作 結果の確認
  • 14. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 14 環境に合わせたIndex作成 環境によって異異なるIndex作成⽅方法を採⽤用 どのような環境でもサービス影響出さず安全な更更新が可能 AWS環境 サービス⽤用クラスタ (Blue⾯面) サービス⽤用クラスタ (Green⾯面) Blue-‐‑‒Green  Deployでク ラスタ切切替 オンプレミス環境 Index A Index B Doc Alias Alias River:差分更更新 Aliasで Index切切替 サービスノードサービスノード
  • 15. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved Elastic{ON}ダイジェスト  ~∼  運⽤用時の注意点  〜~
  • 16. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 16 バージョンアップ Qass Pusna 可視化 バージョン 0.9 1.4 1.5 1.5 1.7 2.1 最新バージョンを 利利⽤用するようにしているが、 リリースサイクルが早く 追いつききれていない バージョンアップの際はどのような対応が必要か?
  • 17. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 17 バージョンアップ 0.9  -‐‑‒>  1.7へのバージョンアップ 2バージョンのクラスタを⽤用意してリアルタイムで移⾏行行 v0.9  クラスタ v1.7  クラスタ 両⽅方へ書込 v0.9  クラスタ v1.7  クラスタ ⽚片バージョンを切切り離離し APIやレスポンスが変わっているため、 そのままの移⾏行行は不不可能
  • 18. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 18 リクルートのelasticSearchの活⽤用 l 検索索基盤として、Pluginを活⽤用した最適化 l QueryのRewrite l 重み付けsort l SolrのリクエストをElasticsearchで受け付けれる l Dynamoの補完とリアルタイム性 l DyanamoDBが苦⼿手なデータ検索索の補完 l リアルタイム性を利利⽤用したPush通知 l データの可視化 l データをグラフで可視化するとわかりやすい! l 説得材料料になる!
  • 19. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved ここがツラいよElasticsearch
  • 20. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 1:バージョンアップがツラいよ!!
  • 21. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 21 バージョンアップがツラいよ!! p  1.0.0(2014/02/12)がリリース以降降、頻繁にupdateが⾏行行われている。 最新版は、2.1.1 p   サービスをバージョンアップを⾏行行う場合、現⾏行行で利利⽤用しているAPI正 常に動作するか検証する必要があるため、バージョンアップにコスト がかかる。 p APIも⼤大幅に変更更される場合あり p 各バージョンのPluginを⽤用意しないとならない p 2.x以降降は、集計処理理(Aggregation)機能が強化されたイメージが強 いので、検索索エンジンとしては、必要な機能をみたいしている為、 bugFix以外では、2.x系にバージョンアップをするモチベーションが 上がらない。 ただし、Elasticのサポートが必要な場合は、3バージョンしかサポートして くれないらしいので、サポートをうける場合バージョンアップをする必要あり。
  • 22. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 22 Elastic社が来⽇日した時に、 upgradeに関して質問した所・・・
  • 23. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 23 Elastic社にきいた簡単なバージョンアップ法 VIP 既存クラスタ 新クラスタ 両⽅方へ書込 既存クラスタ 新クラスタ VIP LB reIndexが終わった段 階でSearch⽤用のLBを 切切り替えればいいよ! LB VIP VIP LBの向き 先を変更更オンプレの環境だと、クラスタの準備や VIPの切切替などの⾊色々⼤大変
  • 24. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 2:Riverが⾮非推奨なったのツラいよ!!
  • 25. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 25 Riverが⾮非推奨なったのツラいよ!! p  1.5.xからriverは、⾮非推奨となり、2.0からは、riverは削除されます。 h7ps://www.elas>c.co/blog/depreca>ng-­‐rivers  
  • 26. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 26 検索索基盤:QassでのRiver利利⽤用事例例 サイト 検索索 サーバー Web  server Batch  server NFS riverdata.ulogid Admin 1.  インデックス作成 3.  インデックス作成 Qass  Client 2.  インデックス作成リクエスト 4.  インデクシング Indexer 5.  インデクシングリクエスト 4.  update_̲log  出⼒力力(file  put) 5.  update_̲log  を読んで、   データを更更新(nfs  mount) Update  log  file:/YYYMMDD/${ulogid}.qass.gz mount mount Indexの作成が、Riverに依存している
  • 27. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 27 Riverを利利⽤用しない、新しい仕組みが必要
  • 28. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 28 現在、検討中の案 p  River同等の処理理を⾏行行うプロセスを⽴立立ち上げて、Zookeeperにて、管理理 p  その他にもconsul,Kafka+Logstashなどの実装も検討   Server1 river代替 process zookeeper Server2 river代替 process zookeeper Server3 river代替 process zookeeper 共有設定 どのサー バーで 最後に何 時、動作 したのか を保持す る Server1でうごく
  • 29. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 29 検討中の案 Zookeeperが起動プロセスを管理理しているので 同時起動で重複書き込みのリスクが減らせる Server1 river代替 process zookeeper Server2 river代替 process zookeeper Server3 river代替 process zookeeper 共有設定 最後に動いた時間から、 数分経ったので、 どちらかが動く Server3で動く:20151110_̲17000000に動いた
  • 30. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 3:フィールドに「.」が使えないのがツラいよ!!
  • 31. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 31 フィールドに「.」が使えないのがツラいよ!! p  2.xから「.」をフィールドが利利⽤用できない p index/mapper/object/ObjectMapper.javaにある、parseProperties メソッドで、FileldNameをチェックしてるのでelasticsearchが⽴立立ち 上がらない。 p 1.x系からUpgradeする際には、elasticsearch-‐‑‒migrationプラグイン で確認すること h"ps://github.com/elas3c/elas3csearch-­‐migra3on
  • 32. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 32 p  昔(Solr)から、Fieldの命名規則に、「.」を付けているサービスが多い p  アプリのフレームワークにも依存している部分が⼤大きいため、影響範囲が ⼤大きい フィールドに「.」が使えないのがツラいよ!! h7ps://www.elas>c.co/guide/en/elas>csearch/reference/current/ breaking_20_mapping_changes.html
  • 33. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 4:Replication-‐‑‒Async⾮非推奨がツラいよ!!
  • 34. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 34 Replication-‐‑‒Async⾮非推奨がツラいよ!! p  1.5より、ReplicationのAysncが⾮非推奨(2.0では削除) p  全件更更新の際に更更新スピードを上げる為、Aysncを利利⽤用
  • 35. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 5:ズレがツラいよ!!
  • 36. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 36 ズレがツラいよ!! p  リロケート、リバランス、レプリカ⽣生成中に、primaryに更更新が⼊入ると documentにズレが発⽣生 p  レプリカ時の現象に関しては、2.xで解消済み(Issue⾒見見当たらず) p  Issueは、すでに上がっている(#13719、#14252)
  • 37. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 37 ①セグメントファイルのコピー ②トランザクションのコピー Shardの移動(relocate,rebalance)の発⽣生時 セグメントファイルを新しいnodeにコピー後、トランザクションファイルがコピー されて、追っかけ更更新(トランザクションの読み込み)が始まり、shardの同期が⼊入る が、更更新(add,delete,update)が⼊入った場合にドキュメントに差異異が発⽣生!! ただし、status的にはgreenな為、ドキュメント数で確認するしかない。 更更新(UPDATE,DELETE,INSERT)が⼊入ると・・・。 途中のデータが⽋欠損している場合がある。(リアルタイム更更新等)
  • 38. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 38 対策案 サイト 検索索 サーバー Web  server Batch  server NFS riverdata.ulogid Admin 1.  インデックス作成 3.  インデックス作成 Qass  Client 2.  インデックス作成リクエスト 4.  インデクシング Indexer 5.  インデクシングリクエスト 4.  update_̲log  出⼒力力(file  put) 5.  update_̲log  を読んで、   データを更更新(nfs  mount) Update  log  file:/YYYMMDD/${ulogid}.qass.gz mount mount Doucumet数のズレを監視して、ズレが あれば過去のupdateログから再実⾏行行
  • 39. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 最後に
  • 40. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 40 検索索関係のディスカッション p  Facebook上で「検索索技術研究会」というグループで検索索やビックデータ 系の技術を共有してますので、こちらも是⾮非参加してみてください。 h7ps://www.facebook.com/groups/search.tech/
  • 41. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 41 参考資料料 p Qass p Elasticsearch+Hadoopベースの⼤大規模検索索基盤⼤大解剖 p Pusna-‐‑‒RS p ⼤大規模プッシュ通知基盤⼤大解剖 p リクルートテクノロジーズについて Qass pusna-‐‑‒rs リクルートテクノロジーズ  ブログ
  • 42. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 42 リクルートテクノロジーズでは、 Elasticsearchを始めとした、 “先端技術”を使って⼀一緒に仕事をする 仲間を募集しています!
  • 43. 43
  • 44. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved ご清聴ありがとうございました!