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
16k
実践ジオフェンス 効率的に開発するために
navitimejapan
PRO
3
890
安全で使いやすいCarPlayアプリの 魅せ方:HIGと実例から学ぶ
navitimejapan
PRO
1
260
見えないユーザの声はログに埋もれている! ~ログから具体的なユーザの体験を数値化した事例紹介~
navitimejapan
PRO
6
3.2k
ユーザーのためなら 『デザイン』 以外にも手を伸ばせる
navitimejapan
PRO
2
1.7k
フツーのIT女子が、 Engineering Managerになるまで
navitimejapan
PRO
3
390
不確実性に打ち勝つOKR戦略/How to manage uncertainty with OKR strategy
navitimejapan
PRO
4
3.8k
アジャイルを小さいままで 組織に広める 二周目 / Agile Transformation in NAVITIME JAPAN iteration 2
navitimejapan
PRO
4
1.4k
変更障害率0%よりも「継続的な学習と実験」を価値とする 〜障害を「起こってはならないもの」としていた組織がDirtの実施に至るまで〜 / DevOps Transformation in NAVITIME JAPAN
navitimejapan
PRO
8
5.8k
Other Decks in Technology
See All in Technology
「リリースファースト」の実感を届けるには 〜停滞するチームに変化を起こすアプローチ〜 #RSGT2026
kintotechdev
0
290
普段使ってるClaude Skillsの紹介(by Notebooklm)
zerebom
8
2.6k
自己管理型チームと個人のセルフマネジメント 〜モチベーション編〜
kakehashi
PRO
2
390
技術選定、下から見るか?横から見るか?
masakiokuda
0
170
re:Invent2025 セッションレポ ~Spec-driven development with Kiro~
nrinetcom
PRO
2
160
Claude Skillsの テスト業務での活用事例
moritamasami
1
130
"人"が頑張るAI駆動開発
yokomachi
1
670
まだ間に合う! Agentic AI on AWSの現在地をやさしく一挙おさらい
minorun365
19
3.4k
戰略轉變:從建構 AI 代理人到發展可擴展的技能生態系統
appleboy
0
170
SES向け、生成AI時代におけるエンジニアリングとセキュリティ
longbowxxx
0
270
意外と知らない状態遷移テストの世界
nihonbuson
PRO
1
380
Microsoft Agent Frameworkの可観測性
tomokusaba
1
120
Featured
See All Featured
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
140
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
First, design no harm
axbom
PRO
1
1.1k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
Designing Powerful Visuals for Engaging Learning
tmiket
0
190
Making the Leap to Tech Lead
cromwellryan
135
9.7k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
58
41k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Visualization
eitanlees
150
16k
Side Projects
sachag
455
43k
Why Our Code Smells
bkeepers
PRO
340
58k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
0
34
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