Webシステムアーキテクチャの地図を描く構想 / A map of web systems architecture
by
Yuuki Tsubouchi (yuuk1)
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
͘͞ΒΠϯλʔωοτ גࣜձࣾ (C) Copyright 1996-2019 SAKURA internet Inc ͘͞ΒΠϯλʔωοτ ݚڀॴ WebγεςϜΞʔΩςΫνϟͷਤ Λඳ͘ߏ 2019/09/28 ݚڀһ ௶ ༎थ id:y_uuki / @yuuk1t ୈ5ճWebSystemArchitectureݚڀձ
Slide 2
Slide 2 text
WSAݚڀձͷతͷ1ͭʹ Ξϓϩʔν͢Δ https://websystemarchitecture.hatenablog.jp/purpose WebαʔϏεʹඞཁͱͳΔใ௨৴ج൫γεςϜͷମܥԽ WebαʔϏεʹඞཁͱͳΔใ௨৴ج൫γεςϜʹ͍ͭͯɼݚڀऀɼٕज़ऀɼֶੜ ΛΘͣɼ͘ݟަΛߦ͍ɼਂٞ͘͢Δ͜ͱͰମܥԽΛࢦ͢ɽ ·ͨɼମܥԽΛ௨ͯ࣍͡ੈͷWebαʔϏεج൫ͷ͋Γํʹ͍ͭͯͷఏݴΛߦ͏ɽ
Slide 3
Slide 3 text
3 1. ͡Ίʹ 2. ؔ࿈ମܥ 3. ఏҊମܥ 4. ·ͱΊ ࣍
Slide 4
Slide 4 text
1. ͡Ίʹ
Slide 5
Slide 5 text
5 ɾWebαʔϏεͷγεςϜʹର͢ΔཁٻɼεέʔϥϏϦςΟɼߴՄ༻ ੑɼߴͳԠੑೳɼظؒͷӡ༻ͳͲଟذʹΘͨΔ ɾଟ༷ͳཁٻʹରͯ͠ଟ༷ͳࣝͱٕज़͕ඞཁͱͳΔ ɾOSσʔλϕʔεɼωοτϫʔΫͳͲͷൣғͷجૅࣝ ɾϛυϧΣΞࣗಈԽπʔϧΛར༻͢ΔͨΊͷԠ༻ࣝ ɾࣝΛΈ߹Θͤ1ͭͷγεςϜΛߏங͠ɼӡ༻͢ΔͨΊͷٕज़ എܠ
Slide 6
Slide 6 text
6 1. ैདྷͷใֶͷڭՊॻɼ౷తʹྨ͞Εͨʹ͓͚Δجૅ ࣝͷΈ ɾجૅࣝΛͲͷΑ͏ʹWebαʔϏε։ൃʹద༻͢Δͷ͔Θ͔Β ͳ͍ 2. WebαʔϏε։ൃͱӡ༻ͷݱͰɼະܦݧͰཧղͰ͖ΔΑ͏ͳ ܗͰݱͷܦݧ͕ݴޠԽ͞Ε͍ͯͳ͍ ҙࣝ ใֶͷجૅࣝͱɼWebγεςϜͷԠ༻ࣝΛ Έ߹Θͤͨɼੜ͖ͨࣝͷਤΛͭ͘Δ͜ͱ͕ॏཁ
Slide 7
Slide 7 text
7 ྨࣅͷҙࣝʹର͢ΔΞϓϩʔν ίʔυͱͯ͠ΠϯϑϥετϥΫνϟΛཧ ͢Δͱ͍͏ߟ͑ํɺैདྷͷΠϯϑϥετ ϥΫνϟཧͱେ͖͘ҟͳΔɻ ࢲɺ͜ͷసΛͲͷΑ͏ʹਐΊͨΒΑ͍ ͔͕Θ͔Βͣۤ࿑͍ͯ͠ΔνʔϜΛͨ͘͞ Μݟ͖ͯͨɻ ͔͠͠ɺ͜ΕΒͷπʔϧΛޮՌతʹ͏ͨ ΊͷΞΠσΞɺύλʔϯɺϓϥΫςΟε ɺΧϯϑΝϨϯεͷߨԋɺϒϩάϙε τɺݸผͷจʹࢄΒ͍ͬͯΔɻ
Slide 8
Slide 8 text
8 طଘͷମܥͱͦͷ՝ 1. Ͳͷମܥ͕WebγεςϜΞʔΩςΫνϟʹඞཁ͔͕ࣗ໌Ͱͳ͍ 2. طଘͷମܥಉ࢜ͷؔ࿈ੑ͕ࣗ໌Ͱͳ͍ ɾجૅࣝͱԠ༻ࣝΛ͋Θͤͨମܥ͍͔ͭ͘ଘࡏ͢Δ ɾWebγεςϜΞʔΩςΫνϟʹඞཁͳٕज़ཁૉΛཏ͢ΔͨΊʹɼෳ ͷମܥΛΈ߹ΘͤΔඞཁ͕͋Δ
Slide 9
Slide 9 text
9 ݚڀత ɾWebγεςϜΞʔΩςΫνϟͷॳֶऀ͕ɼܦݧʹΑΔؼೲతֶशʹ Ճ͑ͯɼମܥ͔Βͷԋ៷తֶश͕ՄೳͱͳΔ ɾWebγεςϜΞʔΩςΫνϟͰ৽͍ٕ͠ज़Λݚڀ͢Δ߹ʹɼ ମܥ͔ΒෳͷΞΠσΞͷΈ߹ΘͤΛൃݟՄೳͱͳΔ
Slide 10
Slide 10 text
10 1. ਤͷத৺ΛͱΔ => ࠓճyuukiͷத৺Ͱ͋ΔSREΛબ 2. طଘͷମܥ(جૅࣝମܥͱԠ༻ࣝମܥ)Λਤʹඳ͘ 3. ਤͷத৺͔Βͷؔ࿈ੑ͕ෆ໌Ͱ͋ͬͨΓۭനͷྖΛݟ͚ͭͯ ͦΕΒΛ໌Β͔ʹ͢Δ ਤΛͭ͘ΔͱͲ͏͍͏͜ͱ͔ ɾγεςϜ༷ʑͳͷࣝΛΈ߹ΘͤΔͨΊɺ ʓʓ͕ ೖΔ͔ೖΒͳ͍͔ͱ͍ͬͨείʔϓΛઃఆ͢ΔٞʹͳΓ͕ͪ ɾείʔϓΛઃఆ͢Δͱ͍͏ΑΓɺطଘͷਤͱͭͳ͗߹Θͤͯɺ ͲͷํʹͲΕ͚ͩา͘ͱԿʹͨͲΓண͔͕͔͘ΕΑ͍
Slide 11
Slide 11 text
2. ؔ࿈ମܥ
Slide 12
Slide 12 text
Betsy Beyer et al.ฤ, ۄཽ࢘ ༁, ᖒాஉ,et al. ༁, "SRE αΠτϦϥΠΞϏϦςΟΤϯδχΞϦϯάʕʕ Googleͷ৴པੑΛࢧ͑ΔΤϯδχΞϦϯάνʔϜ”, ΦϥΠϦʔɾδϟύϯ, 2017.
Slide 13
Slide 13 text
13 SRE ɾ৴པੑ(Reliability)͕ͦ͋͜ΒΏΔϓϩμΫτͷجຊతͳػೳͰ͋Δ ͱߟ͑ɼ৴པੑΛ࣠ʹ͜Ε·Ͱͷӡ༻ٕज़Λ1ͭͷͱཱͯ֬͠ ɾΤϥʔΛڐ༰͠ɼ৴པੑΛ੍ޚ͢Δ͜ͱͰมߋΛ࠷େԽ͢Δ ɾମܥͱͯ͠ͷߩݙɼͦΕ·ͰͷWebγεςϜӡ༻ͷΒΒͩͬ ͨཁૉٕज़͕৴པੑͷ੍ޚʹͭͳ͕Δ͜ͱΛࣔͨ͜͠ͱ
Slide 14
Slide 14 text
14 ৴པੑͷఆٛͱܭଌ ɾ“γεςϜ͕ٻΊΒΕΔػೳΛɼఆΊΒΕͨ݅ͷԼͰɼఆΊΒΕͨ ظؒʹΘͨΓɼোΛى͜͢͜ͱͳ࣮͘ߦ͢Δ֬”[26] ɾ৴པੑΛఆྔతʹSLO(αʔϏεϨϕϧඪ)ͱͯ͠ઃఆ͢Δ ɾSLOྫ) ϦΫΤετͷԠ࣌ؒͷ95%ile͕300msҎԼͷঢ়ଶ͕࢛ ظதͷ99.8%ͷظؒҡ࣋͞Ε͍ͯΔ͜ͱ ɾSLOΛաୡͤͣʹϐολϦୡ͢Δ͜ͱΛࢦ͢ [26] Patrick O'Connor, Andre Kleyner, Practical Reliability Engineering, Wiley, 2011.
Slide 15
Slide 15 text
15 SREͷൣғ ɾϞχλϦϯά ɾΠϯγσϯτରԠ ɾมߋཧ ɾΩϟύγςΟϓϥϯχϯά ɾϓϩϏδϣχϯά ɾޮͱύϑΥʔϚϯε
Slide 16
Slide 16 text
16 ৴པੑͷ֊ ɾ৴པੑͷ֊ɼ৴པੑΛ੍ޚ͢ΔͨΊͷج൫ ɾϞχλϦϯά͕ͳ͚Εɼ৴པੑͷܭଌ͕ͦͦ Ͱ͖ͳ͍ [1] Betsy Beyer et. al.ฤ, "SRE αΠτϦϥΠΞϏϦςΟΤϯδχΞϦϯά", ΦϥΠϦʔδϟύϯ, 2017. ਤIII -1αʔϏεͷ৴པੑͷ֊ ɾΠϯγσϯτରԠମ੍͕ͳ͚Εɼ৴པੑ ͕ଛͳΘΕͯճ෮Ͱ͖ͳ͍ ɾϙετϞʔςϜ͕ͳ͚Εಉ͡Πϯγσϯ τΛ܁Γฦ͠ɼ৴པੑ͕ଛͳΘΕ͘͢ͳ Δ ɾ…
Slide 17
Slide 17 text
Brendan Gregg ஶ, ༃ߛ ༁, ඌߴ߂ ༁, “ৄղ γεςϜɾύϑΥʔϚϯε”, ΦϥΠϦʔɾδϟύϯ, 2017.
Slide 18
Slide 18 text
18 ৄղγεςϜɾύϑΥʔϚϯε ɾରͱͳΔγεςϜɼWebγεςϜͷ߹ࢄγεςϜ ɾWebγεςϜʹ͓͚ΔࢄγεςϜɼҰൠʹ୯Ұϗετ্ͷϓϩ ηεΛجຊཁૉͱͯ͠ߏ͞ΕΔ ɾ୯Ұϗετ্ͷߏΛཧղ͢ΔʹɼOSͷݪཧͱOS্Ͱಈ࡞͢Δ ΞϓϦέʔγϣϯͷγεςϜϞσϧΛཧղ͢Δඞཁ͕͋Δ ɾॻ੶ʮৄղγεςϜɾύϑΥʔϚϯεʯͰɼOS͓ΑͼOSͷίϯ ςΩετʹ͓͚ΔΞϓϦέʔγϣϯͷੑೳϞσϧ͕ମܥԽ͞Ε͍ͯ Δ
Slide 19
Slide 19 text
19 ৄղγεςϜɾύϑΥʔϚϯε
Slide 20
Slide 20 text
Martin Kleppmannஶ, ੪౻ଠ ༁, ۄཽ࢘ ༁, “σʔλࢦΞϓϦέʔγϣϯσβΠϯ ――৴པੑɺ֦ுੑɺอकੑͷߴ͍ࢄγεςϜઃܭͷݪཧ”, ΦϥΠϦʔɾδϟύϯ, 2019.
Slide 21
Slide 21 text
21 σʔλࢦΞϓϦέʔγϣϯσβΠϯ ɾιʔγϟϧωοτϫʔΫIoTΞϓϦέʔγϣϯͰɼଟͷར༻ऀ σόΠε͕ੜ͢ΔେྔͷσʔλΛѻ͏ ɾࢄγεςϜʹ͓͚Δॏཁͳ 3 ͭͷ՝ʹয ɾ৴པੑɼεέʔϥϏϦςΟɼϝϯςφϯεੑ ɾσʔλࢦͷࢄγεςϜΛɺετϨʔδΤϯδϯɺσʔλΛࢄ ͢Δͱ͖ͷஔख๏ɺࢄͨ͠σʔλͷҰ؏ੑͷ୲อख๏ͳͲͷ؍ ͰମܥԽ͍ͯ͠Δ
Slide 22
Slide 22 text
Kief Morris ஶ, ٶԼ߶ี ༁ɺඌߴ߂ ༁, “Infrastructure as Code ――Ϋϥυʹ͓͚ΔαʔόཧͷݪଇͱϓϥΫςΟε”, ΦϥΠϦʔɾδϟύϯ 2017.
Slide 23
Slide 23 text
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ͳͲ ཧࢧԉπʔϧαʔϏε ϞχλϦϯάɼσϓϩΠͳͲ
Slide 24
Slide 24 text
24 ؔ࿈ମܥͷ՝ ɾ͜ΕΒͷମܥΛͯ͋͢ΘͤΔͱɼ͍ͣΕWebγεςϜΛߏ͢ ΔͨΊʹඞཁͳࣝͷଟ͘ΛཏͰ͖Δ ɾ͔͠͠ɼ͜ͷମܥΛΈ߹ΘͤΔख๏ʹɼ࣍ͷ2ͭͷ՝͕͋Δ ɾͲͷମܥ͕ඞཁ͔ΛֶशऀࣗྗͰൃݟ͢Δඞཁ͕͋Δ ɾ֤ମܥಠཱͯ͠ߏ͞Ε͍ͯΔͨΊɼମܥಉ࢜ͷؔ࿈ੑΛֶशऀ ͕ࣗྗͰݟग़͢ඞཁ͕͋Δ ɾମܥͷҰ෦͕ଞͷମܥͷҰ෦ͱॏෳ͢Δ͜ͱ͕͋Δ ɾInfrastructure ServiceͷϞχλϦϯάͱSREͷϞχλϦϯάͳͲ
Slide 25
Slide 25 text
3. ఏҊମܥ
Slide 26
Slide 26 text
26 1. ৄղγεςϜύϑΥʔϚϯε => ୯Ұϗετ্ͷମܥ 2. σʔλࢦΞϓϦέʔγϣϯσβΠϯ => ࢄγεςϜͷମܥ 3. Infrastructure As Code => ΞϓϦέʔγϣϯ࣮ߦڥͷମܥ 4. SRE => ৴པੑ੍ޚͷମܥ SREΛ࣠ʹطଘମܥΛ·ͱΊΔ SREɼ৴པੑΛ੍ޚ͠ɼมߋΛ࠷େԽ͢Δͱ͍͏తΛ ༩͑ͯ͘ΕΔ
Slide 27
Slide 27 text
27 1. ΞϓϦέʔγϣϯͷ࣮ߦڥͷߏख๏ 2. ୯Ұϗετ্ͷΞϓϦέʔγϣϯͷߏख๏ 3. ࢄγεςϜͱͯ͠ͷΞϓϦέʔγϣϯͷߏख๏ 4. ߏ͞ΕͨΞϓϦέʔγϣϯͷ৴པੑ੍ޚ ఏҊ͢Δମܥͷେ߲ ৴པੑΛ੍ޚ͠ɼมߋΛ࠷େԽ͢Δ͜ͱΛతͱͯ͠ɼ γεςϜͷߏख๏Λ࣍ͷ1~4ʹྨ͢Δ
Slide 28
Slide 28 text
28 ྨಉ࢜ͷؔੑ ৴པੑ੍ޚ ࣮ߦڥͷߏ ୯Ұϗετ্ͷ ΞϓϦέʔγϣϯߏ ࢄγεςϜ ΞϓϦέʔγϣϯߏ αʔόɼωοτϫʔΫڥΛ ͍͔ʹߏ͢Δ͔ ߴ࡞ɾมߋ εέʔϥϏϦςΟ OS্ͷΞϓϦέʔγϣϯ ʹ͍͔ʹޮతʹ ϦιʔεΛར༻ͤ͞Δ͔ ϞχλϦϯά ࣮ߦޮ ϞχλϦϯά εέʔϥϏϦςΟ ߴՄ༻ੑ ࢄϗετ্Ͱ͍͔ʹ ΞϓϦέʔγϣϯΛ ߏ͢Δ͔
Slide 29
Slide 29 text
29 ৴པੑ੍ޚ ࣮ߦڥͷߏ ୯Ұϗετ্ͷ ΞϓϦέʔγϣϯߏ ࢄγεςϜ ΞϓϦέʔγϣϯߏ WSAݚ#5ͷ֤ݚڀΛద༻ matsumotory “ίϯςφ࣮ߦج൫" hirolovesbeer “ࢹγεςϜ” k1Low “ҟৗՕॴಛఆख๏” monochromegane “Kaburaya” osako_ricc “ॲཧܥੑೳධՁ” zacky1972 “Pelemay”
Slide 30
Slide 30 text
30 ৫จԽͱͷؔ࿈ੑ ৴པੑ੍ޚ ࣮ߦڥͷߏ ୯Ұϗετ্ͷ ΞϓϦέʔγϣϯߏ ࢄγεςϜ ΞϓϦέʔγϣϯߏ DevOps ίϥϘϨʔγϣϯ ΞϑΟχςΟ πʔϧ εέʔϦϯά ΠϯγσϯτରԠ ϙετϞʔςϜ ϚΠΫϩαʔϏε
Slide 31
Slide 31 text
4. ·ͱΊ
Slide 32
Slide 32 text
32 ·ͱΊ ɾWebγεςϜΞʔΩςΫνϟʹ͍ͭͯɼମܥ͔Βͷԋ៷తֶशͱΞΠ σΞͷΈ߹ΘͤͷଅਐΛతͱ͢Δ ɾఏҊମܥɼ৴པੑΛ੍ޚ͠ɼมߋΛ࠷େԽ͢Δ͜ͱΛతͱ͠ ͯɼ4ͭͷྨΛఏҊ͍ͯ͠Δ
Slide 33
Slide 33 text
33 ࠓޙͷ՝ ɾఏҊ͢ΔମܥΛར༻ͨ͠ͱ͖ʹɼֶशՄೳͳൣғΛ໌Β͔ʹ͢Δ ɾ։ൃ͢ΔγεςϜ͕ߴԽ͢Ε͢Δ΄Ͳɼඞཁͳࣝ͘·ͨ ਂ͘ͳΓɼ୯ҰͷମܥͰΧόʔ͢Δ͜ͱ͘͠ͳΔ ɾWebγεςϜΞʔΩςΫνϟͷͷڥքΛ໌Β͔ʹ͢Δ ɾྫ͑ɼσʔλϕʔεͷεΩʔϚઃܭɼ࣮ߦޮੑͱϏδωεϩ δοΫͷઃܭͷ྆ऀʹؔΘΔ ɾϑϩϯτΤϯυͱόοΫΤϯυͷ۠ผͱؔ࿈ੑΛ໌Β͔ʹ͢Δ ɾΧϧνϟʔ৫ମܥͱͷؔ࿈ੑΛ໌Β͔ʹ͢Δ