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
680
安全で使いやすいCarPlayアプリの 魅せ方:HIGと実例から学ぶ
navitimejapan
PRO
1
230
見えないユーザの声はログに埋もれている! ~ログから具体的なユーザの体験を数値化した事例紹介~
navitimejapan
PRO
6
2.9k
ユーザーのためなら 『デザイン』 以外にも手を伸ばせる
navitimejapan
PRO
2
1.5k
フツーのIT女子が、 Engineering Managerになるまで
navitimejapan
PRO
3
350
不確実性に打ち勝つOKR戦略/How to manage uncertainty with OKR strategy
navitimejapan
PRO
4
3.5k
アジャイルを小さいままで 組織に広める 二周目 / 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
【OptimizationNight】数理最適化のラストワンマイルとしてのUIUX
brainpadpr
1
430
生成AI時代におけるAI・機械学習技術を用いたプロダクト開発の深化と進化 #BetAIDay
layerx
PRO
1
1.1k
2025-07-31: GitHub Copilot Agent mode at Vibe Coding Cafe (15min)
chomado
2
390
LLMで構造化出力の成功率をグンと上げる方法
keisuketakiguchi
0
650
【CEDEC2025】現場を理解して実現!ゲーム開発を効率化するWebサービスの開発と、利用促進のための継続的な改善
cygames
PRO
0
760
みんなのSRE 〜チーム全員でのSRE活動にするための4つの取り組み〜
kakehashi
PRO
2
140
Serverless Meetup #21
yoshidashingo
1
110
【CEDEC2025】ブランド力アップのためのコンテンツマーケティング~ゲーム会社における情報資産の活かし方~
cygames
PRO
0
250
dipにおけるSRE変革の軌跡
dip_tech
PRO
1
250
オブザーバビリティプラットフォーム開発におけるオブザーバビリティとの向き合い / Hatena Engineer Seminar #34 オブザーバビリティの実現と運用編
arthur1
0
370
Amazon Q と『音楽』-ゲーム音楽もAmazonQで作成してみた感想-
senseofunity129
0
120
✨敗北解法コレクション✨〜Expertだった頃に足りなかった知識と技術〜
nanachi
1
650
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
1k
Thoughts on Productivity
jonyablonski
69
4.8k
Building Adaptive Systems
keathley
43
2.7k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Side Projects
sachag
455
43k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
880
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
GitHub's CSS Performance
jonrohan
1031
460k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
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