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
22
まさか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
ユーザーのためなら 『デザイン』 以外にも手を伸ばせる
navitimejapan
PRO
2
750
フツーのIT女子が、 Engineering Managerになるまで
navitimejapan
PRO
3
76
不確実性に打ち勝つOKR戦略/How to manage uncertainty with OKR strategy
navitimejapan
PRO
4
2.8k
アジャイルを小さいままで 組織に広める 二周目 / Agile Transformation in NAVITIME JAPAN iteration 2
navitimejapan
PRO
4
1.1k
変更障害率0%よりも「継続的な学習と実験」を価値とする 〜障害を「起こってはならないもの」としていた組織がDirtの実施に至るまで〜 / DevOps Transformation in NAVITIME JAPAN
navitimejapan
PRO
6
4.6k
こうしてふりかえりは終わってしまった / A Demise of a retrospective
navitimejapan
PRO
42
26k
もーひとつの時間がない症候群 / Yet Another SOT Syndrome
navitimejapan
PRO
1
2k
シーズン2〜スクラムチームのバトンを渡す〜 / Season 2 -pass the button of a scrum team-
navitimejapan
PRO
2
2.8k
チームのパフォーマンスを引き出す、ワクワクするプロダクトゴール、OKR / Waku-waku Product Goal and OKR
navitimejapan
PRO
17
17k
Other Decks in Technology
See All in Technology
どうするコスト最適化のトレードオフ
tetsuyaooooo
1
510
JAWS-UG Bedrock Claude Night
yamahiro
3
570
Azureの基本的な権限管理の勉強会
yhana
0
190
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
2.1k
プロデザ! BY リクルート vol.18_リクルートのリサーチ実践組織「リサーチブーストコミュニティ」
recruitengineers
PRO
3
280
ゼロから始めるVue.jsコミュニティ貢献 / first-vuejs-community-contribution-link-and-motivation
lmi
1
120
開発パフォーマンスを最大化するための開発体制
ham0215
2
310
長期運用プロジェクトでのMySQLからTiDB移行の検証
colopl
2
850
Google Cloud の AI を支える裏側のインフラを垣間見る!
maroon1st
0
340
Azure Container Apps + Bicep 〜 こんな感じで運用しています
kaz29
2
460
Vertex AI を中心に 生成AIのアップデートを共有します
kaz1437
0
300
障害対応をちょっとずつよくしていくための 演習の作りかた
heleeen
0
130
Featured
See All Featured
How GitHub (no longer) Works
holman
304
140k
Being A Developer After 40
akosma
57
580k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
51k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
125
32k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
9
8.3k
Docker and Python
trallard
34
2.7k
Code Reviewing Like a Champion
maltzj
514
39k
A Philosophy of Restraint
colly
197
16k
A designer walks into a library…
pauljervisheath
200
23k
Design by the Numbers
sachag
274
18k
Designing with Data
zakiwarfel
96
4.8k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3k
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