Upgrade to Pro — share decks privately, control downloads, hide ads and more …

レガシーSolrの
Elasticseach移行 Cybozu Tech Meetup #14

49b08973c143dc1424a05364e518d361?s=47 tomoya yokota
July 13, 2021
25

レガシーSolrの
Elasticseach移行 Cybozu Tech Meetup #14

サイボウズのクラウドサービスでは、サービス開始当初から長年にわたり、全文検索サーバーとしてSolrを採用していました。 そんなサイボウズのクラウド黎明期から運用し続けていたSolrサーバーを、Elasticsearchに置き換えるプロジェクトが先日完了しました。プロジェクトの完了報告は、以下の記事から読むことができます。

魔窟と化した全文検索サーバーとふっかつのじゅもん - Cybozu Inside Out
https://blog.cybozu.io/entry/2021/06/16/080000K

今回のCybozu Tech Meetupでは、Elasticsearch移行プロジェクトのメンバーの1人から、Cybozu Inside Outでは語り切れなかった苦労話や、これからの進展についてお話しします。

Youtube Live:
https://www.youtube.com/watch?v=GRDx1PFdFUQ

49b08973c143dc1424a05364e518d361?s=128

tomoya yokota

July 13, 2021
Tweet

Transcript

  1. ϨΨγʔSolrͷ
 ElasticseachҠߦ Cybozu Tech Meetup #14

  2. ͸͡Ίʹ • ϨΨγʔSolrͷElasticsearchҠߦ͝ࢀՃ͋Γ͕ͱ͏͍͟͝·͢ • ʰຐ۸ͱ͔ͨ͠શจݕࡧαʔόʔͱ;͔ͬͭͷ͡Ύ΋Μʱͱ
 ΄΅ಉ͡಺༰ʹͳΓ·͢ • ࣭໰ʹͰ͖ΔݶΓ౴͍͑ͨͱߟ͓͑ͯΓ·͢ • ϒϩάΛಡΜͰͷ࣭໰ɾποίϛ΍


    ಉ͡Α͏ͳڥ۰ͷํͰ೰ΜͰ͍Δํ͕͍Ε͹
 ࣾ֎ൿ৮Εͳ͍ఔ౓ʹڞ༗͍͚ͯͨͩ͠ΔͱҰॹʹ೰Έ·͢ɻ
  3. ࣭໰ͳͲ͋Ε͹͓ؾܰʹ • Twitter΋#CybozuTechͷ
 ϋογϡλάΛ͚ͭͯ
 ͭͿ΍͍͍͚ͯͨͩΔͱ
 ࣭໰Λर͑Δ͔΋͠Ε·ͤΜ

  4. ຊ୊ͷલͷΤΫεΩϡʔζ • ʰϨΨγʔʱͱ͍͏ݴ༿ʹରͯ͠ωΨςΟϒͳ͖ͭ·ͱ͍͕ͪͰ͢ • ϨΨγʔԽͯ͠͠·ͬͨOSSΛᄀΊΔҙਤ͸͋Γ·ͤΜ • աڈɾݱࡏؔΘͬͨϝϯόʔΛᄀΊΔҙਤ͸͋Γ·ͤΜ • Solr͕αΠϘ΢ζͷΫϥ΢υᴈ໌ظΛࢧ͑ͨͷ͸
 ༳Δ͗ͳ͍ࣄ࣮Ͱ͢

    • ࠓճ࠾༻ͨ͠ΞʔΩςΫνϟ͸
 Elasticsearch͕ਪ঑͍ͯ͠Δߏ੒ͱ͸શ͘ҟͳΓ·͢
  5. Solrͱcybozu.com

  6. શจݕࡧαʔόʔʹ͍ͭͯ • αΠϘ΢ζͰ͸SolrΛར༻͍ͯͨ͠ • JettyʹwarܗࣜͷSolrΛόϯυϧ͢Δ
 ߏ੒Ͱӡ༻؀ڥʹσϓϩΠ • ࣗࣾΧελϚΠζΛߦ͍ͬͯͨ • Ψϧʔϯ/ϝʔϧϫΠζ/kintoneͰશจΛར༻

  7. Ϋϥ΢υͷߏ੒ʹ͍ͭͯ • ӡ༻ʹඞཁͳίϯϙʔωϯτ͝ͱʹVMʹ഑ஔ • Solr΋͜ͷ಺ͷҰͭ • Ұఆ਺ͷςφϯτ͝ͱΛ·ͱΊͯ
 ͦΕͧΕʹಠཱͨ͠؀ڥΛఏڙ͍ͯ͠Δ

  8. cybozu.comͷΫϥ΢υ֓ཁਤ ςφϯτID={1, 2, 3} ςφϯτID={6,7,8} ςφϯτID={4,5} ςφϯτID, ϓϩμΫτ͝ͱʹ
 SolrͷΠϯσοΫεΛ࡞੒

  9. ຐ۸ͱԽ͢·Ͱͷྺ࢙

  10. SolrͱΫϥ΢υͷྺ࢙ • Ϋϥ΢υαʔϏεᴈ໌ظ͔Βͷ
 શจݕࡧͷج൫ٕज़ • SolrͷόʔδϣϯΞοϓʹΑΓ
 τʔΫφΠβͷޓ׵ੑ͕յΕΔ͜ͱ͕Θ͔Δ • Solr΁ͷόʔδϣϯΞοϓΛ͍ͬͨΜఘΊΔ

  11. τʔΫφΠβͱ͸ʁ • શจݕࡧͷࡧҾ৘ใ͸จষΛҰఆͷϧʔϧͰ
 ෼ׂͨ͠୯ޠͱจষͷIDͰΠϯσοΫεΛ࡞੒͢Δ • (Ex) ࠓ೔͸ྑ͍ఱؾͩ → ࠓ೔ɺྑ͍ɺఱؾ
 ͱจষIDͰυΩϡϝϯτอଘ

    • (ࠓ೔ or ྑ͍ or ఱؾ) ΛݕࡧΩʔϫʔυʹ͢Δͱ
 (Ex)ͷจষ͕ݕࡧώοτ͢Δ • ෼ׂͷϧʔϧ͸τʔΫφΠβʹΑͬͯҟͳΓ·͢ • ༗໊ͳτʔΫφΠβ͸Kuromoji, N-gram ͳͲɻ༻్ʹΑͬͯ࢖͍෼͚Δ
  12. τʔΫφΠβ͕յΕΔͱ…? • τʔΫφΠβA͕࣍ͷΑ͏ʹ෼ׂ͢Δͱ͢Δ • Ex) ౦ژ౎ → ౦ژ, ژ౎Ͱ෼ׂ
 👉

    ౦ژ or ژ౎Ͱώοτ • ݡ͍τʔΫφΠβ → ౦ژ, ౦ژ౎Ͱ෼ׂ
 👉 ౦ژ or ౦ژ౎Ͱώοτ • ݕࡧϊΠζ͕ݮΔͨΊɺҰൠతʹ͸Bͷํ͕ݡͯ͘ྑ͍ͱ͞ΕΔ
  13. ݡ͍ݕࡧ͸خ͍͠͸ͣ…ʁ • kintoneʹ͸ϨίʔυߜΓࠐΈػೳ͕͋Γ
 ςΩετΛؚΉ৚݅ͰߜΓࠐΉػೳ͕͋ͬͨ • ߜΓࠐΈ͕ώοτ͢Δɾ͠ͳ͍͕มΘΔͷ͸
 kintoneʹͱͬͯ͸ΫϦςΟΧϧͳޓ׵ੑͷ
 ഁյͱͳΔ • kintoneͷߜΓࠐΈػೳ͕τʔΫφΠβͷ࢓༷ʹ


    ҉໧తʹີ݁߹͍ͯ͠Δ
  14. KintoneͷߜΓࠐΈ ߜΓࠐΈͷΩʔϫʔυ͕શจݕࡧͰώοτ͢Δͱ
 Ϩίʔυͱͯ͠දࣔ͞ΕΔ

  15. ຐ۸ͱԽ͢Solr • 1೥Ͱ1TBΠϯσοΫε͕૿Ճ͢Δςφϯτ • ΠϯσοΫεංେԽʹΑΓݕࡧੑೳͷྼԽ • GaroonͰ͸ݕࡧੑೳྼԽ͕ݦஶ • ݕࡧϦΫΤετ͕਺ेඵ͔͔ͬͯ
 ௐࠪͰλΠϜΞ΢τ͢Δ͜ͱ͕Θ͔͍ͬͯͨ

    • ҰํͰɺkintoneͷޙํޓ׵ੑ͸ଥڠͰ͖ͳ͍… • खΛՃ͑Δ͜ͱ͕Ͱ͖ͳ͍ࣄ࣮͕ੵΈ্͕ͬͯਏ͍
  16. ͞Βʹຐ۸ͱԽܾ͢ఆଧΛ
 ඥղ͍͍ͯ͘

  17. ΠϯσΫγϯάͷྺ࢙

  18. ΠϯσΫγϯάͱ͸ • શจݕࡧ༻ͷࡧҾσʔλ࡞੒Λࢦ͢ • Ϣʔβʔͷૢ࡞ʹରͯ͠ࡧҾΛ௥Ճɾߋ৽ɾ࡟আΛߦ͏ • ͢Ͱʹଘࡏ͢ΔσʔλΛΫϩʔϧͯ͠ࡧҾΛ࠶࡞੒͢Δ • τʔΫφΠβͷมߋ࣌ʹ͸࠶ΠϯσΫγϯά͕ඞཁʹͳΔ •

    ϓϩμΫτ͸ΠϯσΫγϯάΛ࡞੒͢ΔAPIΛ࣋ͭ • ͜ΕΛSRE͕࣮ߦ͢Δ࢓૊Έ
  19. ΠϯσΫγϯάͷ֓ཁਤ ΠϯσοΫεͷ࠶࡞੒ ϢʔβʔೖྗͷΠϯσοΫεߋ৽

  20. ͭΒ͍ΠϯσοΫεͷ࠶࡞੒ • SRE͕ࡉ͔͍ঢ়ଶ؅ཧ • ΠϯσΫγϯάର৅ͷςφϯτ • ΠϯσΫγϯάର৅ͷϓϩμΫτ • ΠϯσΫγϯάର৅ͷϨίʔυͷҐஔ •

    ΠϯσοΫεͷ࠶࡞੒͕௕ظԽ͢Δςφϯτ͕ݱΕ͸͡ΊΔ • SREΦϖϨʔγϣϯͷߟྀ࿙ΕͰ࡞੒தͷΠϯσοΫε͕
 յΕΔࣄނ͕ى͖ΔΑ͏ʹͳΔ • ͜ͷࣄނ͕ى͖Δͱͦͷςφϯτ͸ΠϯσοΫεͷ΍Γ௚͠
  21. ϩετςΫϊϩδʔԽ • ΠϯσοΫεͷ࠶࡞੒͸ආ͚Δงғؾ͕ࣾ಺Ͱৢ੒͞ΕΔ • ͦ͏͍ͯ͠Δؒʹ໼໘ʹཱ͍ͬͯͨίΞϝϯόʔ͕ୀ৬ • ΠϯσοΫεͷ࠶࡞੒Λ࠷ޙ·Ͱ਱ߦ͢Δ
 ύϫʔΛ࣋ͬͨਓʹڧ͘ґଘ࣮ͨ͠૷ͩͬͨ • ׬શʹ৮Ε͍ͯ͸͍͚ͳ͍ຐ۸΁

    • ͦΜͳͱ͖ʹզʑͷલʹݱΕͨͷ͸…
  22. Elasticsearchͷ୆಄

  23. ʰ஖ᥨͷࢳʱΛٻΊͯ R&D • ࠷ߴͷΠϯσΫγϯάɺ࠷ߴͷΫϥελ • τʔΫφΠβͷޓ׵ੑ͸ɺElasticsearchͰ΋ͳ͍·· • 👉 ϏδωεαΠυΛઆಘͯ͠ɺͳΜͱ͔͢Δ •

    ࠶ΠϯσοΫε͸ఆظϝϯςதʹ΍Γ͖ΔΒ͍͠ • 👉 Ϗδ..(ry
  24. ʰ஖ᥨͷࢳʱ͸੬͔ͬͨ • Elasticsearch6͸େྔͷΠϯσοΫεΛ࣋ͭͱ
 Ϋϥελ͕ෆ҆ఆԽ͢Δ • Elasticsearchͷߏ੒Ҋ͸͢΂ͯͷςφϯτΛ
 ̍ͭͷΫϥελʹऩΊΔߏ૝ͩͬͨ

  25. ΞʔΩςΫνϟͷߏ੒มߋਤ

  26. ͞ΑͳΒ ͨΓͳ͍ΞʔΩςΫνϟ • ໰୊Λղܾ͢Δʹ͸৭ʑ଍Γͳ͍ • ෳࡶͳΫϥελ؅ཧ • ϚϧνςφϯτͰ࢖͑ΔαʔϏεɾσΟεΧόϦ • ޻਺ɾ޻਺ɾ޻਺

    • ࣮ݱෆೳͷᖻҹΛԡ͞ΕͯϓϩδΣΫτఀࢭ • ࠓࢥ͏ͱR&Dͱ͍͏ݴ༿ʹݱ࣮ಀආ͍ͯͨ͠
  27. ຐ۸·ͱΊ • τʔΫφΠβͱີ݁߹ͨ͠ػೳʹΑΓ
 ਎ಈ͖͕औΕͳ͘ͳΔ • ࠶ΠϯσοΫε༻ͷπʔϧ͕࢖͍෺ʹͳΒͳ͘ͳΔ • ڊେԽɾੑೳ͕ѱԽ͚ͭͮ͠Δݕࡧαʔόʔ • ଐਓԽɾϩετςΫϊϩδʔԽ

    • ࠷ޙʹ͕ͬͨ͢Elasticsearch΋ແཧͩͬͨ
  28. Solr End of Life ͱ 
 ϏόʔΫϓϩδΣΫτ

  29. Solr EOLͱϏόʔΫ • ར༻͍ͯ͠ΔSolr͕End of life(EOL)΁ • EOLରԠͷΈΛ໨తͱͨ͠
 શจݕࡧαʔόʔҠߦΛ໛ࡧ •

    ొࢁ༻ޠͰۓٸආ೉Λҙຯ͢ΔϏόʔΫͱͨ͠ • NecoͰΞʔΩςΫνϟతʹ͖Ε͍ͳղʹ
 ࢸΕ͹Α͍ɻ͍Θ͹࣌ؒՔ͗
  30. ϏόʔΫͷείʔϓ • Solr͔Βͷ୤٫ʰͷΈʱΛείʔϓͱ͢Δ
 ࣮֬ʹϓϩδΣΫτΛऴΘΒͤΔ • ໨త͸SolrͷηΩϡϦςΟϦεΫΛআڈͷΈ • ҠߦΛ੒ޭͤ͞ΔͨΊʹʰ΂͖࿦ʱ͸͠ͳ͍ • ΞʔΩςΫνϟ͔͋͘Δ΂͠࿦͸͠ͳ͍

    • ੑೳͰக໋తͳ໰୊͕ग़ͳ͍ݶΓ͸ҠߦΛଧ਍
  31. ٕज़બఆ • SolrΛόʔδϣϯΞοϓ͢ΔҊ΋͋ͬͨ • ࠷৽ͷSolrͰ͸ࣾ಺Ͱఏڙ͍ͯͨ͠ܗࣜͰͷ
 ܧଓఏڙ͢Δͷ͕೉͘͠ɺSolrʹͩ͜ΘΔՁ஋͕௿͔ͬͨ • Kintone࣍ੈ୅ΞʔΩςΫνϟͱݺ͹ΕΔ΋ͷ͕͋Γɺٕज़ελοΫΛ߹Θͤͨ • Elasticsearch͸debύοέʔδΛఏڙ͍ͯͯ͠SRE͕ѻ͍΍͍͔ͬͨ͢

    • Elasticsearch͸Ԙ௮͚໰୊ΛղܾͰ͖Δػߏ͕͏·͘Ͱ͖͍ͯͨ • ElasticsearchΛୈҰީิͱͯ͠ɺੑೳݕূΛߦͬͯΈͨ
  32. ੑೳݕূͷ݁Ռ • چ SolrͱElasticsearchൺֱͰσΟεΫ༰ྔ40%ݮ • ੑೳݕূ࣌(2018/12)ʹ
 SolrͰ࠷େͷΠϯσοΫε༰ྔ͸2.8TB • ElasticsearchʹҠߦ͢Δͱ1.4TBʹͳΔ •

    Ψϧʔϯ͸ݕࡧੑೳ͕10ഒվળ • Ψϧʔϯ͸͜ͷλΠϛϯάͰσʔλߏ଄Λݟ௚͠ • ϝʔϧϫΠζɾkintone͸ྼԽͳ͠
  33. Solr͔Β୤٫͢Δʹ͸ʁ • ղܾ͢Δ΂͖໰୊͸̏఺ • ΠϯσοΫε਺ͷ੍ݶΛͲ͏͢Δ͔ʁ • τʔΫφΠβͷޓ׵ੑΛͲ͏อ͔ͭʁ • ΠϯσοΫεͷ࠶࡞੒ΛͲ͏͢Δ͔ʁ

  34. ΠϯσοΫε਺ͷ੍ݶ • Elasticsearchෆ҆ఆԽ໰୊Λௐࠪͯ࣍͠ͷΑ͏ʹ݁࿦ΛಘΔ • େن໛Ϋϥελߏ੒Ͱى͖Δ • େྔΠϯσοΫεɺγϟʔυ͕Ϋϥελ্ʹଘࡏ͍ͯ͠Δඞཁ͕͋Δ • ΠϯσοΫε࡞੒͑͞Ͱ͖Ε͹ͦͷޙ͸໰୊ͳ͘ӡ༻Ͱ͖Δ •

    Solrͱಉ͡ߏ੒ɺγϯϓϧͳΫϥελͰσϓϩΠ͢Ε͹໰୊ΛճආͰ͖Δ • ΫϥελΛෳࡶԽ͗͢͠ͳ͍ɾΠϯσοΫε਺Λ੍ݶͰ͖Δ • ͱ͍͏͜ͱͰʰSolrͱ΄΅ಉߏ੒ʱΛSREʹଧ਍ • SREతʹ΋Ϋϥελߏங޻਺͸ѹॖͰ͖Δɻӡ༻؀ڥͷमਖ਼΋͋Δఔ౓૝ఆ಺ʹऩ·Δɻ • ͜ΕͰΑ͠ͱ͍ͯ͠Δͷ͸Solrͷߏ੒ͱಉ౳ͷߏ੒ͱͳΔͨΊ
  35. τʔΫφΠβͷޓ׵ੑ • Elasticsearch͸ΞφϥΠβͷ
 ϓϥάΠϯػߏ͕͋Γ૊ΈࠐΈ΍͍͢ • Solrͷݹ͍τʔΫφΠβΛϓϥάΠϯͱͯ͠
 Ҡ২͢Δͷ͸ݱ࣮తͩΖ͏͔ʁ • ޙํޓ׵ੑͷഁյΛೲಘͯ͠΋Β͏ͷʹ࣌ؒΛ
 ༹͔͢ͷͱτʔΫφΠβͷϝϯςφϯείετΛෛ͏

    ͷ͸ͲͪΒ͕Ϛγʁ
  36. ϓϥάΠϯ؅ཧίετ͸௿ͦ͏ • ϓϥάΠϯ͸Jarͱͯ͠෼཭Ͱ͖Δ • OSSʹύονΛ౰ͯͯ࠶Ϗϧυෆཁ • ίϚϯυϥΠϯͰ؆୯Πϯετʔϧ • όʔδϣϯΞοϓ࣌ʹ͸ϓϥάΠϯΛ࠶Ϗϧυ •

    ӡ༻؀ڥ͸debύοέʔδͰ഑෍͍ͯ͠ΔͷͰ
 Elasticsearch഑෍ͷdebύοέʔδΛमਖ਼ͯ͠
 ϓϥάΠϯΛόϯυϧ͍ͯ͠Δ
  37. DockerfileͰ͔ΜͨΜ # Stage1: download custom plugin source from github FROM

    quay.io/cybozu/ubuntu-dev:20.04 AS plugin-source ARG CLASSIC_CJK_ANALYSIS_PLUGIN_VERSION="7.10.2" WORKDIR /work RUN git clone https://github.com/cybozu/classic-cjk-analysis-plugin.git -b "$ {CLASSIC_CJK_ANALYSIS_PLUGIN_VERSION}" . # Stage2: build plugin FROM amazoncorretto:11.0.8 AS plugin-build COPY --from=plugin-source /work /work WORKDIR /work RUN ./gradlew clean zipPlugin # Stage3: custom install FROM docker.elastic.co/elasticsearch/elasticsearch:7.10.2 COPY --from=plugin-build /work/build/dist/classic-cjk-analysis-plugin-0.0.1-es-7.10.2.zip /tmp/classic-cjk- analysis-plugin-0.0.1-es-7.10.2.zip RUN bin/elasticsearch-plugin install --batch file:///tmp/classic-cjk-analysis-plugin-0.0.1-es-7.10.2.zip
  38. ΠϯσοΫε࠶࡞੒ͷ໰୊ • Building microservicesΛ
 ࢀߟʹҠߦҊΛݕ౼ • ϚΠΫϩαʔϏεͷݪଇΛ
 ҙࣝ͠ͳ͕ΒҠߦΛઃܭ͢Δ

  39. ϞϊϦε͔ΒϚΠΫϩαʔϏε΁ • ҠߦʹಛԽͨ͠ϊ΢ϋ΢͕
 ٧·͍ͬͯΔͷͰ
 ͪ͜Β΋͓͢͢ΊͰ͢ • ϚΠΫϩαʔϏεʹݶΒͣ
 ಡΜͰ͓͘ͱࠔͬͨͱ͖ʹ
 ॿ͚ͯ͘ΕΔ͔΋͠Ε·ͤΜ

  40. ઃܭͰॏཁࢹͨ͜͠ͱ • ա৒ͳ੹຿ͷ෼ׂ • ಺෦࣮૷ΛӅṭ͢Δ͜ͱ • αʔϏεॴ༗ऀ͕ओମతʹಈ͖΍͍͢ઃܭมߋ • ΧφϦΞϦϦʔε •

    ετϥϯάϥʔɾύλʔϯ
  41. SREͷ੹຿ͷ෼ׂͱҠৡ • աڈͷ࠶ΠϯσοΫεͷ࣮૷͸ΞϓϦͷ
 ࣮૷ͷΧϓηϧԽ͕ద੾Ͱ͸ͳ͍ͱ͍͏໰୊ΛղऍΛͨ͠ • ϩδοΫ͸ॻ͖΍͍͢ͱ͜Ζʹूத͢Δ
 ܏޲͕͋ΔɻSREʹूத͍͗ͯͨ͢͠ɻ • Ϋϥ΢υͷᴈ໌ظʹ։ൃͨ͠࠶ΠϯσοΫεπʔϧͷ࣮૷͸
 ѻ͑Δσʔλྔɾෳࡶ͞Λ໌Β͔ʹ௒͑ͯɺ࢖͍෺ʹͳΒͳ͍ɻ

    • SRE͸ςφϯτ͝ͱͷ࠶ΠϯσοΫεΛ։࢝͢ΔλΠϛϯάͷ
 ίϯτϩʔϧʹूதͤ͞Δ(੹຿ͷ෼ׂͱҠৡ)
  42. ϓϩμΫτ͕ओମతʹಈ͖΍͍͢ઃܭมߋ • SREͷίʔυʹϩδοΫ͕ूத͍ͯͨ͠ͷͰ
 ϓϩμΫτͰओମతʹઃܭมߋ͠ʹ͍͘ঢ়گ • ϓϩμΫτͷؔ৺͝ͱ͸ՄೳͳݶΓӅṭ͢Δ • ࢓༷Λक͍ͬͯΕ͹ଞͷνʔϜ͸ؔ஌͠ͳ͍ • ϓϩμΫτ͕ओମతʹઃܭมߋͰ͖ΔΑ͏ʹͳΔ

    • কདྷతͳվળ΋ߦ͍΍͘͢ͳΔ(…͸ͣ)
  43. ΧφϦΞϦϦʔεΛ੝ΓࠐΉ • ໰୊͕͋ͬͨͱ͖ʹSolrʹ੾Γ໭ͤΔΑ͏ʹ • Solrʹ੾Γ໭ͤΔAPIΛϓϩμΫτʹ࣮૷ • Solr/ElastcisearchͷΠϯσοΫε
 ྆ํΛߋ৽͢Δฒߦӡ༻ظؒΛઃ͚Δ • ΤεέʔϓϧʔτΛ૊ΈࠐΜͰ͓͘

    • 👉 ਓΛઆಘ͠΍͍͢
  44. ετϥϯάϥʔύλʔϯ • Ҡߦύλʔϯͷ͏ͪͷҰͭ • ϨΨγʔͳίϯϙʔωϯτΛঃʑʹݮΒ͢ • ໰୊͕͋Ε͹ϨΨγʔʹ੾Γ໭͠ • νʔϜ͝ͱͷ޻਺΍࣮૷଎౓΋มΘΔ •

    ରԠ׬ྃͨ͠ϓϩμΫτ͔ΒΠϯσοΫε։࢝ • Ϋϩʔϧऴྃͨ͠؀ڥ͔ΒElasticsearch੾Γସ͑ • ϏοΫόϯϦϥΠτɾϏοΫόϯϦϦʔε͸Ͱ͖Δ͚ͩ͠ͳ͍
  45. ҠߦΠϝʔδ • ϓϩμΫτ͝ͱʹ
 Solr͔ΒElasticsearchʹ
 Ҡߦ͍ͯ͘͠ • Fig1͸Kintoneฒߦӡ༻
 Fig2͸Ψϧʔϯฒߦӡ༻ • ※ݫີʹ͸ฏߦӡ༻ظؒ͸Φʔόϥοϓ

  46. Ҡߦ༻ͷػೳΛAPIͱ࣮ͯ͠૷ • ͜͜·ͰΛߟ͑ΔͱϓϩμΫτAPIͰ࡞ͬͯ΋Βͬͨ΄͏͕ద੾ • SRE͸Ͱ͖Δ͔͗ΓAPIͷ࣮ߦʹపͯ͠΋Β͏ • Ϋϩʔϥʔͷ։࢝APIΛ࣮ߦ • ਐḿ֬ೝAPIΛ࣮ߦ •

    Elasticsearch/Solr੾Γସ͑APIΛ࣮ߦ • Ϋϩʔϧͷਐḿঢ়گΛ಺෦తʹ࣋ͯΔͷͰSREͷΦϖϨʔγϣϯͰ
 ࠶ΠϯσοΫε͕ഁغ͞ΕΔ͜ͱ΋ͳ͍
  47. WebAPIͱ࣮ͯ͠૷ ϓϩμΫτνʔϜͱSREνʔϜ͕࡞ͬͨঢ়ଶભҠਤ

  48. ͔͜͜Β͸ҠߦৼΓฦΓ

  49. Solr͔Βͷ׬શ୤٫ʹ੒ޭ • 2021೥6݄ͷఆظϝϯςφϯεؚΊͯ
 શϓϩμΫτͷαϙʔτظؒऴྃ • ͢΂ͯͷ؀ڥ͸Elasticsearchஔ͖׵͑׬ྃ • ϏόʔΫͷείʔϓɾ໨త͸ୡ੒Ͱ͖ͨ • ໋͔Β͕Β…ऴΘΓ·ͨ͠

  50. Ҡߦͯ͠ੑೳ͸Ͳ͏Ͱ͔ͨ͠ʁ • ੑೳݕূͰಘΒΕͨ݁Ռ௨ΓͰتͼͷ੠௖͍͓ͯΓ·͢
 ※ Ψϧʔϯ͸σʔλߏ଄ͷվળͷӨڹ͕େ͖͍Ͱ͢

  51. τʔΫφΠβͲ͏Ͱ͔ͨ͠ʁ • kintoneͷߜΓࠐΈͷมԽ͸΄΅ؾ͔ͮΕͳ͔ͬͨ(≒ޮՌ͸͹͙ͭΜͩʂ) • ඍົͳ࢓༷ࠩҟ͕͋ͬͨΓͨ͠ͷͰαϙʔτͷΈͳ͞Μͷਚྗʹײँ • ޓ׵ੑʹͯ͠ΫϦΞͰ͖͍ͯͨͷͰҙࢥܾఆ·Ͱͷ࣌ؒΛѹॖͰ͖ͨ • ϓϥάΠϯ΋΄΅ࣗಈԽ͍ͯ͠ΔͷͰίετ͸΄΅̌ •

    ϓϥάΠϯʹͳͬͨͷͰޓ׵ੑҡ࣋ͷ఺Ͱ͸Ұ҆৺ • ո͘͠΋͋Δ͕ɺΫϨόʔͳحࡦͱ͍͏͜ͱͰ͜͜͸ऩΊ͓͖ͯ·͢
  52. ࠶ΠϯσΫγϯάͲ͏Ͱ͔ͨ͠ʁ • ڊେσʔλ؀ڥͷҠߦʹ΋੒ޭ • ࠷ऴతʹSolrͷΠϯσοΫε͸4TBʹୡͨ͠ • ͋Δఔ౓ͷπϥϛ͸؇࿨Ͱ͖ͨͷͰ
 ੒ޭ·Ͱ͚͗ͭ͜ΒΕͨ • ϓϩμΫτνʔϜɾSREνʔϜʹ৽͍͠


    ेࣈՍΛഎෛΘͤͯ΋͍ΔͷͰ…೉͍͠
  53. ΧφϦΞϦϦʔεͲ͏Ͱ͔ͨ͠ • 100%ݕࡧΤϥʔʹͳΔো֐͕͋ͬͨ • ElasticsearchͷαʔΩοτϒϨΠΧʔൃಈ • ͍ͬͨΜఘΊͯSolr΁੾Γ໭͠ • ݪҼΛղੳɾઃఆมߋɾ࣮૷มߋΛͯ҆͠ఆӡ༻ʹ͚͍͗ͭͯ͜Δ •

    ʰࣦഊ͸૝ఆ͓ͯ͘͠΂͖ʱɻͱͯ΋Αֶ͍ͼʹͳͬͨ • ࣦഊέʔε͸ݱ࣮ಀආ͕ͪ͠… • ࡉ͔͍έʔε͸ߟྀͰ͖ͳͯ͘΋ࣦഊ࣌ͷΤεέʔϓϧʔτΛ֬อ͓ͯ͜͠͏
  54. ετϥϯάϥʔύλʔϯͲ͏Ͱ͔ͨ͠ • νʔϜʹΑͬͯ޻਺ɾ։ൃ଎౓͕มΘΔͷͰ
 ঃʑʹݮΒ͍ͯ͘͠ํ਑͸ͱͯ΋Α͔ͬͨ • Ҡߦϓϩηε͸ஸೡʹઃܭ͢Δඞཁ͕͋ͬͯ
 ϊ΢ϋ΢΋ଘࡏ͢Δྑֶ͍ͼʹͳͬͨ • ҠߦϓϩηεΛஸೡʹઃܭ͢Δͱ
 ͏·͍͘͘(͜ͱ΋͋ΔΒ͍͠)

  55. ࠷ޙʹ Neco΁

  56. ϏόʔΫ͸׬ྃ • ϓϩδΣΫτ໊ͱঢ়گΛরΒ͠߹ΘͤΔͱ
 ۓٸආ೉͔Βখ߁ঢ়ଶ·Ͱ͍྇ͩঢ়ଶ • ঢ়گ͕ѱԽ͢ΔલʹNecoͷ্ʹߦ͖·͠ΐ͏ • NecoͷΞʔΩςΫνϟʹότϯλον • ࣌ؒΛ͔͙ͤɾϊ΢ϋ΢ΛಘΔʹ͸े෼͗͢Δ


    ϝϦοτ͕͋ͬͨ

  57. ·͞ʹ͜Ε͔ΒҠߦຊ൪ • ϏόʔΫͰ࠶ΠϯσοΫε΍
 ޓ׵ੑͷ໰୊͸ղܾͷ໨ॲ͕ͨͬͨ • ϏόʔΫͰ͏·͘΍Εͳ͔ͬͨ໰୊ɺ
 ΞʔΩςΫνϟతʹະ஌਺ͳ෦෼ͳͲ • ͦͷ͋ͨΓͷ࿩͸ɺҠߦޙ͕ऴΘͬͨΒɺ
 ࠓ౓͸ϦΞϧͰଓ͖ͷ࿩Λ͠·͠ΐ͏

  58. We’re Hiring! • Kubernetes։ൃΛߦ͏Neco͕ਓؾͰ͕͢ • Kubernetes্ʹҠߦ͍ͯ͘͠
 ManekiνʔϜ΋͋Γ·͢ • ॾखΛڍ͛ͯק༠͸͠ʹ͍͘Ͱ͕͢ڵຯ͕͋Ε͹ɺԠื͓଴͓ͪͯ͠Γ·͢