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.5k
運用事件簿
合同勉強会 in 福岡で発表したスライドです
komuro-sapporo
February 11, 2017
Tweet
Share
More Decks by komuro-sapporo
See All by komuro-sapporo
How To 脆弱性対応
komurosappro
0
690
内容は話せないけどGamedayのススメ
komurosappro
0
530
ゲンバのサービス運用
komurosappro
2
1.3k
大阪勉強会_第5回.pdf
komurosappro
0
4
Introduction of Jooby. DevIO2016
komurosappro
0
1.3k
Other Decks in Technology
See All in Technology
怖くない!ゼロから始めるPHPソースコードコンパイル入門
colopl
0
230
OCI技術資料 : ファイル・ストレージ 概要
ocise
3
12k
スタートアップで取り組んでいるAzureとMicrosoft 365のセキュリティ対策/How to Improve Azure and Microsoft 365 Security at Startup
yuj1osm
0
280
TSKaigi 2024 の登壇から広がったコミュニティ活動について
tsukuha
0
180
【令和最新版】ロボットシミュレータ Genesis x ROS 2で始める快適AIロボット開発
hakuturu583
2
1.4k
OPENLOGI Company Profile
hr01
0
57k
AWS環境におけるランサムウェア攻撃対策の設計
nrinetcom
PRO
1
320
Alignment and Autonomy in Cybozu - 300人の開発組織でアラインメントと自律性を両立させるアジャイルな組織運営 / RSGT2025
ama_ch
1
1k
ソフトウェア開発における「パーフェクトな意思決定」/Perfect Decision-Making in Software Development
yayoi_dd
2
2.6k
[トレノケ雲の会 mod.13] 3回目のre:Inventで気づいたこと -CloudOperationsを添えて-
shintaro_fukatsu
0
120
Qiita埋め込み用スライド
naoki_0531
0
5.5k
生成AIによるテスト設計支援プロセスの構築とプロセス内のボトルネック解消の取り組み / 20241220 Suguru Ishii
shift_evolve
0
160
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
230
52k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
1
150
Thoughts on Productivity
jonyablonski
68
4.4k
Writing Fast Ruby
sferik
628
61k
Music & Morning Musume
bryan
46
6.3k
Docker and Python
trallard
43
3.2k
A Modern Web Designer's Workflow
chriscoyier
693
190k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
3
330
How to Think Like a Performance Engineer
csswizardry
22
1.3k
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. ଞͷࣄ݅ͷ ৄࡉ࠙ձͰ