Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
まさかEC2にインストールなんかしていないよね?~Amazon ESのメリット/デメリット~
Search
NAVITIME JAPAN
PRO
February 07, 2020
Technology
0
32
まさかEC2にインストールなんかしていないよね?~Amazon ESのメリット/デメリット~
2020/2/7(金)に開催された「Amazon Elasticsearch Service & Open Distro for Elasticsearch Meetup」にて発表した資料です。
NAVITIME JAPAN
PRO
February 07, 2020
Tweet
Share
More Decks by NAVITIME JAPAN
See All by NAVITIME JAPAN
つよつよリーダーが 抜けたらどうする? 〜ナビタイムのAgile⽀援組織の変遷〜
navitimejapan
PRO
23
15k
実践ジオフェンス 効率的に開発するために
navitimejapan
PRO
3
720
安全で使いやすいCarPlayアプリの 魅せ方:HIGと実例から学ぶ
navitimejapan
PRO
1
240
見えないユーザの声はログに埋もれている! ~ログから具体的なユーザの体験を数値化した事例紹介~
navitimejapan
PRO
6
3k
ユーザーのためなら 『デザイン』 以外にも手を伸ばせる
navitimejapan
PRO
2
1.6k
フツーのIT女子が、 Engineering Managerになるまで
navitimejapan
PRO
3
360
不確実性に打ち勝つOKR戦略/How to manage uncertainty with OKR strategy
navitimejapan
PRO
4
3.6k
アジャイルを小さいままで 組織に広める 二周目 / Agile Transformation in NAVITIME JAPAN iteration 2
navitimejapan
PRO
4
1.3k
変更障害率0%よりも「継続的な学習と実験」を価値とする 〜障害を「起こってはならないもの」としていた組織がDirtの実施に至るまで〜 / DevOps Transformation in NAVITIME JAPAN
navitimejapan
PRO
7
5.6k
Other Decks in Technology
See All in Technology
「Linux」という言葉が指すもの
sat
PRO
4
140
未経験者・初心者に贈る!40分でわかるAndroidアプリ開発の今と大事なポイント
operando
6
750
COVESA VSSによる車両データモデルの標準化とAWS IoT FleetWiseの活用
osawa
1
400
下手な強制、ダメ!絶対! 「ガードレール」を「檻」にさせない"ガバナンス"の取り方とは?
tsukaman
2
460
LLM時代のパフォーマンスチューニング:MongoDB運用で試したコンテキスト活用の工夫
ishikawa_pro
0
170
ブロックテーマ時代における、テーマの CSS について考える Toro_Unit / 2025.09.13 @ Shinshu WordPress Meetup
torounit
0
130
これでもう迷わない!Jetpack Composeの書き方実践ガイド
zozotech
PRO
0
1.1k
現場で効くClaude Code ─ 最新動向と企業導入
takaakikakei
1
260
「その開発、認知負荷高すぎませんか?」Platform Engineeringで始める開発者体験カイゼン術
sansantech
PRO
2
870
Oracle Cloud Infrastructure IaaS 新機能アップデート 2025/06 - 2025/08
oracle4engineer
PRO
0
110
エンジニアリングマネージャーの成長の道筋とキャリア / Developers Summit 2025 KANSAI
daiksy
3
1.1k
Platform開発が先行する Platform Engineeringの違和感
kintotechdev
4
590
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
113
20k
Typedesign – Prime Four
hannesfritz
42
2.8k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Designing Experiences People Love
moore
142
24k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
The Language of Interfaces
destraynor
161
25k
The Invisible Side of Design
smashingmag
301
51k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.9k
Transcript
·͔͞EC2ʹΠϯετʔϧͳΜ͔ͯ͠ͳ͍ΑͶʁ ʙAmazon ESͷϝϦοτ/σϝϦοτʙ גࣜձࣾφϏλΠϜδϟύϯ ాத Ұथ
Who Am I ? ໊લɿాத Ұथ ׂɿCloud Architect ܦྺɿ2013৽ଔೖࣾɻ2017ʙΫϥυܥͷ࡞ۀʹैࣄ ͖ͳAWSαʔϏεɿCloudFormation,
Lambda
Our Company • גࣜձࣾ φϏλΠϜδϟύϯ • ઃཱ 2000 3
݄ 1 • ۀ༰ • φϏήʔγϣϯαΠτɾΞϓϦͷӡӦ։ൃ • ௨৴ΧʔφϏήʔγϣϯࣄۀ • ܦ࿏୳ࡧΤϯδϯͷϥΠηϯεࣄۀ ͳͲ • ैۀһ 540 ໊ (ΤϯδχΞ 80% Ҏ্ʣ
Our Products NAVITIME NAVITIME όεNAVITIME ͜ΈΕΆ ެڞަ௨ υϥΠϒ ΧʔφϏλΠϜ υϥΠϒαϙʔλʔ
τϥοΫΧʔφϏ πʔϦϯά πʔϦϯάαϙʔλʔ ࣗసंNAVITIME Travel/Inbound JapanTravel NAVITIME Transit NAVITIME Travel Plat ϔϧεέΞ ALKOO PC/SP Web
Our Products ΦϯυϝσΟΞ ࠂ / ΞϥΠΞϯε ϏδωεφϏλΠϜ ಈଶཧιϦϡʔγϣϯ ϏδωεφϏλΠϜ ަ௨අਫ਼ࢉύοέʔδ
ςϨϚςΟΫεαʔϏε API / SDK ిమɾόεࣄۀऀ͚ ιϦϡʔγϣϯ ަ௨ίϯαϧςΟϯά ϏδωεφϏλΠϜ ަ௨අਫ਼ࢉύοέʔδ ϏδωεφϏλΠϜ ಈଶཧιϦϡʔγϣϯ ࠂ/ΞϥΠΞϯε ΦϯυϝσΟΞ ަ௨ίϯαϧςΟϯά ిమ/όεࣄۀऀ͚ ιϦϡʔγϣϯ API / SDK ςϨϚςΟΫεαʔϏε
ʲ͢͜ͱʳ • Amazon Elasticsearch Serviceͷࢹ/ӡ༻ํ๏ͷհ • EC2্ͰElasticsearchΛߏஙͨ͠ͱ͖ͷ • UltraWarm for
Amazon Elasticsearch Serviceʹ͍ͭͯຊʹগ͠ ʲ͞ͳ͍͜ͱʳ • Elasticsearchࣗମͷઆ໌ • Elasticsearchࣗମͷվળํ๏
φϏλΠϜαʔϏεͱAWS
2013 Ŗ 2015 Ŗ 2016 Ŗ σʔλੳج൫ͷҰ෦ΛAWSڥͰߏங։࢝ ަ௨ίϯαϧςΟϯάࣄۀɺNAVITIME TransitͰAWSར༻։࢝ φϏλΠϜαʔϏεͷAWSҠߦϓϩδΣΫτελʔτ
NAVITIME͕AWSར༻։࢝ σʔλੳج൫ΛAthena+S3ʹҠߦ ॱ࣍ɺφϏλΠϜαʔϏεΛAWSڥҠߦ ܦ࿏୳ࡧΤϯδϯʹAWSͷGPUΛ࠾༻ ΄΅ͯ͢ͷαʔϏε͕AWS্ͰՔಇ 2017 Ŗ 2019 Ŗ φϏλΠϜδϟύϯͷAWSͷ׆༻
αʔϏεجຊߏ υϥΠϒαϙʔλʔ ΞϓϦέʔγϣϯαʔό APIαʔό ֤छσʔλ(DB) ਤ৴αʔό ܦ࿏୳ࡧαʔό ֤छσʔλ(ES) ֤छσʔλ(Solr)
φϏλΠϜαʔϏεͰͷElasticsearch
Ͳ͜ͰΘΕͯΔͷʁ
Ͳ͜ͰΘΕͯΔͷʁ υϥΠϒαϙʔλʔ ਤΛ։͘ • ओʹυϥΠϒܥͷαʔϏεͰٯδΦίʔσΟϯάͷݕࡧͰར༻
Ͳ͜ͰΘΕͯΔͷʁ υϥΠϒαϙʔλʔ ਤΛ։͘ ਤ্Λԡ͠ • ओʹυϥΠϒܥͷαʔϏεͰٯδΦίʔσΟϯάͷݕࡧͰར༻
Ͳ͜ͰΘΕͯΔͷʁ υϥΠϒαϙʔλʔ ਤΛ։͘ • ओʹυϥΠϒܥͷαʔϏεͰٯδΦίʔσΟϯάͷݕࡧͰར༻ ਤ্Λԡ͠ ͷॅॴ͕දࣔ
Ͳ͜ͰΘΕͯΔͷʁ • ଞʹɺNAVITIME TravelͰͷهࣄݕࡧͳͲͰར༻த NAVITIME Travel
࣮ͣͬͱElasticsearch on EC2ͰՔಇͤͯ͞·ͨ͠ɾɾɾ
աڈͷߏ υϥΠϒαϙʔλʔ ΞϓϦέʔγϣϯαʔό APIαʔό ֤छσʔλ(DB) ਤ৴αʔό ܦ࿏୳ࡧαʔό ֤छσʔλ(Solr) ٯδΦݕࡧ
EC2→Amazon ESҠߦͷܦҢ
v1. ͱΓ͋͑ͣ࡞Γ·ͨ͠ • όϥϯαCLBΛར༻ʢ࣌ࣾͰALB͋·Γͬͯͳ͔ͬͨͷͰʣ • EC2ΛͱΓ͋͑ͣߏஙʢASGͳ͠ʣ • ֤EC2ͰͦΕͧΕͷIPΞυϨεΛอ࣋ʢElasticsearchͷઃఆʹॻ͖ʣ
• ߏங͕͙͢ʹͰ͖ͨʢ׳Εͨߏʣ • Amazon ESʹͳ͍ElasticsearchόʔδϣϯΛ͑ͨ Pros Cons • ෛՙ্ঢ࣌ʹAutoScaleͰ͖ͳ͍ •
Πϯελϯε͕མͪͨͱ͖ʹ෮چʹ͕͔͔࣌ؒΔ
v2. গ͠վળ • ֤EC2ΠϯελϯεʹENIͰݻఆIPΛઃఆ • όϥϯαΛALBʹมߋʢIPΞυϨεͰϔϧενΣοΫ͢ΔͨΊʣ
• Πϯελϯε͕མͪͯಉ͡IPΞυϨεΛ͑Δ Pros Cons • ෛՙ্ঢ࣌ʹAutoScaleͰ͖ͳ͍ • Πϯελϯε͕མͪͨͱ͖ʹ݁ہ෮چʹ͕͔͔࣌ؒΔ
ϦϦʔε·Ͱ࣌ؒແ͘ɺ ಛʹͳ͘Քಇ͍ͯͨͨ͠ΊɺͱΓ͋͑ͣαʔϏεΠϯ
Χ݄ޙɾɾɾ
Χ݄ޙɾɾɾ ʮٯδΦ͏αʔϏε͕૿͑·͢ʂʯ
v2. ૿͢ • ಉ͡ͷΛखಈͰىಈͤ͞ɺେྔϦΫΤετʹରԠɻɻɻ • ϦΫΤετ͕ఆҎԼͷ߹ɺखಈͰΓͯ͠ఀࢭ
v2. ૿͢ • ར༻͞ΕΔυϝΠϯ͝ͱʹ͜ͷߏͰߏங • අ༻/ӡ༻ͱʹ૿େ
ݶ ք
• masterϊʔυ͕ίϩίϩมΘΓɺಛఆͷΠϯελϯεͰ ෛՙ͕ߴ͘ͳΔ • ALBͷ5xxΤϥʔ͕ߴ͘ͳΔ • ϦΫΤετ͕૿͑ΔλΠϛϯάͷΈεέʔϧΞτΛ͕Μ(ry EC2࣌ͷۤ࿑
v3. ݱࡏͷߏ • Amazon ESҠߦ • ΞΫηεVPCΤϯυϙΠϯτܦ༝ υϥΠϒαϙʔλʔ ΞϓϦέʔγϣϯαʔό APIαʔό
֤छσʔλ(DB) ਤ৴αʔό ܦ࿏୳ࡧαʔό ֤छσʔλ(ES) ֤छσʔλ(Solr)
• ΠϯελϯεͷཧΛAWS͕ͬͯ͘ΕΔ • ઐ༻ϚελʔϊʔυΛઃఆ͢Δ͜ͱͰෛՙ͕ܰݮͰ͖Δ • ݁ՌɺΠϯελϯε͕ݮͰ͖ͨ • EC2࣌ΑΓίετ͕3ׂݮ Pros Cons
• Amazon ESͬͯΦʔτεέʔϧͰ͖ͳ͍ • ElasticsearchόʔδϣϯΞοϓ࣌ʹΓ͕ͮ͠͠Β͍ • ઃఆมߋ࣌ʹBlue/GreenσϓϩΠͷΑ͏ͳڍಈʹͳΔ(͕͔͔࣌ؒΔ)
Amazon ESͷࢹ
• CloudWatchμογϡϘʔυ্Ͱࢹ • CloudWatchΞϥʔϜͰͷΤϥʔ௨ Amazon ESͷࢹ
• CloudWatchμογϡϘʔυ • ElasticsearchRequestsɿϦΫΤετ(Sum) • ClusterStatusɹɹɹɹ ɿΫϥελঢ়ଶ(Avg) • Nodesɹɹɹɹɹɹɹɹɿϊʔυ(Avg/Min) •
4xx/5xxErrorɹɹɹɹɹɿΤϥʔ(Sum) • Read/Search LatencyɹɿϨΠςϯγ(Avg/p99) • CPU UtilizationɹɹɹɹɿCPU༻(Avg) • JVMMemoryPressureɹɿJavaώʔϓ%(Max) Amazon ESͷࢹ
Amazon ESͷࢹ
• CloudWatchΞϥʔϜ • 5xxError(Sum) • Search Latency(Avg) Amazon ESͷࢹ
Amazon ESͷӡ༻
AutoScale ͱ Upgrade&Downgrade
• Amazon ESͱ͍͏ΑΓElasticsearchͱͯ͠Φʔτεέʔϧ ʹରԠ͍ͯ͠ͳ͍† • Amazon ESͰσʔλϊʔυͷΛ૿ݮͤ͞Δ͜ͱՄೳ • σʔλϊʔυΛม͑ΔͱϨϓϦΧΛมߋ͢Δඞཁ͕͋Δ Amazon
ESͷӡ༻ ʙAutoScaleʙ † https://www.elastic.co/guide/en/cloud/current/ec-faq.html#faq-autoscale
• Amazon ESͱ͍͏ΑΓElasticsearchͱͯ͠Φʔτεέʔϧ ʹରԠ͍ͯ͠ͳ͍† • Amazon ESͰσʔλϊʔυͷΛ૿ݮͤ͞Δ͜ͱՄೳ • σʔλϊʔυΛม͑ΔͱϨϓϦΧΛมߋ͢Δඞཁ͕͋Δ Amazon
ESͷӡ༻ ʙAutoScaleʙ † https://www.elastic.co/guide/en/cloud/current/ec-faq.html#faq-autoscale LambdaΛ༻͍ͯΦʔτεέʔϧΛྗٕͰ࣮
Amazon ESͷӡ༻ ʙAutoScaleʙ • SearchLatencyΛࢹ
Amazon ESͷӡ༻ ʙAutoScaleʙ • SearchLatencyΛࢹ • SearchLatency͕ѱԽͨ͠ͷΛݕͨ͠Β LambdaΛൃՐ
Amazon ESͷӡ༻ ʙAutoScaleʙ • SearchLatencyΛࢹ • SearchLatency͕ѱԽͨ͠ͷΛݕͨ͠Β LambdaΛൃՐ • Lambda͔ΒAmazon
ESͷσʔλϊʔυΛ૿ Ճͤ͞Δ
Amazon ESͷӡ༻ ʙAutoScaleʙ • SearchLatencyΛࢹ • SearchLatency͕ѱԽͨ͠ͷΛݕͨ͠Β LambdaΛൃՐ • Lambda͔ΒAmazon
ESͷσʔλϊʔυΛ૿ Ճͤ͞Δ • ૿Ճ͕ྃޙɺϨϓϦΧΛมߋ͢ΔϦΫΤ ετΛAmazon ESͷΤϯυϙΠϯτʹରͯ͠ ͛Δ
Amazon ESͷӡ༻ ʙAutoScaleʙ ɹ※ ࣄલʹσʔλϊʔυͱϨϓϦΧͷؔੑΛ ɹɹެࣜԽ͓ͯ͘͠ඞཁ͋Γ ɹ※ Lambdaͷ࣮ߦ࣌ؒʹҙ ɹ※ εέʔϧΠϯಉ͡
• ΞοϓάϨʔυ • ແఀࢭͰElasticsearchͷΞοϓάϨʔυ͕Մೳ • όʔδϣϯΞοϓ͕ͳ͚ΕܧଓతʹΞοϓάϨʔυ ͍͖ͯ͘͠ Amazon ESͷӡ༻ ʙUpgrade&Downgradeʙ
• μϯάϨʔυ • Elasticsearch6ܥˠ7ܥͷΞοϓάϨʔυ࣌ʹϨεϙϯε ͷ༰͕มΘΔมߋ͕ೖͬͨͷʹؾ͔ͮͣΞοϓάϨʔυ -> hits.total is now an
object in the search response† • Amazon ESͷϦΫΤετͰΤϥʔ͕ଟൃ… • μϯάϨʔυํ๏Λࡧ… Amazon ESͷӡ༻ ʙUpgrade&Downgradeʙ † https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking-changes-7.0.html#hits-total-now-object-search-response
• ͙͢ʹͰ͖ΔμϯάϨʔυํ๏ͳ͍ • μϯάϨʔυํ๏ • ݅ɿࣗಈεφοϓγϣοτΛऔ͍ͬͯΔ͜ͱ • ํ๏ɿAWSαϙʔτ࿈བྷ͠ɺ৽نυϝΠϯͰ ɹɹɹɹɹɹεφοϓγϣοτ͔Βͷ෮ݩΛґཔ •
υϝΠϯͷมߋݫ͔ͬͨͨ͠ΊɺϨεϙϯεΛਖ਼͘͠ಡΊΔ Α͏ʹΞϓϦέʔγϣϯΛվम Amazon ESͷӡ༻ ʙUpgrade&Downgradeʙ
ࠓޙͷ՝ • Φʔτεέʔϧ݅ͷݟ͠ • όʔδϣϯΞοϓ࣌ʹSearchLatency͕ѱԽ͢Δ͜ͱ͕͋ ΔͷͰɺSearchLatencyҎ֎ͷ݅ΛࢦఆͰ͖ͳ͍͔ݕ౼ • Elasticsearch on EC2ͷ໓
• ·ͩҰ෦͍ͬͯΔڥ͕͋ΔͷͰݱࡏҠߦத • 2݄தʹαʔϏεར༻தͷͷશҠߦͰ͖ΔݟࠐΈ • OpenDistroࢼͯ͠ΈΔ
·ͱΊ • EC2ͰElasticsearchͷӡ༻ࢭΊ·͠ΐ͏ • Amazon ESͰཧͰ͖ͳ͍෦Elasticsearchଆͷ͋ ΔͷͰɺAWSͷϚωʔδυαʔϏεΛۦͯ͠ΓΓ· ͠ΐ͏ • όʔδϣϯΞοϓʹҙ͠·͠ΐ͏
• Amazon ESΑΓElasticsearchͷ༗ࣝऀΛࣾʹ࡞͍͖ͬͯ ·͠ΐ͏
• VPCΤϯυϙΠϯτʹରͯ͠Route53ͰυϝΠϯΛ͚͍ͭͨ • ઃఆมߋ࣌(ϩάͷઃఆͱ͔)ʹϊʔυ͕Blue/Greenʹͤͣʹม ߋͰ͖ΔΑ͏ʹͯ͠ཉ͍͠ʢ͕͍ͪ࣌ؒʣ • t2ΠϯελϯεϦβʔϒυΠϯελϯεͷରʹͯ͠ཉ͍͠ Amazon ESͷཁ
UltraWarm for Amazon ES
• ΞΫηεසͷগͳ͍σʔλΛUltraWarmετϨʔδҠಈ͞ ͤElasticsearchࣗମͷσΟεΫαΠζΛܰݮ͢Δ ɹɹ※ΠϯελϯελΠϓͱσΟεΫαΠζґଘؔ • ͍ͯΔ(ͱࢥ͏)༻్ • େͳσΟεΫΛ͏߹ • ΠϯσοΫεʹର͢ΔΞΫηεʹภΓ͕͋Δ߹
• ݕࡧ͡Όͳͯ͘ϩάੳϝΠϯ UltraWarm for Amazon ES
φϏλΠϜͷ༻్ͰίετϝϦοτແ͍ͷͰ͏༧ఆ͋Γ·ͤΜ UltraWarm for Amazon ES
UltraWarm for Amazon ES • ઐ༻Ϛελʔϊʔυʹt2ܥ͕͑ͳ͍ • ΫϥελཧΛͯ͠Δ͚ͩͳͷͰݱঢ়t2Ͱे • m5.largeʹεέʔϧΞοϓ͢Δͱʙ2ສԁ/݄ίετΞοϓ
• σΟεΫαΠζ͕TBະຬͳͷͰίετΧοτ΄΅Ͱ͖ͳ͍
©NAVITIME JAPAN