Slide 1

Slide 1 text

໺ଜ޸໋, ྗ෢݈࣍*, দຊ྄հ / ϖύϘݚڀॴ / *ྗ෢݈ٕ࣍ज़࢜ࣄ຿ॴ 2018.05.12 ୈ2ճWeb System Architectureݚڀձ WebΞϓϦέʔγϣϯςετΛ༻͍ͨ
 SQLΫΤϦͷϗϫΠτϦετࣗಈ࡞੒ख๏

Slide 2

Slide 2 text

໺ଜ ޸໋ / @komei 2 Komei Nomura ٕज़෦ ݚڀ։ൃνʔϜ ϖύϘݚڀॴ ݚڀһ GMOϖύϘגࣜձࣾ

Slide 3

Slide 3 text

1. ݚڀͷഎܠ 2. ैདྷͷෆਖ਼ΫΤϦݕ஌ͷ՝୊ 3. ఏҊख๏ 4. ·ͱΊͱࠓޙͷ՝୊ 3 ໨࣍

Slide 4

Slide 4 text

1. ݚڀͷഎܠ

Slide 5

Slide 5 text

• WebΞϓϦέʔγϣϯʢWebΞϓϦʣͷ੬ऑੑΛར༻ͨ͠߈ܸ͸ޙΛઈͨͳ͍ • ߈ܸʹΑͬͯWebαʔϏε͕อ༗͢Δൿີ৘ใ͕࿙Ӯ͢Δඃ֐͕ൃੜ • WebΞϓϦ͕ར༻͢Δσʔλϕʔεʹෆਖ਼ΫΤϦΛൃߦ࣮͠ߦ͢Δ͜ͱͰ
 ߦΘΕΔ • 1ͭͷෆਖ਼ΫΤϦͷ࣮ߦ͕େن໛ͳ৘ใ࿙ӮΛҾ͖ى͜͢͜ͱ΋͋Δ • ෆਖ਼ΫΤϦΛݕ஌࣮͠ߦΛఀࢭ͢Δରࡦ͕ඞཁ 5 ݚڀͷഎܠ

Slide 6

Slide 6 text

• ෆਖ਼ΫΤϦͷରࡦ͸ॏཁ͕ͩɼαʔϏεͷ։ൃ΍ӡӦʹӨڹΛ༩͑ͨ͘ͳ͍ • WebαʔϏεͷಛ௃Λߟྀ͢Δඞཁ͋Γ • WebαʔϏε͸සൟʹ࢓༷มߋ͞ΕWebΞϓϦͷվम͕ߦΘΕΔ • ։ൃϓϩηε΁ͷӨڹΛখ͘͞ • WebαʔϏεͷ࣮૷ʹ͸༷ʑͳݴޠʢPHP, RubyͳͲʣ͕༻͍ΒΕΔ • ͦΕͧΕʹରࡦΛ࣮૷͢Δ͜ͱ͸։ൃऀͷෛ୲ͱͳΔ • WebαʔϏεͷ࣮૷ʹґଘ͠ͳ͍ํ๏͕ඞཁ 6 WebαʔϏεʹ͓͚Δෆਖ਼ΫΤϦରࡦ

Slide 7

Slide 7 text

2. ैདྷͷෆਖ਼ΫΤϦݕ஌ͷ՝୊

Slide 8

Slide 8 text

• WebΞϓϦ͕ൃߦ͢ΔΫΤϦͷϦετʢϗϫΠτϦετʣΛ࡞੒ͯ͠ෆਖ਼ΫΤϦ Λݕ஌͢Δํࣜ • WebΞϓϦͷେن໛Խ΍ෳࡶԽʹ൐͍WebΞϓϦ͕ൃߦ͢ΔΫΤϦ͕૿େ • WebαʔϏε͸࢓༷มߋʹΑΓWebΞϓϦ͕ൃߦ͢ΔΫΤϦ͕มԽ • ൃߦ͢ΔΫΤϦͱϗϫΠτϦετͷ੔߹ੑΛऔΔඞཁ͕͋Δ • WebαʔϏεӡ༻ऀͷෛ୲͕૿େ͢Δ܏޲͕͋Δ 8 ैདྷͷෆਖ਼ΫΤϦݕ஌ํࣜͱ՝୊

Slide 9

Slide 9 text

