Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
Webシステムアーキテクチャの地図を描く構想 / A map of web systems architecture
Yuuki Tsubouchi (yuuk1)
September 28, 2019
Research
2
16k
Webシステムアーキテクチャの地図を描く構想 / A map of web systems architecture
第5回WebSysmetArchitecture(WSA)研究会
https://websystemarchitecture.hatenablog.jp/entry/2019/07/30/172650
Yuuki Tsubouchi (yuuk1)
September 28, 2019
Tweet
Share
More Decks by Yuuki Tsubouchi (yuuk1)
See All by Yuuki Tsubouchi (yuuk1)
yuukit
4
1.7k
yuukit
1
850
yuukit
0
80
yuukit
0
1.3k
yuukit
0
920
yuukit
0
320
yuukit
5
830
yuukit
0
120
yuukit
0
54
Other Decks in Research
See All in Research
ykaneko1992
1
180
yamathcy
0
350
olmdrd
PRO
0
110
noteinc
2
53k
waptech
5
680
tomo_otamot
0
310
kyoun
10
1.7k
tathi
4
1.8k
yoshipon
0
150
nzw0301
2
340
kayceesrk
2
4.1k
umepon
0
190
Featured
See All Featured
malarkey
193
8.7k
eitanlees
116
10k
chriscoyier
146
20k
thoeni
4
670
reverentgeek
28
2.1k
holman
462
280k
imathis
479
150k
pedronauck
652
110k
frogandcode
129
20k
yeseniaperezcruz
302
31k
zakiwarfel
88
3.4k
skipperchong
8
800
Transcript
͘͞ΒΠϯλʔωοτ גࣜձࣾ (C) Copyright 1996-2019 SAKURA internet Inc ͘͞ΒΠϯλʔωοτ ݚڀॴ
WebγεςϜΞʔΩςΫνϟͷਤ Λඳ͘ߏ 2019/09/28 ݚڀһ ௶ ༎थ id:y_uuki / @yuuk1t ୈ5ճWebSystemArchitectureݚڀձ
WSAݚڀձͷతͷ1ͭʹ Ξϓϩʔν͢Δ https://websystemarchitecture.hatenablog.jp/purpose WebαʔϏεʹඞཁͱͳΔใ௨৴ج൫γεςϜͷମܥԽ WebαʔϏεʹඞཁͱͳΔใ௨৴ج൫γεςϜʹ͍ͭͯɼݚڀऀɼٕज़ऀɼֶੜ ΛΘͣɼ͘ݟަΛߦ͍ɼਂٞ͘͢Δ͜ͱͰମܥԽΛࢦ͢ɽ ·ͨɼମܥԽΛ௨ͯ࣍͡ੈͷWebαʔϏεج൫ͷ͋Γํʹ͍ͭͯͷఏݴΛߦ͏ɽ
3 1. ͡Ίʹ 2. ؔ࿈ମܥ 3. ఏҊମܥ 4. ·ͱΊ ࣍
1. ͡Ίʹ
5 ɾWebαʔϏεͷγεςϜʹର͢ΔཁٻɼεέʔϥϏϦςΟɼߴՄ༻ ੑɼߴͳԠੑೳɼظؒͷӡ༻ͳͲଟذʹΘͨΔ ɾଟ༷ͳཁٻʹରͯ͠ଟ༷ͳࣝͱٕज़͕ඞཁͱͳΔ ɾOSσʔλϕʔεɼωοτϫʔΫͳͲͷൣғͷجૅࣝ ɾϛυϧΣΞࣗಈԽπʔϧΛར༻͢ΔͨΊͷԠ༻ࣝ ɾࣝΛΈ߹Θͤ1ͭͷγεςϜΛߏங͠ɼӡ༻͢ΔͨΊͷٕज़ എܠ
6 1. ैདྷͷใֶͷڭՊॻɼ౷తʹྨ͞Εͨʹ͓͚Δجૅ ࣝͷΈ ɾجૅࣝΛͲͷΑ͏ʹWebαʔϏε։ൃʹద༻͢Δͷ͔Θ͔Β ͳ͍ 2. WebαʔϏε։ൃͱӡ༻ͷݱͰɼະܦݧͰཧղͰ͖ΔΑ͏ͳ ܗͰݱͷܦݧ͕ݴޠԽ͞Ε͍ͯͳ͍ ҙࣝ
ใֶͷجૅࣝͱɼWebγεςϜͷԠ༻ࣝΛ Έ߹Θͤͨɼੜ͖ͨࣝͷਤΛͭ͘Δ͜ͱ͕ॏཁ
7 ྨࣅͷҙࣝʹର͢ΔΞϓϩʔν ίʔυͱͯ͠ΠϯϑϥετϥΫνϟΛཧ ͢Δͱ͍͏ߟ͑ํɺैདྷͷΠϯϑϥετ ϥΫνϟཧͱେ͖͘ҟͳΔɻ ࢲɺ͜ͷసΛͲͷΑ͏ʹਐΊͨΒΑ͍ ͔͕Θ͔Βͣۤ࿑͍ͯ͠ΔνʔϜΛͨ͘͞ Μݟ͖ͯͨɻ ͔͠͠ɺ͜ΕΒͷπʔϧΛޮՌతʹ͏ͨ ΊͷΞΠσΞɺύλʔϯɺϓϥΫςΟε
ɺΧϯϑΝϨϯεͷߨԋɺϒϩάϙε τɺݸผͷจʹࢄΒ͍ͬͯΔɻ
8 طଘͷମܥͱͦͷ՝ 1. Ͳͷମܥ͕WebγεςϜΞʔΩςΫνϟʹඞཁ͔͕ࣗ໌Ͱͳ͍ 2. طଘͷମܥಉ࢜ͷؔ࿈ੑ͕ࣗ໌Ͱͳ͍ ɾجૅࣝͱԠ༻ࣝΛ͋Θͤͨମܥ͍͔ͭ͘ଘࡏ͢Δ ɾWebγεςϜΞʔΩςΫνϟʹඞཁͳٕज़ཁૉΛཏ͢ΔͨΊʹɼෳ ͷମܥΛΈ߹ΘͤΔඞཁ͕͋Δ
9 ݚڀత ɾWebγεςϜΞʔΩςΫνϟͷॳֶऀ͕ɼܦݧʹΑΔؼೲతֶशʹ Ճ͑ͯɼମܥ͔Βͷԋ៷తֶश͕ՄೳͱͳΔ ɾWebγεςϜΞʔΩςΫνϟͰ৽͍ٕ͠ज़Λݚڀ͢Δ߹ʹɼ ମܥ͔ΒෳͷΞΠσΞͷΈ߹ΘͤΛൃݟՄೳͱͳΔ
10 1. ਤͷத৺ΛͱΔ => ࠓճyuukiͷத৺Ͱ͋ΔSREΛબ 2. طଘͷମܥ(جૅࣝମܥͱԠ༻ࣝମܥ)Λਤʹඳ͘ 3. ਤͷத৺͔Βͷؔ࿈ੑ͕ෆ໌Ͱ͋ͬͨΓۭനͷྖΛݟ͚ͭͯ ͦΕΒΛ໌Β͔ʹ͢Δ
ਤΛͭ͘ΔͱͲ͏͍͏͜ͱ͔ ɾγεςϜ༷ʑͳͷࣝΛΈ߹ΘͤΔͨΊɺ ʓʓ͕ ೖΔ͔ೖΒͳ͍͔ͱ͍ͬͨείʔϓΛઃఆ͢ΔٞʹͳΓ͕ͪ ɾείʔϓΛઃఆ͢Δͱ͍͏ΑΓɺطଘͷਤͱͭͳ͗߹Θͤͯɺ ͲͷํʹͲΕ͚ͩา͘ͱԿʹͨͲΓண͔͕͔͘ΕΑ͍
2. ؔ࿈ମܥ
Betsy Beyer et al.ฤ, ۄཽ࢘ ༁, ᖒాஉ,et al. ༁, "SRE
αΠτϦϥΠΞϏϦςΟΤϯδχΞϦϯάʕʕ Googleͷ৴པੑΛࢧ͑ΔΤϯδχΞϦϯάνʔϜ”, ΦϥΠϦʔɾδϟύϯ, 2017.
13 SRE ɾ৴པੑ(Reliability)͕ͦ͋͜ΒΏΔϓϩμΫτͷجຊతͳػೳͰ͋Δ ͱߟ͑ɼ৴པੑΛ࣠ʹ͜Ε·Ͱͷӡ༻ٕज़Λ1ͭͷͱཱͯ֬͠ ɾΤϥʔΛڐ༰͠ɼ৴པੑΛ੍ޚ͢Δ͜ͱͰมߋΛ࠷େԽ͢Δ ɾମܥͱͯ͠ͷߩݙɼͦΕ·ͰͷWebγεςϜӡ༻ͷΒΒͩͬ ͨཁૉٕज़͕৴པੑͷ੍ޚʹͭͳ͕Δ͜ͱΛࣔͨ͜͠ͱ
14 ৴པੑͷఆٛͱܭଌ ɾ“γεςϜ͕ٻΊΒΕΔػೳΛɼఆΊΒΕͨ݅ͷԼͰɼఆΊΒΕͨ ظؒʹΘͨΓɼোΛى͜͢͜ͱͳ࣮͘ߦ͢Δ֬”[26] ɾ৴པੑΛఆྔతʹSLO(αʔϏεϨϕϧඪ)ͱͯ͠ઃఆ͢Δ ɾSLOྫ) ϦΫΤετͷԠ࣌ؒͷ95%ile͕300msҎԼͷঢ়ଶ͕࢛ ظதͷ99.8%ͷظؒҡ࣋͞Ε͍ͯΔ͜ͱ ɾSLOΛաୡͤͣʹϐολϦୡ͢Δ͜ͱΛࢦ͢ [26]
Patrick O'Connor, Andre Kleyner, Practical Reliability Engineering, Wiley, 2011.
15 SREͷൣғ ɾϞχλϦϯά ɾΠϯγσϯτରԠ ɾมߋཧ ɾΩϟύγςΟϓϥϯχϯά ɾϓϩϏδϣχϯά ɾޮͱύϑΥʔϚϯε
16 ৴པੑͷ֊ ɾ৴པੑͷ֊ɼ৴པੑΛ੍ޚ͢ΔͨΊͷج൫ ɾϞχλϦϯά͕ͳ͚Εɼ৴པੑͷܭଌ͕ͦͦ Ͱ͖ͳ͍ [1] Betsy Beyer et. al.ฤ,
"SRE αΠτϦϥΠΞϏϦςΟΤϯδχΞϦϯά", ΦϥΠϦʔδϟύϯ, 2017. ਤIII -1αʔϏεͷ৴པੑͷ֊ ɾΠϯγσϯτରԠମ੍͕ͳ͚Εɼ৴པੑ ͕ଛͳΘΕͯճ෮Ͱ͖ͳ͍ ɾϙετϞʔςϜ͕ͳ͚Εಉ͡Πϯγσϯ τΛ܁Γฦ͠ɼ৴པੑ͕ଛͳΘΕ͘͢ͳ Δ ɾ…
Brendan Gregg ஶ, ༃ߛ ༁, ඌߴ߂ ༁, “ৄղ γεςϜɾύϑΥʔϚϯε”, ΦϥΠϦʔɾδϟύϯ,
2017.
18 ৄղγεςϜɾύϑΥʔϚϯε ɾରͱͳΔγεςϜɼWebγεςϜͷ߹ࢄγεςϜ ɾWebγεςϜʹ͓͚ΔࢄγεςϜɼҰൠʹ୯Ұϗετ্ͷϓϩ ηεΛجຊཁૉͱͯ͠ߏ͞ΕΔ ɾ୯Ұϗετ্ͷߏΛཧղ͢ΔʹɼOSͷݪཧͱOS্Ͱಈ࡞͢Δ ΞϓϦέʔγϣϯͷγεςϜϞσϧΛཧղ͢Δඞཁ͕͋Δ ɾॻ੶ʮৄղγεςϜɾύϑΥʔϚϯεʯͰɼOS͓ΑͼOSͷίϯ ςΩετʹ͓͚ΔΞϓϦέʔγϣϯͷੑೳϞσϧ͕ମܥԽ͞Ε͍ͯ Δ
19 ৄղγεςϜɾύϑΥʔϚϯε
Martin Kleppmannஶ, ੪౻ଠ ༁, ۄཽ࢘ ༁, “σʔλࢦΞϓϦέʔγϣϯσβΠϯ ――৴པੑɺ֦ுੑɺอकੑͷߴ͍ࢄγεςϜઃܭͷݪཧ”, ΦϥΠϦʔɾδϟύϯ, 2019.
21 σʔλࢦΞϓϦέʔγϣϯσβΠϯ ɾιʔγϟϧωοτϫʔΫIoTΞϓϦέʔγϣϯͰɼଟͷར༻ऀ σόΠε͕ੜ͢ΔେྔͷσʔλΛѻ͏ ɾࢄγεςϜʹ͓͚Δॏཁͳ 3 ͭͷ՝ʹয ɾ৴པੑɼεέʔϥϏϦςΟɼϝϯςφϯεੑ ɾσʔλࢦͷࢄγεςϜΛɺετϨʔδΤϯδϯɺσʔλΛࢄ ͢Δͱ͖ͷஔख๏ɺࢄͨ͠σʔλͷҰ؏ੑͷ୲อख๏ͳͲͷ؍
ͰମܥԽ͍ͯ͠Δ
Kief Morris ஶ, ٶԼ߶ี ༁ɺඌߴ߂ ༁, “Infrastructure as Code ――Ϋϥυʹ͓͚ΔαʔόཧͷݪଇͱϓϥΫςΟε”,
ΦϥΠϦʔɾδϟύϯ 2017.
23 Infrastructure As Codeπʔϧͷྨ Dynamic Infrastructure Platform Dynamic Infrastructure Platform
Dynamic Infrastructure Platform Infrastructure Definition Tool Server Configuration Tool Infrastructure Service ɾInfrastructure As CodeɺιϑτΣΞ։ൃͷ࣮ફΛITΠϯϑϥ ετϥΫνϟͷࣗಈԽʹ׆͔͢Ξϓϩʔν αʔόͳͲͷجຊϦιʔεͷཧ IaaSͳͲ Ϧιʔεͷઃఆཧ TerraformͳͲ αʔόͷࡉ෦ͷઃఆཧ ChefɼAnsibleͳͲ ཧࢧԉπʔϧαʔϏε ϞχλϦϯάɼσϓϩΠͳͲ
24 ؔ࿈ମܥͷ՝ ɾ͜ΕΒͷମܥΛͯ͋͢ΘͤΔͱɼ͍ͣΕWebγεςϜΛߏ͢ ΔͨΊʹඞཁͳࣝͷଟ͘ΛཏͰ͖Δ ɾ͔͠͠ɼ͜ͷମܥΛΈ߹ΘͤΔख๏ʹɼ࣍ͷ2ͭͷ՝͕͋Δ ɾͲͷମܥ͕ඞཁ͔ΛֶशऀࣗྗͰൃݟ͢Δඞཁ͕͋Δ ɾ֤ମܥಠཱͯ͠ߏ͞Ε͍ͯΔͨΊɼମܥಉ࢜ͷؔ࿈ੑΛֶशऀ ͕ࣗྗͰݟग़͢ඞཁ͕͋Δ ɾମܥͷҰ෦͕ଞͷମܥͷҰ෦ͱॏෳ͢Δ͜ͱ͕͋Δ ɾInfrastructure
ServiceͷϞχλϦϯάͱSREͷϞχλϦϯάͳͲ
3. ఏҊମܥ
26 1. ৄղγεςϜύϑΥʔϚϯε => ୯Ұϗετ্ͷମܥ 2. σʔλࢦΞϓϦέʔγϣϯσβΠϯ => ࢄγεςϜͷମܥ 3.
Infrastructure As Code => ΞϓϦέʔγϣϯ࣮ߦڥͷମܥ 4. SRE => ৴པੑ੍ޚͷମܥ SREΛ࣠ʹطଘମܥΛ·ͱΊΔ SREɼ৴པੑΛ੍ޚ͠ɼมߋΛ࠷େԽ͢Δͱ͍͏తΛ ༩͑ͯ͘ΕΔ
27 1. ΞϓϦέʔγϣϯͷ࣮ߦڥͷߏख๏ 2. ୯Ұϗετ্ͷΞϓϦέʔγϣϯͷߏख๏ 3. ࢄγεςϜͱͯ͠ͷΞϓϦέʔγϣϯͷߏख๏ 4. ߏ͞ΕͨΞϓϦέʔγϣϯͷ৴པੑ੍ޚ ఏҊ͢Δମܥͷେ߲
৴པੑΛ੍ޚ͠ɼมߋΛ࠷େԽ͢Δ͜ͱΛతͱͯ͠ɼ γεςϜͷߏख๏Λ࣍ͷ1~4ʹྨ͢Δ
28 ྨಉ࢜ͷؔੑ ৴པੑ੍ޚ ࣮ߦڥͷߏ ୯Ұϗετ্ͷ ΞϓϦέʔγϣϯߏ ࢄγεςϜ ΞϓϦέʔγϣϯߏ αʔόɼωοτϫʔΫڥΛ ͍͔ʹߏ͢Δ͔
ߴ࡞ɾมߋ εέʔϥϏϦςΟ OS্ͷΞϓϦέʔγϣϯ ʹ͍͔ʹޮతʹ ϦιʔεΛར༻ͤ͞Δ͔ ϞχλϦϯά ࣮ߦޮ ϞχλϦϯά εέʔϥϏϦςΟ ߴՄ༻ੑ ࢄϗετ্Ͱ͍͔ʹ ΞϓϦέʔγϣϯΛ ߏ͢Δ͔
29 ৴པੑ੍ޚ ࣮ߦڥͷߏ ୯Ұϗετ্ͷ ΞϓϦέʔγϣϯߏ ࢄγεςϜ ΞϓϦέʔγϣϯߏ WSAݚ#5ͷ֤ݚڀΛద༻ matsumotory “ίϯςφ࣮ߦج൫"
hirolovesbeer “ࢹγεςϜ” k1Low “ҟৗՕॴಛఆख๏” monochromegane “Kaburaya” osako_ricc “ॲཧܥੑೳධՁ” zacky1972 “Pelemay”
30 ৫จԽͱͷؔ࿈ੑ ৴པੑ੍ޚ ࣮ߦڥͷߏ ୯Ұϗετ্ͷ ΞϓϦέʔγϣϯߏ ࢄγεςϜ ΞϓϦέʔγϣϯߏ DevOps ίϥϘϨʔγϣϯ
ΞϑΟχςΟ πʔϧ εέʔϦϯά ΠϯγσϯτରԠ ϙετϞʔςϜ ϚΠΫϩαʔϏε
4. ·ͱΊ
32 ·ͱΊ ɾWebγεςϜΞʔΩςΫνϟʹ͍ͭͯɼମܥ͔Βͷԋ៷తֶशͱΞΠ σΞͷΈ߹ΘͤͷଅਐΛతͱ͢Δ ɾఏҊମܥɼ৴པੑΛ੍ޚ͠ɼมߋΛ࠷େԽ͢Δ͜ͱΛతͱ͠ ͯɼ4ͭͷྨΛఏҊ͍ͯ͠Δ
33 ࠓޙͷ՝ ɾఏҊ͢ΔମܥΛར༻ͨ͠ͱ͖ʹɼֶशՄೳͳൣғΛ໌Β͔ʹ͢Δ ɾ։ൃ͢ΔγεςϜ͕ߴԽ͢Ε͢Δ΄Ͳɼඞཁͳࣝ͘·ͨ ਂ͘ͳΓɼ୯ҰͷମܥͰΧόʔ͢Δ͜ͱ͘͠ͳΔ ɾWebγεςϜΞʔΩςΫνϟͷͷڥքΛ໌Β͔ʹ͢Δ ɾྫ͑ɼσʔλϕʔεͷεΩʔϚઃܭɼ࣮ߦޮੑͱϏδωεϩ δοΫͷઃܭͷ྆ऀʹؔΘΔ ɾϑϩϯτΤϯυͱόοΫΤϯυͷ۠ผͱؔ࿈ੑΛ໌Β͔ʹ͢Δ ɾΧϧνϟʔ৫ମܥͱͷؔ࿈ੑΛ໌Β͔ʹ͢Δ