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
運用事件簿
Search
komuro-sapporo
February 11, 2017
Technology
0
2.6k
運用事件簿
合同勉強会 in 福岡で発表したスライドです
komuro-sapporo
February 11, 2017
Tweet
Share
More Decks by komuro-sapporo
See All by komuro-sapporo
How To 脆弱性対応
komurosappro
0
730
内容は話せないけどGamedayのススメ
komurosappro
0
540
ゲンバのサービス運用
komurosappro
2
1.4k
大阪勉強会_第5回.pdf
komurosappro
0
4
Introduction of Jooby. DevIO2016
komurosappro
0
1.3k
Other Decks in Technology
See All in Technology
AWS全冠したので振りかえってみる
tajimon
0
140
新卒3年目の後悔〜機械学習モデルジョブの運用を頑張った話〜
kameitomohiro
0
300
ObsidianをMCP連携させてみる
ttnyt8701
2
120
評価の納得感を2段階高める「構造化フィードバック」
aloerina
1
200
Copilot Agentを普段使いしてわかった、バックエンド開発で使えるTips
ykagano
1
1.2k
開発効率と信頼性を両立する Ubieのプラットフォームエンジニアリング
teru0x1
0
140
DB 醬,嗨!哪泥嘎斯基?
line_developers_tw
PRO
0
220
從四件事帶你見識見識 事件驅動架構設計 (EDA)
line_developers_tw
PRO
0
110
Workflows から Agents へ ~ 生成 AI アプリの成長過程とアプローチ~
belongadmin
3
160
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.6k
CIでのgolangci-lintの実行を約90%削減した話
kazukihayase
0
290
Nonaka Sensei
kawaguti
PRO
4
720
Featured
See All Featured
Code Review Best Practice
trishagee
68
18k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Designing for Performance
lara
609
69k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
Into the Great Unknown - MozCon
thekraken
39
1.8k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
137
34k
How to train your dragon (web standard)
notwaldorf
92
6.1k
BBQ
matthewcrist
89
9.7k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.6k
Transcript
ӡ༻ࣄ݅ ߹ಉษڧձ IN Ԭ KOMURO, Hiraku @com4dc
ࣗݾհ SELF INTRODUCTION ▸ খࣨ ܒ ▸ ϞόΠϧόοΫΤϯυΤϯδχΞʢJava, AWS, ͪΐͬͱऄʣ
▸ ࡛ۄݝग़࡛ۄҭͪɺݱࡏւಓࡳຈࡏॅ ▸ ΫϥεϝιουגࣜձࣾϞόΠϧΞϓϦαʔϏε෦ ▸ ʢࣗশʣํ։ຽ ▸ ΫϥεϝιουSteam෦෦һʢFPSɺTPSʣ
ւಓհ ւಓ͔Βདྷ·ͨ͠ ▸ Ҡಈڑʹͯ͠2000km ▸ ݱࡏւಓʮݫౙظʯݱࡏɺઇ·ͭΓਅͬ࠷த ࣗͷ ຊؾݐ
None
None
None
͜Ε͕(ࠓͷ)ւಓͩʂ
ؓٳ
ӡ༻ͯ͠ΔϓϩδΣ Ϋτʹ͍ͭͯ
ϓϩδΣΫτʹ͍ͭͯ ϓϩδΣΫτ֓ཁ ▸ ઃܭɺ։ൃ͔ΒΠϯϑϥඋɺӡ༻αϙʔτ·ͰΛ୲ ▸ σʔλҠߦର͕300ສϢʔβʔ΄Ͳ ▸ ϐʔΫ࣌ͷΞΫηεೝূαʔόʔʹ͓͍ͯؒ5ɺ6ສΞΫ ηε ▸
ϞόΠϧΞϓϦͷDL100ສఔ ▸ ࣗͷ୲Oauthೝূج൫ͷΧελϜΫϥΠΞϯταʔόʔ
ϓϩδΣΫτʹ͍ͭͯ ϓϩδΣΫτମ੍ ▸ ։ൃϓϩδΣΫτ͕ಉ࣌ฒߦͰ3ͭ ▸ ͦΕͧΕ։ൃ։࢝ظ͕ؒҟͳΔ ▸ ϓϩύʔͱύʔτφʔ͕ʑ͘Β͍ͷׂ߹
։ൃ࣌ͷମ੍
ϓϩδΣΫτʹ͍ͭͯ MICRO SERVICE܈Ͱߏ ϞόΠϧAPI ΧελϜೝূAPI OAUTH2 ೝূج൫ ϞόΠϧ
ϓϩδΣΫτʹ͍ͭͯ ϓϩδΣΫτͷ͓Αͦͷ࣌ؒ࣠ ϞόΠϧAPI։ൃ ೝূAPI։ൃ ཧCMS։ൃ 20161݄͘Β͍ 20168݄͘Β͍ ϞόΠϧAPIӡ༻
։ൃޙͷӡ༻ϑΣʔζ
ϓϩδΣΫτʹ͍ͭͯ ΄ͱΜͲશ͕ͯҟͳΔϓϩδΣΫτ܈ ϞόΠϧ ೝূ CMS AWS։ൃ༻ ൿີ伴 伴1 伴2 伴2
ϑϨʔϜ ϫʔΫ Play for Scala SpringBoot Ruby on Rails σϓϩΠํ๏ Golden AMI CodeDeploy CodeDeploy ݴޠ Scala Java8 Ruby
ϓϩδΣΫτʹ͍ͭͯ ϓϩδΣΫτΛߏ͢ΔେྔͷαʔϏε
ଟ͗͢ͳ͍ɾɾɾʁ
ϓϩδΣΫτʹ͍ͭͯ ։ൃ͔࣌Βͷେ෯ͳମ੍มߋ ▸ ScalaϓϩάϥϚʔ͕3໊ˠ0໊ ▸ JavaͱRubyΤϯδχΞ͕ࣣసീ͠ͳ͕ΒɺPlay ScalaΛอक ▸ AWSαʔϏεͷো͋ΔͨΊɺJavaɺRubyΤϯδχΞ͕͜ ΕΒͷରԠ݉
▸ ݁Ռ ▸ AWSɺJavaɺScalaɺʢPythonʣͱ͍͏εΩϧηοτ͕ര
None
ϓϩδΣΫτʹ͍ͭͯ ӡ༻ॳظͷঢ়گ ▸ ιʔείʔυBacklogͷWikiΛαϧϕʔδͯ͠෦ߏΛ ཧղ͢Δʑʢ͢Ͱʹ։ൃϝϯόʔ͕͍ͳ͍ͨΊʣ ▸ ҟͳΔDeployπʔϧڥΛɺͲͷΑ͏ʹΓସ͑Δ͔Λ ࡧʢखॱ͕େ෯ʹҟͳΔͨΊɺΦϖϨʔγϣϯϛε͕ൃੜ ͦ͠͏ʣ ▸
ো࣌ͷϩάௐࠪͷखॱΛൿͷखॱΛେࢸٸ໌จԽ͢Δ ʢ͜͜Ͱϩάͷൃ֮͢Δɻ͜Ε·ͨผͷʣ
ࣄ݅
ࣄ݅ ͦͦ͜͜ͷࣄ݅Ұཡ ▸ CASE1. ϞόΠϧΞϓϦϦϦʔεϛεʹΑΔεςʔδϯάڥࢮࣄނ ▸ CASE2. DynamoDB StreamsࢮʹΑΓDBಉظࣦഊࣄ݅ ▸
ʢ୭ؾ͔ͮͳ͔ͬͨͷͰ΄ͱΜͲີࣨࡴਓঢ়ଶɻূڌͳ͠ʣ ▸ CASE3. fluentd ͷϓϥάΠϯʹΑΔϩάফࣦࣄ݅ɻࠈͷαϧ ϕʔδ࡞ۀʢ·ͩͪΐͬͱ͚ͩଓ͍ͯΔΜ͡ΌΑʣ ▸ CASE4. EC2ΨνϟʹΑΔύϑΥʔϚϯεԼࣄނ ▸ ʢ௨ৗͷ1/10ҎԼɻ͞ΕͲϔϧενΣοΫมԽͳ͠ʣ
ࣄ݅ ࣄ݅ൈਮ ▸ CASE1. ϞόΠϧΞϓϦϦϦʔεϛεʹΑΔεςʔδϯάڥࢮࣄނ ▸ CASE2. DynamoDB StreamsࢮʹΑΓDBಉظࣦഊࣄ݅ ▸
ʢ୭ؾ͔ͮͳ͔ͬͨͷͰີࣨࡴਓʣ ▸ CASE3. fluentd ͷϓϥάΠϯʹΑΔϩάফࣦࣄ݅ɻࠈͷαϧ ϕʔδ࡞ۀʢ·ͩͪΐͬͱ͚ͩଓ͍ͯΔΜ͡ΌΑʣ ▸ CASE4. EC2ΨνϟʹΑΔύϑΥʔϚϯεԼࣄނ ▸ ʢ௨ৗͷ1/10ҎԼɻ͞ΕͲϔϧενΣοΫϔϧγʔʣ ॾࣄʹΑΓࠓճ͜ΕҰ
CASE.1
εςʔδϯάڥ͚ͨϞόΠ ϧΞϓϦΛετΞʹϦϦʔεͪ͠Ό ͍·ͨ͠
None
ࣄ݅̍ ঢ়گΛཧ ▸ ετΞਃΛ͔͚ͯެ։ͨ͠ΞϓϦέʔγϣϯͷAPIଓઌ ͕ɺεςʔδϯάڥΛ͍͍ͯͨͱ͍͏ใࠂ ▸ ͢ͰʹඦϢʔβʔ͕DLࡁΈ ▸ AndroidΞϓϦͷΈ ▸
͜ΕʹΑΓ։ൃεςʔδϯάαʔόʔ͕࣮࣭ࢮʢຊ൪ͷΞ ϓϦ͕ࢀর͍ͯ͠ΔՄೳੑ͕͋ΔͨΊʣ
None
ͭ·Γ
ຊདྷ͜͏͋Δ͖ڥ͕
͜͏ͳͬͨ
None
ࣄ݅̍ ଈ࣌ۓٸରԠ ▸ ޡͬͨΞϓϦέʔγϣϯ͔ΒͷΞΫ ηεΛःஅ ▸ ڧ੍ΞοϓσʔτઃఆΛಋೖ ʢ403ΤϥʔͰฦ٫ʣ ▸ Ϧιʔεʹؔͯ͠શͯຊ൪ڥͱ
ಉͷͷ͔ۭσʔλʹͯ͠ɺΤο δαʔόʔͷΩϟογϡΛશͯΫϦ Ξ
ࣄ݅̍ ۓٸରԠͷՌ ▸ ޡͬͨΞϓϦέʔγϣϯ͔ΒͷΞΫηεΛःஅ ▸ ݁Ռతʹ͜ͷରԠෆཁɻΞϓϦͰอ͍࣋ͯ͠ΔΞΫηετʔΫϯ IDɺϓϩμΫγϣϯڥ͚Ͱ͋Γɺεςʔδϯάڥͱಥ͖߹Θ ͤΔͱવଘࡏ͠ͳ͍ͨΊɺແޮͳΞΫηετʔΫϯͱͯ͠ॲཧ͞Ε Δ ▸
Ϧιʔεʹؔͯ͠શͯຊ൪ڥͱಉͷͷ͔ۭσʔλʹ ▸ ޡͬͨΞϓϦ͔Βݟͯ৽ใͳͲ։ൃใ͕ग़͍ͯͳ͍͜ͱ͕ ֬ೝͰ͖ͨɻ͜͜ͷϦιʔεϩάΠϯ͍ͯ͠ͳͯ͘ݟΕΔใͰ ͋ΔͨΊɺ͜ͷରԠඞਢͩͬͨ
ରԠࡦ1 εςʔδϯάαʔόʔ࠶ߏங
ରԠࡦ1 ڥͷશͯΛෳ͢Δ
શͯͷڥΛෳ͢Δ ϝϦοτ ▸ طଘͷεςʔδϯάڥΛอશͰ͖Δ ▸ Πϯϑϥڥ΄ͱΜͲCloudFormationͷςϯϓϨʔτͰ ߏங͞Ε͍ͯΔͨΊɺ৽ͨͳڥߏஙଈ࠲ʹՄೳ
શͯͷڥΛෳ͢Δ σϝϦοτ ▸ ڥͷશͯΛෳ͢ΔͨΊAWSͷར༻අ͕୯७ʹ2ഒͱͳΔ ▸ DeployεΫϦϓτπʔϧͳͲमਖ਼ͷӨڹ͕ग़ͯ͠·͏
ରԠࡦ2 εςʔδϯάαʔόʔ࠶ߏங
ରԠࡦ2 ୀආαʔόʔΛߏங͢Δ
ୀආαʔόʔΛߏங ϝϦοτ ▸ શͯͷϦιʔεΛෳ͢Δͷʹରͯ͠ѹతʹඅ༻ΛѹॖͰ ͖Δ ▸ DeployπʔϧͳͲͷӨڹ͕࠷খݶͱͳΓɺӨڹൣғΛۃ ΊͯݶఆͰ͖Δ
ୀආαʔόʔΛߏங σϝϦοτ ▸ ୀආαʔόʔͷߏங͕ൃੜ͢Δ ▸ Route53ͷมߋͳͲൺֱతखॱ͕ෳࡶʹͳΔ ▸ CloudFrontͷมߋͱ৽ن࡞͕ೖΔͨΊ͕͔͔࣌ؒΔ ʢฒྻԽͰ͖ͳ͍ʣ ▸
nginxͷConfigurationΛAnsibleͰߏ͢ΔͨΊͷௐ͕ࠪඞ ཁʹͳΔ
ରԠࡦ3 εςʔδϯάαʔόʔ࠶ߏங
ରԠࡦ3 ୀආαʔόʔΛߏங͢Δʢվળʣ
ୀආαʔόʔΛߏஙʢMODIFIEDʣ ϝϦοτ ▸ શͯͷϦιʔεΛෳ͢Δͷʹରͯ͠ѹతʹඅ༻ΛѹॖͰ ͖Δ ▸ DeployπʔϧͳͲͷӨڹ͕࠷খݶͱͳΓɺӨڹൣғΛۃ ΊͯݶఆͰ͖Δ ▸ ʢNewʂʣCloudFrontͷઃఆมߋͷӨڹ͕ޡͬͯϦϦʔε
͞ΕͨΞϓϦͷϢʔβʔٴ͠ͳ͍ʂ
ୀආαʔόʔΛߏஙʢMODIFIEDʣ σϝϦοτ ▸ ୀආαʔόʔͷߏங͕ൃੜ͢Δ ▸ Route53ͷมߋͳͲൺֱతखॱ͕ෳࡶʹͳΔ ▸ ʢDeletedʂʣCloudFrontͷ৽ن࡞͞ΕΔͨΊɺ͕͔࣌ؒ ͔ͬͯ͠·͏ ▸
nginxͷConfigurationΛAnsibleͰߏ͢ΔͨΊͷௐ͕ࠪඞ ཁʹͳΔ
࠷ऴతͳखॱ εςʔδϯάαʔόʔ࠶ߏங
࠷ऴతͳ࠶ߏஙखॱ ରԠࡦ3Λ࠾༻ ▸ ੩తϨεϙϯεΛฦ٫͢ΔnginxΛखಈͰߏஙʢEC2x2ʣ ▸ ୀආ༻ͷ੩తϦιʔεΛஔ͢ΔS3όέοτΛ CloudFormationͰ෦ߏங ▸ طଘͷCloudFrontͷCNAMEsʹ৽͍͠εςʔδϯάڥͷ υϝΠϯʢstg2.hogeʣΛઃఆ
▸ Route53ͷ໊લղܾͷઃఆΛมߋ
࠷ऴతͳ࠶ߏஙखॱ ࠷ऴҊ
·ͱΊ
·ͱΊ ࣄ݅ࢥ͍ΑΒͳ͍ͱ͜Ζ͔Β༙͍ͯ͘Δ ▸ ΞϓϦέʔγϣϯΤϯδχΞͱݴ͑ɺߏΛཧղ͍ͯ͠ͳ ͍ͱӨڹൣғΛίϯτϩʔϧ͢ΔରԠ͕Ͱ͖ͳ͍ ▸ ӡ༻ʹܞΘͬͨ࣌Ͱɺࣗͷൣғ֎ͷΦʔόʔϥο ϓͯ͠αϙʔτɾֶश͍͕ͯ࢟͘͠ඞཁ ▸ ͨͩɺτϥϒϧ͕ى͖ΔͱΈ͕ͦϑϧճసͯͪ͠ΐͬͱς
ϯγϣϯ্͕͕Δͷࣄ࣮Ͱ͋ΔΘ͚Ͱʢ͋·Γྑ͘ͳ͍ ▸ ӡ༻৻ॏʹʂ࣌ʹେʹʂ
FIN. ଞͷࣄ݅ͷ ৄࡉ࠙ձͰ