• WebΞϓϦ͕ൃߦ͢ΔΫΤϦ͸࣮ࡍʹൃߦ͞ΕͨΫΤϦ΍ιʔείʔυ͔Β ݶఆͰ͖Δ • ϗϫΠτϦετΛࣗಈͰ࡞੒͢Δख๏͕ఏҊ͞Ε͍ͯΔ • WebΞϓϦՔಇ࣌ͷΫΤϦΛ༻͍ͯ࡞੒ • WebΞϓϦͷιʔείʔυΛղੳͯ͠࡞੒ 9 ෆਖ਼ΫΤϦݕ஌ͷ՝୊ʹର͢Δैདྷख๏

Slide 10

Slide 10 text

• WebΞϓϦՔಇ࣌ʹൃߦ͞ΕͨΫΤϦΛֶशͯ͠ϗϫΠτϦετΛ࡞੒͢Δ • WebΞϓϦͷ࣮૷ʹґଘͤͣϗϫΠτϦετΛ࡞੒Մೳ 10 WebΞϓϦՔಇ࣌ͷΫΤϦΛ༻͍ͨࣗಈ࡞੒ख๏ σʔλϕʔε 8FCΞϓϦ ΫΤϦ ϗϫΠτϦετ 8FCΞϓϦՔಇ࣌

Slide 11

Slide 11 text

• WebΞϓϦՔಇ࣌ʹϗϫΠτϦετ࡞੒ͱෆਖ਼ΫΤϦݕ஌͕ࠞࡏ • ϗϫΠτϦετ࡞੒த͸ෆਖ਼ΫΤϦͷݕ஌͕Ͱ͖ͳ͍ • WebαʔϏε͸සൟʹվम͞ΕΔ͜ͱ͔Βݕ஌Ͱ͖ͳ͍ظ͕ؒ૿େ • WebΞϓϦՔಈ࣌ʹ͸ෆਖ਼ΫΤϦΛݕ஌Ͱ͖Δঢ়ଶ͕ඞཁ • ϗϫΠτϦετͷ࡞੒͸WebΞϓϦՔಈલʹߦ͏ඞཁ͕͋Δ 11 WebΞϓϦՔಇ࣌ͷΫΤϦΛ༻͍ͨࣗಈ࡞੒ख๏ͷ՝୊

Slide 12

Slide 12 text

• WebΞϓϦͷιʔείʔυΛղੳͯ͠ϗϫΠτϦετΛ࡞੒͢Δ • WebΞϓϦՔಈલʹϗϫΠτϦετΛ࡞੒Ͱ͖Δ • WebΞϓϦՔಈޙɼଈ࣌ʹෆਖ਼ΫΤϦΛݕ஌Ͱ͖Δ 12 ιʔείʔυղੳΛ༻͍ͨࣗಈ࡞੒ख๏ ղੳث ιʔείʔυ ϗϫΠτϦετ 8FCΞϓϦՔಈલ

Slide 13

Slide 13 text

• ιʔείʔυղੳ͕WebΞϓϦͷ࣮૷ʹґଘ͢Δ • WebαʔϏεͷ࣮૷ʹ͸༷ʑͳݴޠ͕༻͍ΒΕΔ • ͦΕͧΕͷWebαʔϏεʹରͯ͠ղੳثΛ࣮૷͢Δ͜ͱ͸։ൃऀͷෛ୲ͷ ૿େʹͭͳ͕Δ • WebΞϓϦͷ࣮૷ʹґଘ͠ͳ͍ํ๏͕ඞཁͱͳΔ 13 ιʔείʔυղੳΛ༻͍ͨࣗಈ࡞੒ख๏ͷ՝୊

Slide 14

Slide 14 text

• WebΞϓϦՔಇ࣌ʹൃߦ͞ΕΔΫΤϦΛֶशͯ͠࡞੒͢Δख๏ • WebΞϓϦՔಇޙɼଈ࣌ʹෆਖ਼ΫΤϦΛݕ஌Ͱ͖ͳ͍ • WebΞϓϦͷιʔείʔυΛղੳͯ͠࡞੒͢Δख๏ • WebΞϓϦͷ࣮૷ґଘͷͨΊɼ։ൃऀ΁ͷෛ୲ͷ૿େ͢Δ 14 ैདྷͷϗϫΠτϦετࣗಈ࡞੒ख๏ͷ՝୊·ͱΊ

Slide 15

Slide 15 text

3. ఏҊख๏

Slide 16

Slide 16 text

• ैདྷख๏ͷ՝୊͔ΒఏҊख๏͸ҎԼͷཁ݅Λຬͨ͢ඞཁ͕͋Δ • WebΞϓϦՔಈલʹϗϫΠτϦετΛ࡞੒Ͱ͖Δ • WebΞϓϦͷ࣮૷ʹґଘͤͣϗϫΠτϦετΛ࡞੒Ͱ͖Δ • ಋೖ࣌ͷ։ൃϓϩηε΁ͷӨڹ͕খ͍͞ 16 ఏҊख๏ͷཁ݅

