ClassiでどのようにAmazon Elasticsearch Serviceを利用しているのか、その紹介です。
Copyright © 2018 Classi Corp. All Rights Reserved.ClassiでのAmazon ElasticsearchServiceの活用Copyright © 2018 Classi Corp. All Rights Reserved.プロダクト部 中村真一郎
View Slide
Copyright © 2018 Classi Corp. All Rights Reserved.• 中村真一郎• twitter: s_nakamura, github: nakaearth• 株式会社ヒトメディアからClassiへ出向• 職歴• sIer: 8年• BtoCやBtoBのサービスやっている会社に10年近く• 現在は• Classiで、Railsエンジニアとして働いています1自己紹介
Copyright © 2018 Classi Corp. All Rights Reserved.• ClassiでElasticsearchをどう使っているのか• 運用している時に出てきた問題、課題などa. コンテンツボックス検索機能b. 校内グループ• その他2目次
Copyright © 2018 Classi Corp. All Rights Reserved.• 現在Amazon Elasticsearch Serviceを使っているのは以下の機能• テスト、問題、アンケート等の検索機能(コンテンツボックス)• 先生/生徒がメッセージをやり取りする機能(校内グループ)• その他様々なデータの検索• この中の最初の二つについて話します3ClassiでElasticsearchをどう使っているのか
Copyright © 2018 Classi Corp. All Rights Reserved.コンテンツボックス• これはもともとMysqlのmroongaストレージエンジンを使って作られていたがパフォーマンス悪化のためElasticsearchに変更して改善を試みた• 何故変更したかというと、そもそもデータ構造がmroongaに適してなかった• 階層構造のデータ• データの属性(科目だったり難易度だったり)が検索対象1に対してN。• ElasticsearchはDocument指向DBでjson形式のデータを登録。• json形式のデータを検索できるので、階層構造になっていても大丈夫。• AWSにはAmazon Elasticsearch Serviceがある。→ Elasticsearchに変更することに。4ClassiでElasticsearchをどう使っているのか
Copyright © 2018 Classi Corp. All Rights Reserved.コンテンツボックス• 作り直した結果どうなったか・・・。• レスポンスが10秒以上掛かっていたものが1~2秒まで短縮できた・・。• テストも結構細かく追加した。• まずは機能として使えないという危機は脱したで、リプレースしてから月日が流れ、新たな課題が・・・。5ClassiでElasticsearchをどう使っているのか
Copyright © 2018 Classi Corp. All Rights Reserved.コンテンツボックス• 運用して感じた課題、それは「 バージョンアップ」• 既に6系が出ているElasticsearch。で今使っているのは・・・・・2.3!!!!!!!6運用している時に出てきた問題、課題など
Copyright © 2018 Classi Corp. All Rights Reserved.コンテンツボックス• 随分差があるように見えるが・・・• Elasticsearchは2系の次は5系。だからそこまで古くはない・・・・とは言えない・・・。• やっぱり古い・・・。• アップデートしないとダメ• どうやるか・・・。• reindex apiはまだ使えない• バックアップデータのrestoreだと差分がでる7運用している時に出てきた問題、課題など
Copyright © 2018 Classi Corp. All Rights Reserved.コンテンツボックス• Elasticsearchのバージョンを上げて新規にindexを作成して、そこに対し既存のデータをimport。• データimport中も並行して新規データも入れるようにする• 割と泥臭いかもしれないけど、この方式が無難8運用している時に出てきた問題、課題などver2.3でindexver5でindex作成APP
Copyright © 2018 Classi Corp. All Rights Reserved.校内グループ• バージョン5系• 当初、学校毎にindexを作成。• 学校毎にデータが別れている。• messageとcommentが1対多の構造。それを一つのJSONで表して登録。• 本文に対してキーワード検索を行う9ClassiでElasticsearchをどう使っているのか
Copyright © 2018 Classi Corp. All Rights Reserved.校内グループ• 学校数が多くなりindexの数は〜千以上に。• index作成ができない状態に・・・・。• master nodeを置いてないとindexの作成やindexの更新が検索側に影響する• 結局master nodeを追加し、index数も抑えた形で作り直してリリース10ClassiでElasticsearchをどう使っているのか
Copyright © 2018 Classi Corp. All Rights Reserved.校内グループ• index数は〜十個。学校を各Indexに適宜分散させる• master nodeを3つ(推奨)にし、データnodeを2つ• 安定した。11ClassiでElasticsearchをどう使っているのか
Copyright © 2018 Classi Corp. All Rights Reserved.校内グループ• 今は6系が出てます。→バージョンアップしないと!!• 最近AWSからAmazon Elasticsearch Serviceのupdateに関して使えそうな機能がリリース!!12ClassiでElasticsearchをどう使っているのか
Copyright © 2018 Classi Corp. All Rights Reserved.校内グループ• 5系から使える機能。• ドメインのアップグレードから今のバージョンから次のバージョンにアップグレードすることができる(ノーメンテで)13ClassiでElasticsearchをどう使っているのか
Copyright © 2018 Classi Corp. All Rights Reserved.校内グループ• 「アップグレードの適格性の確認」を実行するとアップグレードがこのままできるかの確認ができる。• 結果は「アップグレード履歴」から確認できる14ClassiでElasticsearchをどう使っているのか
Copyright © 2018 Classi Corp. All Rights Reserved.校内グループ• 5系から使える機能なので、2系から5系へは今までのように運用側で工夫してやるしかないが、幸い5系を使っているのでこの機能についてはAWSのこの機能が使えるかも• まだテスト環境でしか試してない。本番適用は近日中の予定。15ClassiでElasticsearchをどう使っているのか
Copyright © 2018 Classi Corp. All Rights Reserved.その他• バージョンアップの追従が早くなった。→ 使える機能は限られているマシンラーニングなど使えない機能が結構ある。→運用コストは抑えられる。• バックアップ。自由にやりたいなら自前でスクリプト書いてやる。• kibanaを使って中身を見ることはできる16ClassiでElasticsearchをどう使っているのか
Copyright © 2018 Classi Corp. All Rights Reserved.以上です。ご静聴ありがとうございます!17