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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
komuro-sapporo
February 11, 2017
Technology
0
2.7k
運用事件簿
合同勉強会 in 福岡で発表したスライドです
komuro-sapporo
February 11, 2017
Tweet
Share
More Decks by komuro-sapporo
See All by komuro-sapporo
How To 脆弱性対応
komurosappro
0
770
内容は話せないけどGamedayのススメ
komurosappro
0
560
ゲンバのサービス運用
komurosappro
2
1.4k
大阪勉強会_第5回.pdf
komurosappro
0
6
Introduction of Jooby. DevIO2016
komurosappro
0
1.3k
Other Decks in Technology
See All in Technology
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
230
あたらしい上流工程の形。 0日導入からはじめるAI駆動PM
kumaiu
5
730
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
1k
AI時代、1年目エンジニアの悩み
jin4
1
150
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
1.8k
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
2
800
Tebiki Engineering Team Deck
tebiki
0
23k
【インシデント入門】サイバー攻撃を受けた現場って何してるの?
shumei_ito
0
1.4k
20260129_CB_Kansai
takuyay0ne
1
260
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
41k
レガシー共有バッチ基盤への挑戦 - SREドリブンなリアーキテクチャリングの取り組み
tatsukoni
0
180
Deno・Bunの標準機能やElysiaJSを使ったWebSocketサーバー実装 / ラーメン屋を貸し切ってLT会! IoTLT 2026新年会
you
PRO
0
220
Featured
See All Featured
AI Search: Where Are We & What Can We Do About It?
aleyda
0
6.9k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
270
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
150
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
440
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
290
4 Signs Your Business is Dying
shpigford
187
22k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Scaling GitHub
holman
464
140k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
580
Designing for humans not robots
tammielis
254
26k
The Curious Case for Waylosing
cassininazir
0
230
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. ଞͷࣄ݅ͷ ৄࡉ࠙ձͰ