Slide 17

Slide 17 text

• WebΞϓϦέʔγϣϯςετΛ༻͍ͨΫΤϦͷϗϫΠτϦετࣗಈ࡞੒ख๏ • ։ൃϓϩηεʹࣗಈςετ͕૊Έࠐ·Ε͍ͯΔલఏ • ςετ࣌ʹϗϫΠτϦετΛࣗಈͰ࡞੒͢ΔॲཧΛ௥Ճ • ςετ࣌ʹൃߦ͞ΕͨΫΤϦΛ༻͍ͯϗϫΠτϦετΛ࡞੒ 17 ఏҊख๏

Slide 18

Slide 18 text

18 લఏͱ͢ΔࣗಈςετΛ༻͍ͨ։ൃϓϩηε ։ൃ ςετίʔυهड़ αʔόʹ഑ஔ ࣗಈςετ /P :FT ӡ༻։࢝ ςετ੒ޭ w ৽ػೳͷ௥Ճ w طଘػೳͷमਖ਼ w 8FCΞϓϦΛಈ࡞ͤ͞Δखॱͱಈ࡞ͷ݁ՌΛهड़ w ςετίʔυΛݩʹࣗಈͰςετΛ࣮ߦ w 8FCΞϓϦͷಈ࡞͕࢓༷௨Γ͔Λ֬ೝ w ςετࣦഊɿ8FCΞϓϦͷιʔείʔυ΋͘͠͸
 ɹɹɹɹɹɹςετίʔυʹ໰୊͋Γ w ςετ੒ޭɿ8FCΞϓϦ͕࢓༷௨Γʹಈ࡞ w ৽͍͠8FCΞϓϦͷιʔείʔυΛαʔόʹ഑ஔ w ৽͍͠8FCΞϓϦͷӡ༻Λ։࢝

Slide 19

Slide 19 text

19 ։ൃ ςετίʔυهड़ αʔόʹ഑ஔ ࣗಈςετ ʴ ϗϫΠτϦετ࡞੒ /P :FT ӡ༻։࢝ ςετ੒ޭ w ࣗಈςετ࣌ʹൃߦ͞ΕͨΫΤϦ͔ΒϗϫΠτϦετ Λࣗಈ࡞੒ w ҎԼΛͦΕͧΕαʔόʹ഑ஔ w ৽͍͠8FCΞϓϦͷιʔείʔυ w ৽͍͠8FCΞϓϦͷΫΤϦͷϗϫΠτϦετ ։ൃϓϩηεʹ͓͚ΔఏҊख๏ͷҐஔ෇͚ w ։ൃϓϩηε΁ͷӨڹ͕খ͍͞ w ӡ༻։࢝࣌ʹ͸ෆਖ਼ΫΤϦΛݕ஌Ͱ͖Δঢ়ଶ w ϗϫΠτϦετͷ໢ཏੑ͸ςετ࣌ʹൃߦ͞ΕͨΫ ΤϦʹґଘ w ߴ͍ςετΧόϨοδ͕ඞཁ

Slide 20

Slide 20 text

20 ఏҊख๏ͷઃܭ σʔλϕʔε σʔλϕʔεϓϩΩγ 8FCΞϓϦ ϗϫΠτϦετ • σʔλϕʔεͷલஈʹσʔλϕʔεϓϩΩγΛ഑ஔ • ςετ࣌ʹ͸ൃߦ͞ΕΔΫΤϦΛσʔλϕʔεϓϩΩγͰऩूͯ͠ϗϫΠτϦε τΛ࡞੒ɹˠɹWebΞϓϦͷ࣮૷ݴޠʹґଘ͠ͳ͍

Slide 21

Slide 21 text

• WebΞϓϦ͕ൃߦ͢ΔΫΤϦ͸ϢʔβೖྗʹΑͬͯมԽ • ΫΤϦύλʔϯ͸๲େͱͳΔͨΊ͢΂ͯΛొ࿥͢Δͷ͸ࠔ೉ • ΫΤϦͷϦςϥϧΛϓϨʔεϗϧμʹஔ͖׵͑ͨΫΤϦߏ଄Λొ࿥ • ΫΤϦߏ଄͕ҟͳΔ΋ͷΛݕ஌Ͱ͖Δ 21 ϗϫΠτϦετͷొ࿥಺༰ 4&-&$5 '30.VTFST8)&3&JE 61%"5&VTFST4&5OBNFb5BJDIJ`8)&3&JE %&-&5&'30.VTFST8)&3&JE 4&-&$5 '30.VTFST8)&3&JE 61%"5&VTFST4&5OBNF 8)&3&JE %&-&5&'30.VTFST8)&3&JE Ϧςϥϧ

Slide 22

Slide 22 text

• ΫΤϦߏ଄͕ಉҰͱͳΔ΋ͷ͸ݕ஌Ͱ͖ͳ͍ 22 ఏҊख๏Ͱݕ஌Ͱ͖ͳ͍ෆਖ਼ΫΤϦ ௨ৗɿSELECT * FROM users LIMIT 30 ҟৗɿSELECT * FROM users LIMIT 1000 SELECT * FROM users LIMIT ?

Slide 23

Slide 23 text

• ςετ࣌ʹൃߦ͞ΕΔΫΤϦ͸WebΞϓϦͷಈ࡞ͷաఔͰൃߦ͞ΕΔΫΤϦ • ఏҊख๏͸ςετ࣌ʹൃߦ͞ΕΔΫΤϦΛ༻͍ͯϗϫΠτϦετΛ࡞੒ • ݕ஌͞ΕΔΫΤϦ͸ςετ࣌ʹൃߦ͞Ε͍ͯͳ͍ΫΤϦ • ςετ͞Ε͍ͯͳ͍ΫΤϦͱෆਖ਼ΫΤϦؚ͕·ΕΔ 23 ఏҊख๏Ͱݕ஌Ͱ͖ΔΫΤϦͷߟ࡯

Slide 24

Slide 24 text

24 ΫΤϦͷ಺แؔ܎ શͯͷΫΤϦ ςετ͞Ε͍ͯΔΫΤϦྖҬ ʢϗϫΠτϦετʹొ࿥ʣ 8FCΞϓϦέʔγϣϯ͕ൃߦ͢ΔΫΤϦྖҬ ɿςετ͞Ε͍ͯΔΫΤϦྖҬ ɿෆਖ਼ΫΤϦྖҬ ɿςετ͞Ε͍ͯͳ͍ΫΤϦྖҬ

Slide 25

Slide 25 text

25 ςετΧόϨοδʹΑΔྖҬͷมԽ શͯͷΫΤϦ ςετ͞Ε͍ͯΔΫΤϦྖҬ ʢϗϫΠτϦετʹొ࿥ʣ 8FCΞϓϦέʔγϣϯ͕ൃߦ͢ΔΫΤϦྖҬ શͯͷΫΤϦ ςετ͞Ε͍ͯΔΫΤϦྖҬ ʢϗϫΠτϦετʹొ࿥ʣ 8FCΞϓϦέʔγϣϯ͕ൃߦ͢ΔΫΤϦྖҬ ςετΧόϨοδΛ޲্ͤ͞Δ͜ͱͰςετ͞Ε͍ͯΔΫΤϦྖҬΛ֦େ ˠɹෆਖ਼ΫΤϦͷݕ஌ਫ਼౓͕޲্ ɿςετ͞Ε͍ͯΔΫΤϦྖҬ ɿෆਖ਼ΫΤϦྖҬ ɿςετ͞Ε͍ͯͳ͍ΫΤϦྖҬ

Slide 26

Slide 26 text

4. ·ͱΊͱࠓޙͷ՝୊

Slide 27

Slide 27 text

• WebΞϓϦέʔγϣϯςετΛ༻͍ͨΫΤϦͷϗϫΠτϦετࣗಈ࡞੒ख๏ ͷௐࠪɾݕ౼Λߦͬͨ • ఏҊख๏͸ҎԼͷཁ݅ΛຬͨͤΔͱߟ͑ΒΕΔ • WebΞϓϦՔಈલʹϗϫΠτϦετΛ࡞੒Ͱ͖Δ • WebΞϓϦͷ࣮૷ʹґଘͤͣϗϫΠτϦετΛ࡞੒Ͱ͖Δ • ಋೖ࣌ͷ։ൃϓϩηε΁ͷӨڹ͕খ͍͞ 27 ·ͱΊ

Slide 28

Slide 28 text

• ఏҊख๏ͷ࣮૷ • ςετΧόϨοδʹର͢Δෆਖ਼ΫΤϦͷݕ஌ਫ਼౓ͷݕূ • ݕ஌ͨ͠ΫΤϦ͕ςετ͞Ε͍ͯͳ͍ΫΤϦ͔ෆਖ਼ΫΤϦ͔ͷ൑அํ๏ͷݕ౼ • ݱঢ়։ൃऀ೚ͤ • ΫΤϦͷϦςϥϧͷෆਖ਼Λݕ஌͢Δํ๏ͷݕ౼ 28 ࠓޙͷ՝୊