Slide 1

Slide 1 text

ࣗࣾαʔϏεͷ%KBOHPΛ ͔Β -54 ʹ ΞοϓάϨʔυ͢Δ·ͰͷಓͷΓ %KBOHP$POHSFTT+1 1

Slide 2

Slide 2 text

MJHIUUJHFS w େڮฏ࿨ w ࡾे࿏ ੜ 2

Slide 3

Slide 3 text

w αʔόαΠυΤϯδχΞ ݉εΫϥϜϚελʔ w 8FC"1*αʔό 8SJUUFOJO1ZUIPO✕%KBOHP w ϓογϡ഑৴γεςϜ 8SJUUFOJO(P 3

Slide 4

Slide 4 text

ϓϥΠϕʔτ w $-*ίϚϯυ w MBC (JU-BCΫϥΠΞϯτ w 7JNϓϥάΠϯ w EFPQMFUFWJNMTQ -41ࣗಈิ׬ 4

Slide 5

Slide 5 text

ΠϯτϩμΫγϣϯ 5

Slide 6

Slide 6 text

J3JEHFͷఏڙ͢Δ164)഑৴ϓϥοτϑΥʔϜ 6

Slide 7

Slide 7 text

QPQJOGPͱ͸ 7 اۀ Ϣʔβ اۀͱϢʔβͷίϛϡχέʔγϣϯ

Slide 8

Slide 8 text

QPQJOGPͱ͸ 8 اۀ Ϣʔβ اۀͱϢʔβͷίϛϡχέʔγϣϯ

Slide 9

Slide 9 text

QPQJOGPͷ ߏ੒ʹ͍ͭͯ 9

Slide 10

Slide 10 text

10 ؅ཧը໘ ؅ཧAPI Τϯυ ϢʔβAPI ഑৴ γεςϜ Πϕϯτ ऩूAPI όονॲཧ Ϣʔβ ϓογϡ഑৴ऀ Ϣʔβ

Slide 11

Slide 11 text

11 ؅ཧը໘ ؅ཧAPI Τϯυ ϢʔβAPI ഑৴ γεςϜ Πϕϯτ ऩूAPI όονॲཧ Ϣʔβ ϓογϡ഑৴ऀ Ϣʔβ

Slide 12

Slide 12 text

12 ELB NAT GW MYSQL Aurora EC2 EC2 ΠϕϯτऩूAPI EC2 ΤϯυϢʔβAPI ؅ཧAPI EC2 όονॲཧ ؅ཧը໘ ഑৴γεςϜ ELB ELB

Slide 13

Slide 13 text

13 EC2 EC2 ΠϕϯτऩूAPI EC2 ΤϯυϢʔβAPI ؅ཧAPI EC2 όονॲཧ ୯ҰͷϦϙδτϦͰ؅ཧ͞Εͨ ϞϊϦγοΫͳΞϓϦέʔγϣϯ EC2

Slide 14

Slide 14 text

όʔδϣϯ৘ใ 14 Python/Django όʔδϣϯ ϦϦʔε೔ Python 2.7.6 2013/10/11 Django 1.3.7 2013/02/20

Slide 15

Slide 15 text

໨ࢦ͢͸ 15 Python/Django όʔδϣϯ ϦϦʔε೔ Python 2.7.15 2018/04/01 Django 1.11.18 2019/01/04

Slide 16

Slide 16 text

ͷ ։͔࢝Βϲ݄ؒ 16

Slide 17

Slide 17 text

%KBOHPରԠ൛ ϦϦʔε׬ྃ 17

Slide 18

Slide 18 text

ຊ೔ͷλʔήοτΰʔϧ w λʔήοτ w ݹ͍%KBOHPΛ࢖ͬͯࠔ͍ͬͯΔਓ w ۤ࿑࿩͕ฉ͖͍ͨਓ w ΰʔϧ w ࣮ྫΛ౿·͑ͯͷ࣍ͷ̎఺Λ఻͑Δ w ΞοϓάϨʔυதʹ৺͕͚ͯΑ͔ͬͨ͜ͱ w ΞοϓάϨʔυதʹ৺͕͚Δ΂͖ͩͬͨ͜ͱ 18

Slide 19

Slide 19 text

࿩͞ͳ͍͜ͱ w %KBOHP03.ʹΑΔϚΠάϨʔγϣϯͱͷઓ͍ w %#ͷ%KBOHPͷϚΠάϨʔγϣϯ؅ཧΛ͍ͯ͠ͳ͍ w खಈΫΤϦʹΑΔ؅ཧ 19

Slide 20

Slide 20 text

ΞδΣϯμ ͳͥΞοϓάϨʔυ͕ඞཁ͔ߟ͑Δ ΰʔϧʹ͍͖ͳΓ޲͔Θͳ͍ ඞཁͳ΋ͷ͚ͩΛΞοϓάϨʔυ͢Δ αΠΫϧΛߴ଎Խ͢Δ %KBOHPͷΞοϓάϨʔυ಺༰Λཧղ͢Δ पΓͷϓϩϑΣογϣφϧΛཔΔ ΞοϓάϨʔυ͸ऴΘΓͰ͸ͳ͍ 20

Slide 21

Slide 21 text

ͳͥΞοϓάϨʔυ͕ ඞཁ͔ߟ͑Δ 21 1 ————— 7

Slide 22

Slide 22 text

ΞοϓάϨʔυ͠ͳͯ͘΋ w γεςϜ͸Կͷ໰୊΋ͳ͘ಈ͍͍ͯΔ w ௥Ճ͢΂͖ػೳ͸๲େʹ͋Δ w ΞοϓάϨʔυͯ͠΋ػೳ͸૿͑ͳ͍ w 71$಺ͳͷͰηΩϡϦςΟΛڧԽ͠ͳͯ͘΋ 22

Slide 23

Slide 23 text

/P 23

Slide 24

Slide 24 text

ද໘తʹݟ͑ͳ͍͚ͩͰ ฐ֐͸ͨ͘͞Μ͋Δ 24

Slide 25

Slide 25 text

%KBOHPͷ ηΩϡϦςΟαϙʔτ 25

Slide 26

Slide 26 text

ͷηΩϡϦςΟαϙʔτ͸ʁ 26 1.3

Slide 27

Slide 27 text

ηΩϡϦςΟαϙʔτ͕ ੾Ε͔ͯΒ೥ 27 1.3 5೥

Slide 28

Slide 28 text

ηΩϡϦςΟαϙʔτ੾Ε w ੬ऑੑ͕์ஔ͞Εͨແ๷උͳঢ়ଶ w γεςϜ͸҆શͳঢ়ଶ͕౰ͨΓલ w Կ͔͕ى͖͔ͯΒͰ͸஗͍ 28

Slide 29

Slide 29 text

Ϟνϕʔγϣϯ΋Լ͕Δ w ةݥͳγεςϜΛҡ࣋͢Δ͜ͱʹތΓΛ࣋ͯΔ͔ w ϨΨγʔΛ৮Γଓ͚Δࣗ෼ʹະདྷ͸͋Δͷ͔ 29

Slide 30

Slide 30 text

%KBOHP࠷৽ػೳ͕࢖͑ͳ͍ w %#઀ଓճ਺͕ଟ͗ͯ͢"1*ͷϨΠςϯγ͕ w $0//@."9@"(&Λ࢖͑͹઀ଓෛՙ͕ݮΔͧ w %KBOHP͔Βαϙʔτ 30

Slide 31

Slide 31 text

SEύʔςΟϥΠϒϥϦ͕ ରԠ͍ͯ͠ͳ͍ 31 ϥΠϒϥϦ ରԠόʔδϣϯ django-rest-framework Django ≧ 1.11 django-debug-toolbar Django ≧ 1.11 django-extensions Django ≧ 1.11 django-security Django ≧ 1.8 django-import-export Django ≧ 2.0

Slide 32

Slide 32 text

ݹ͍৘ใ͸ ͲΜͲΜ୧Εͳ͘ͳΔ w ࣌ͱͱ΋ʹͷ৘ใ͸গͳ͘ͳΔҰํ w (PPHMFͰݕࡧͯ͠΋ώοτ͢Δͷ͸৽όʔδϣϯ͹͔Γ 32

Slide 33

Slide 33 text

%KBOHPެࣜυΩϡϝϯτʹ 33

Slide 34

Slide 34 text

͸ࡌ͍ͬͯͳ͍ 34

Slide 35

Slide 35 text

΋΋͏͢Ͱʹ 35

Slide 36

Slide 36 text

໨తҙࣝΛ໌֬ʹ΋ͭ w ΞοϓάϨʔυ͸γεςϜͷػೳ௥ՃʹߩݙͰ͖ͳ͍ͷͰ ͸ͳ͍ w શମʹେ͖ͳӨڹΛ༩͑Δେࣄͳ஍ݻΊΛ΍͍ͬͯΔࣗෛ Λ࣋ͭ 36

Slide 37

Slide 37 text

ΰʔϧʹ͍͖ͳΓ ޲͔Θͳ͍ 37 1 2 ———— 7

Slide 38

Slide 38 text

ͳΔ΂͘ϦϦʔε͢Δ 38

Slide 39

Slide 39 text

ΰʔϧ͸ -54 39 Django 1.3.7 Django 1.11.18

Slide 40

Slide 40 text

೥Ҏ্ͷࡀ݄ 40 Django 1.3.7 Django 1.11.18 2013/02/20 Release 2019/01/04 Release

Slide 41

Slide 41 text

೥Ҏ্ͷࡀ݄ 41 Django 1.3.7 Django 1.11.18 2013/02/20 Release 2019/01/04 Release ϦϦʔεճ਺ ϚΠφʔόʔδϣϯΞοϓ: 8ճ ύον: 114ճ

Slide 42

Slide 42 text

ΞοϓάϨʔυͱฒߦͰ ৽ػೳ௥Ճ΋ߦΘΕΔ 42 ৽ػೳ௥Ճ Django ΞοϓάϨʔυ ຊ൪؀ڥ ϦϦʔε ίϛοτ

Slide 43

Slide 43 text

ϦϦʔε࣌ʹ͸৽ػೳΛ Ϛʔδ্ͨ͠Ͱ΍Δඞཁ͕͋Δ 43 ৽ػೳ௥Ճ Django ΞοϓάϨʔυ ຊ൪؀ڥ ϦϦʔε Ϛʔδ

Slide 44

Slide 44 text

ΞοϓάϨʔυ͕௕Ҿ͚͹ औΓࠐΈྔ΋૿͑Δ 44 ৽ػೳ௥Ճ Django ΞοϓάϨʔυ ຊ൪؀ڥ ϦϦʔε Ϛʔδ

Slide 45

Slide 45 text

தؒϦϦʔεʹΑΓ ࣮֬ͳεςοϓΛ౿Ή 45 Django 1.3.7 Django 1.11.18 Django 1.8.18

Slide 46

Slide 46 text

ͳͥখ͞ͳεςοϓΛ౿Ήʁ w ϦϦʔεਖ਼ৗՔಇ͍ͯ͠Διʔε͸ϕʔεϥΠϯ͔ͩΒ w ϦϦʔεͨ͠Β৽ػೳ௥ՃͷϕʔεʹͳΕΔ w Ұ౓ʹ౿Ήόάͷྔ͕ݮΔ w ϦϦʔε͔ͯ͠Βൃݟͨ͠όά΋ଟ਺ w ݪҼௐࠪͷείʔϓ΋খ͘͞ͳΔ 46

Slide 47

Slide 47 text

ͪΐͬͱ͚ͩ ϦϦʔε͢Δ 47

Slide 48

Slide 48 text

͢΂ͯΛςετ͢Δ͜ͱ͸ Ͱ͖ͳ͍ w %KBOHPͷߋ৽ػೳ͸๲େ w ͢΂ͯͷมߋ಺༰ΛνΣοΫ͢Δίετͱਓһ͸ͳ͍ w ҎԼͷςετͰόάͷ΄ͱΜͲ͸ݟ͔ͭΔ͸ͣ w طଘૢ࡞ͷϦάϨογϣϯ ୀߦ ςετ w %KBOHPΞοϓάϨʔυӨڹՕॴͷڧԽςετ 48

Slide 49

Slide 49 text

͚ͩͲݟಀ͕͠ ͋Δ͔΋ 49

Slide 50

Slide 50 text

ΧφϦΞϦϦʔε 50 ELB EC2 1.3 EC2 1.3 EC2 1.3 EC2 1.3

Slide 51

Slide 51 text

%KBOHPΛҰ෦ϦϦʔε 51 ELB EC2 1.3 EC2 1.3 EC2 1.3 EC2 1.8 EC2 1.3 νϣοτ ͓͡Ό·͠·͢

Slide 52

Slide 52 text

໰୊͕͋ͬͨΒ੾Γ໭͠ 52 ELB EC2 1.3 EC2 1.3 EC2 1.3 EC2 1.3 EC2 1.8 Τϥʔ͓ͯ͜͠ ͝ΊΜͳ͍

Slide 53

Slide 53 text

໰୊ͳ͚Ε͹શ୆ϦϦʔε 53 ELB EC2 1.8 EC2 1.8 EC2 1.8 EC2 1.8 EC2 1.3 EC2 1.3 EC2 1.3

Slide 54

Slide 54 text

ΧφϦΞϦϦʔεಛ༗ͷ໰୊ w ΧφϦΞϦϦʔεΛ͢Δ͜ͱͰൃੜ͢Δ໰୊΋͋Δ w ͭͷ%KBOHPόʔδϣϯ͕ಉ࣌Քಇ͢ΔέʔεΛߟྀ 54

Slide 55

Slide 55 text

1SPCMFN த్൒୺ͳ %#ϚΠάϨʔγϣϯ 55

Slide 56

Slide 56 text

ൃੜࣄ৅ w %KBOHPͷΧφϦΞϦϦʔε࣌ɺ%KBOHP؅ཧαΠτͰϢʔβ௥Ճ Ͱ͖ͳ͍ w %KBOHP؅ཧαΠτ͸$4͕Ϣʔβ؅ཧʹ࢖༻͍ͯ͠Δ 56

Slide 57

Slide 57 text

ΧφϦΞϦϦʔε͍ͯͨ͠ 57 ELB EC2 1.3 EC2 1.3 EC2 1.3 EC2 1.8 MYSQL

Slide 58

Slide 58 text

%KBOHP࡞੒ςʔϒϧͷ όʔδϣϯ͕ 58 EC2 1.3 EC2 1.3 EC2 1.3 EC2 1.8 MYSQL django.auth Table Django 1.3

Slide 59

Slide 59 text

Ͱ͸NJHSBUF͢Ε͹ 59 EC2 1.3 EC2 1.3 EC2 1.3 EC2 1.8 MYSQL django.auth Table Django 1.8

Slide 60

Slide 60 text

Ͳ͏͠Α͏ w ΧφϦΞϦϦʔε͸਺೔ؒߦΘΕΔ w $4νʔϜͷ࡞ۀʹࢧো͕ग़Δ w %KBOHPͱͷ྆ํͰૢ࡞Ͱ͖Δঢ়ଶ͕๬·͍͠ 60

Slide 61

Slide 61 text

%KBOHPͱͷ ྆ํͰಈ͘όʔδϣϯΛ୳͢ 61

Slide 62

Slide 62 text

ϚΠάϨʔγϣϯ಺༰Λௐࠪ 62 auth [ ] 0001_initial [ ] 0002_alter_permission_name_max_length [ ] 0003_alter_user_email_max_length [ ] 0004_alter_user_username_opts [ ] 0005_alter_user_last_login_null [ ] 0006_require_contenttypes_0002 $ python manage.py showmigrations

Slide 63

Slide 63 text

ൃߦ42-Λௐࠪ͢Δ 63 BEGIN; CREATE TABLE `auth_permission` ( `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `name` varchar(50) NOT NULL, `content_type_id` integer NOT NULL, `codename` varchar(100) NOT NULL, UNIQUE (`content_type_id`, `codename`) ); ... $ python manage.py sqlmigrate auth 0001_initial

Slide 64

Slide 64 text

ͪΐ͏Ͳ͍͍ͱ͜·Ͱ ϚΠάϨʔγϣϯ 64 auth [X] 0001_initial [X] 0002_alter_permission_name_max_length [X] 0003_alter_user_email_max_length [X] 0004_alter_user_username_opts [X] 0005_alter_user_last_login_null [ ] 0006_require_contenttypes_0002 $ python manage.py migrate auth 0001_initial --fake $ python manage.py migrate auth 0005_alter_user_last_login_null $ python manage.py showmigrations

Slide 65

Slide 65 text

࢒ͬͨ෦෼͸ શ෦ϦϦʔε͔ͯ͠Β 65 auth [X] 0001_initial [X] 0002_alter_permission_name_max_length [X] 0003_alter_user_email_max_length [X] 0004_alter_user_username_opts [X] 0005_alter_user_last_login_null [ ] 0006_require_contenttypes_0002

Slide 66

Slide 66 text

ͳͥΧφϦΞϦϦʔε w ςετͯ͠΋ຊ൪τϥϑΟοΫ͸ྲྀΕͳ͍ w ࣮ࡍΧφϦΞϦϦʔεͰ͔͠Έ͚ͭΒΕͳ͔ͬͨ΋ ͷ΋͋Δ 66

Slide 67

Slide 67 text

ϦϦʔεશମܭը 67 Django 1.3.7 Django 1.11.18 Django 1.8.18 ΧφϦΞ ϦϦʔε શମ ϦϦʔε ΧφϦΞ ϦϦʔε શମ ϦϦʔε

Slide 68

Slide 68 text

ඞཁͳ΋ͷ͚ͩΛ ΞοϓάϨʔυ͢Δ 68 1 — 3 ——— 7

Slide 69

Slide 69 text

τʔλϧίετΛҙࣝ͢Δ 69 ιʔεमਖ਼ Unit Test मਖ਼ खಈςετ/ը໘ςετ ϦϦʔεޙͷόάൃੜ؂ࢹ ͱʹ͔͘DjangoͷΞοϓάϨʔυΛૣ͘΍Γ͍ͨ Ͱ΋ͦͷमਖ਼ɺຊ౰ʹඞཁʁ

Slide 70

Slide 70 text

τʔλϧίετΛҙࣝ͢Δ 70 ιʔεमਖ਼ Unit Test मਖ਼ खಈςετ/ը໘ςετ ϦϦʔεޙͷόάൃੜ؂ࢹ ιʔεΛमਖ਼͢Δ=मਖ਼͕ਖ਼͍͔͠ςετ͢Δ

Slide 71

Slide 71 text

τʔλϧίετΛҙࣝ͢Δ 71 ιʔεमਖ਼ Unit Test मਖ਼ खಈςετ/ը໘ςετ ϦϦʔεޙͷόάൃੜ؂ࢹ ΋͠मਖ਼͢΂͖ιʔε͕ݮΔͷͰ͋Ε͹ʁ ࡟ݮ

Slide 72

Slide 72 text

τʔλϧίετΛҙࣝ͢Δ 72 ιʔεमਖ਼ Unit Test मਖ਼ खಈςετ/ը໘ςετ ϦϦʔεޙͷόάൃੜ؂ࢹ ͢΂ͯͷ޻ఔʹ͓͍ͯͦͷίετ͸Լ͕Δ ࡟ݮ ࡟ݮ ࡟ݮ ࡟ݮ

Slide 73

Slide 73 text

मਖ਼ର৅֎ͱͳΔ ༨෼ͳॲཧΛௐࠪ 73

Slide 74

Slide 74 text

༨෼ͳॲཧ͸͋ͬͨ w چόʔδϣϯ"1* w ͓Αͼچ"1*Ͱ࡞੒͞ΕͨσʔλΛࢀর͢Δόον w چ؅ཧը໘ 74

Slide 75

Slide 75 text

75 ELB NAT GW MYSQL Aurora EC2 EC2 EC2 ΤϯυϢʔβAPI ؅ཧAPI EC2 όονॲཧ ؅ཧը໘ ഑৴γεςϜ ELB ELB

Slide 76

Slide 76 text

؅ཧ"1*ʹ͸ چόʔδϣϯ͕͋ͬͨ 76 MYSQL ؅ཧAPI چόʔδϣϯ API &؅ཧը໘ چόʔδϣϯ σʔλ ݱόʔδϣϯ API ݱόʔδϣϯ σʔλ چ഑৴ γεςϜ ৽഑৴ γεςϜ چVerސ٬ ݱVerސ٬

Slide 77

Slide 77 text

ݶΒΕͨҰ෦ͷސ٬ͷΈ͕ ࢖༻͍ͯͨ͠ 77 MYSQL ؅ཧAPI چόʔδϣϯ API &؅ཧը໘ چόʔδϣϯ σʔλ ݱόʔδϣϯ API ݱόʔδϣϯ σʔλ چ഑৴ γεςϜ ৽഑৴ γεςϜ چVerސ٬ ݱVerސ٬

Slide 78

Slide 78 text

σʔλޓ׵ੑ͕ͳ͘ چόʔδϣϯͷͨΊʹಈ͘ػೳ͕͋ͬͨ 78 MYSQL ؅ཧAPI چόʔδϣϯ API &؅ཧը໘ چόʔδϣϯ σʔλ چ഑৴ γεςϜ چVerސ٬ چόον όονॲཧ ৽όον

Slide 79

Slide 79 text

࡟ݮͰ͖Ε͹ʁ 79 APIϦιʔε਺ όονॲཧ਺ ݱঢ় 177 28 چόʔδϣϯ ࡟আޙ 59 5 ࠩ෼ -118 -23 ࡟আޙͷൺ཰ 33.33% 17.85%

Slide 80

Slide 80 text

چόʔδϣϯΛ ফ͢ஈऔΓ 80

Slide 81

Slide 81 text

چόʔδϣϯΛফ͢ w چόʔδϣϯʹ͸গ਺ͳ͕Β࢖༻ސ٬͕͍Δ w ސ٬ʹ৽όʔδϣϯʹҠߦͯ͠΋Β͏ w Ӧۀ1.ͱ࿈ܞͯ͠ސ٬ʹΞϓϩʔν͢Δ 81

Slide 82

Slide 82 text

چόʔδϣϯ ҡ࣋ίετͷࢼࢉ w چόʔδϣϯΛҡ࣋͢ΔίετΛ࡟ݮ͢ΔͱͲΕ͚͓ͩಘ ͔Λ਺ࣈʹͨ͠ w ηΩϡϦςΟΞοϓσʔτΛ౰ͯଓ͚Δίετ w ػೳ௥ՃʹΑΔچόʔδϣϯ΁ͷӨڹௐࠪճؼςετ w چόʔδϣϯΛՔಇͤ͞Δαʔόͷίετ 82

Slide 83

Slide 83 text

ҎԼͷύλʔϯΛൺֱ w چόʔδϣϯΛҡ࣋͠ଓ͚ͨ৔߹ w Ұ࣌తʹίετΛ͔͚ͯ৽όʔδϣϯʹҠߦͨ͠৔߹ 83

Slide 84

Slide 84 text

ࢼࢉ׬ྃ 84

Slide 85

Slide 85 text

ࢼࢉ׬ྃ 85 چόʔδϣϯ࡟আίετ͸೥݄·ͰʹϖΠͰ͖Δ

Slide 86

Slide 86 text

86

Slide 87

Slide 87 text

આ໌ձͷ։࠵ w આ໌ࢿྉΛ࡞੒ͯ͠શࣾͷ1.ɺӦۀʹઆ໌ w چ"1*ɺ؅ཧը໘ͷ৽όʔδϣϯͱͷੑೳࠩϝϦσϝ w چόʔδϣϯ࢖༻ऀ΁ͷӨڹͱ50%0ͷઆ໌ 87

Slide 88

Slide 88 text

ސ٬આ໌ w Ӧۀɺ1.αΠυ͔Βݸผʹސ٬ʹઆ໌ w ৔߹ʹΑͬͯ͸ࣗ෼΋ಉߦ w ӦۀϑΟʔυόοΫʹΑΓݸผରԠ͕ඞཁͳސ٬Λબఆ 88

Slide 89

Slide 89 text

چόʔδϣϯഇࢭ͸ ʹܾఆ 89

Slide 90

Slide 90 text

͙͢ʹফͤΔΘ͚Ͱ͸ͳ͍ w ফ͢͜ͱ͕ܾ·ͬͯ΋ഇࢭ೔·Ͱސ٬͸࢖༻͢Δ w چ"1*ɺ؅ཧը໘͸ίʔυ͔Βফͤͳ͍ w ফͤͳͯ͘͸݁ہमਖ਼ίετΛ෷͏ 90

Slide 91

Slide 91 text

چόʔδϣϯ ઐ༻αʔόͷߏங 91

Slide 92

Slide 92 text

ݱঢ়ͷϦϙδτϦ͔Β چόʔδϣϯ༻ΛϑΥʔΫ 92 ݱόʔδϣϯͷϦϙδτϦ (ࠓޙͷϝϯςର৅) چόʔδϣϯ༻ϦϙδτϦ

Slide 93

Slide 93 text

ຊྲྀϦϙδτϦ͔Β چόʔδϣϯ༻ίʔυΛ࡟আ 93 ݱόʔδϣϯͷϦϙδτϦ (ࠓޙͷϝϯςର৅) چόʔδϣϯ༻ϦϙδτϦ ৽ چ ৽ چ

Slide 94

Slide 94 text

چόʔδϣϯ༻ ؅ཧ"1*αʔόΛߏங 94 EC2 چόʔδϣϯ༻؅ཧAPI EC2 ؅ཧAPI ݱঢ়ͷϦϙδτϦ (ࠓޙͷϝϯςର৅) چόʔδϣϯ༻ϦϙδτϦ ݱόʔδϣϯϦΫΤετ چόʔδϣϯϦΫΤετ

Slide 95

Slide 95 text

چόʔδϣϯ༻ ؅ཧ"1*αʔόΛߏங 95 EC2 چόʔδϣϯ༻؅ཧAPI EC2 ؅ཧAPI ݱঢ়ͷϦϙδτϦ (ࠓޙͷϝϯςର৅) چόʔδϣϯ༻ϦϙδτϦ ݱόʔδϣϯϦΫΤετ چόʔδϣϯϦΫΤετ چόʔδϣϯϦΫΤετ

Slide 96

Slide 96 text

چόʔδϣϯͷִ཭͸׬ྃ w چόʔδϣϯͷϦΫΤετ͸͢΂ͯઐ༻αʔόͰॲཧ w ϦϙδτϦ͔ΒچόʔδϣϯΛফͯ͠΋ϦΫΤετ͞Ε ͳ͍ w چόʔδϣϯͰ໰୊ൃੜͨ͠Βॏʹमਖ਼͢Δඞཁ w ϦεΫ͸ವΉ 96

Slide 97

Slide 97 text

࡟ݮͷ݁Ռ 97 Files Lines Code Comments Blanks ࡟ݮલ 431 71835 57995 3798 10042 ࡟ݮޙ 293 50226 40782 2456 6988 ࠩ෼ -138 -21609 -17213 -1342 -3054 ࡟ݮޙͷൺ཰ 67.98% 69.92% 70.32% 64.67% 69.59% Pythonίʔυྔ͕70%ఔ౓·Ͱ཈͑ΒΕͨ

Slide 98

Slide 98 text

αΠΫϧΛߴ଎Խ͢Δ 98 1 —— 4 —— 7

Slide 99

Slide 99 text

Ϣχοτςετ w %KBOHPΞοϓάϨʔυͱϢχοτςετ͸੾ͬͯ΋੾Ε ͳ͍ؔ܎ੑ w मਖ਼ɺϢχοτςετΛԿ౓Ͱ΋܁Γฦ͢ 99

Slide 100

Slide 100 text

Ϣχοτςετ͕஗͔ͬͨ w Ϣχοτςετॴཁ࣌ؒd෼ w Ҏલ͸࣌ؒd࣌ؒͩͬͨ w Ϣχοτςετͷ஗͞͸࡞ۀͷ஗͞ʹ௚݁͢Δ 100

Slide 101

Slide 101 text

Ϣχοτςετͷ࣮ߦ؀ڥ w ηϧϑϗεςΟϯά͞Εͨ(JU-BCϦϙδτϦʹ164)͢ Δͱ(JU-BC3VOOFS͕$*࣮ߦ w QPQJOGPઐ༻3VOOFSͱͯ͠αʔό୆Λ༻ҙ 101 Push Run Unit Test

Slide 102

Slide 102 text

ۚͷ஄ؙͰղܾ w ϢχοτςετΛ࣏͢ख΋͕͓͋ͬͨۚͰղܾͨ͠ w ൚༻Πϯελϯε UTNBMM ͔Β$16࠷దԽΠϯελϯε DMBSHF ʹมߋ w Ϣχοτςετॴཁ࣌ؒ෼·Ͱ࡟ݮ 102 Scale Up

Slide 103

Slide 103 text

"1*ςετͷ࡞੒ w ࠓճ͸1PTUNBOΛ࠾༻ w Ұ୴ਖ਼ৗέʔεͷΈΛ໢ཏతʹγφϦΦͱͯ͠هࡌ w $*ʹ૊ΈࠐΈ 103

Slide 104

Slide 104 text

merge push ։ൃϓϩηε͸੔ͬͨ 104 Python unittest EC2

Slide 105

Slide 105 text

%KBOHPͷ ΞοϓάϨʔυ಺༰Λ ཧղ͢Δ 105 1 ——— 5 — 7

Slide 106

Slide 106 text

ͪͳΈʹࢲ͸શવཧղ ͍ͯ͠ͳ͔ͬͨ 106

Slide 107

Slide 107 text

ԿΑΓઌʹެࣜΛ֬ೝ 107 Upgrading Django to a newer version

Slide 108

Slide 108 text

ΞοϓάϨʔυͷ มߋ఺Λௐ΂Δ w ެࣜʹ͸֤%KBOHPόʔδϣϯͷ࠷ऴϦϦʔεϊʔτΛಡ Ίͱॻ͍ͯ͋Δ w %KBOHPͷ3FMFBTF/PUF͸ඇৗʹ༏ल w ֤όʔδϣϯΞοϓͷ಺༰Λաෆ଍ͳ͘໢ཏͰ͖Δ 108 > Read the release notes for each ‘final’ release from the one after your current Django version, up to and including the version to which you plan to upgrade.

Slide 109

Slide 109 text

ಛʹؾΛ͚͍ͭͨ w ഇࢭ͞Εͨ΋ͷ͸मਖ਼͢ΔͷͰ஫ҙ͕޲͘ w σϑΥϧτڍಈͷมߋ͸࣮ࡍʹಈ͔͢·Ͱؾ͔ͮͳ͍͜ ͱ΋ w طଘϝιου΁ͷ௥ՃΦϓγϣϯ w EKBOHPTFUUJOHT΁ͷઃఆ஋௥Ճ 109

Slide 110

Slide 110 text

ௐ΂͍ͯͳ͍ͱ ͜͏ͳΓ·͢ 110

Slide 111

Slide 111 text

1SPCMFN *OTFSU࣌ σουϩοΫ͢ΔΫΤϦ 111

Slide 112

Slide 112 text

.PEFMTBWF ͷ ΞϧΰϦζϜมߋ w ಛఆϞσϧͷTBWF Λ࣮ߦ͢Δͱ6QEBUFͱ*OTFSU͕࣮ߦ ͞ΕΔΑ͏ʹͳͬͨ w ओΩʔ QSJNBSZ@LFZΦϓγϣϯ͕5SVFͷ*OUFHFS'JFME Λ ΋ͭϞσϧ 112 1.6/Model.save() algorithm changed hoge_id = models.IntegerField(primary_key=True)

Slide 113

Slide 113 text

໰୊ൃੜ࣌ظ 113 Django 1.3.7 Django 1.11.18 Django 1.8.18 ΧφϦΞ ϦϦʔε શମ ϦϦʔε ΧφϦΞ ϦϦʔε શମ ϦϦʔε

Slide 114

Slide 114 text

໰୊ൃੜ w Ͱ͸ൃੜ͠ͳ͍σουϩοΫ͕Ͱ͸ൃੜ͢Δ 114 OperationalError: (1213, 'Deadlock found when trying to get lock; try restarting transaction') w %#ͷΞΠιϨʔγϣϯϨϕϧ͕3&1&"5"#-&3&"%ͩ ͱ

Slide 115

Slide 115 text

ൃੜͤ͞Δํ๏ w ৽نϨίʔυ௥Ճ͢ΔॲཧΛ୹࣌ؒʹ࿈ଓ࣮ߦ w ҰͭͷτϥϯβΫγϣϯ͕׬ྃ͠ͳ͍͏ͪʹ࣍ͷτ ϥϯβΫγϣϯ͕͸͡·Δ͘Β͍ʹ͸ 115

Slide 116

Slide 116 text

.PEFMTBWF ࣮ߦ 116 Model.save() Model.save()

Slide 117

Slide 117 text

࣮ࡍʹൃߦ͞Ε͍ͯΔΫΤϦ 117 BEGIN UPDATE `hoge` SET `foo` = 3, `bar` = 2310, WHERE `hoge_id` = 85524878 INSERT INTO `hoge` (`foo`, `bar`) VALUES (85524878, 3, 2310, 914) BEGIN UPDATE `hoge` SET `foo` = 3, `bar` = 2310, WHERE `hoge_id` = 85524879 INSERT INTO `hoge` (`foo`, `bar`) VALUES (85524879, 3, 2310, 914) SessionA SessionB DeadLock DeadLock

Slide 118

Slide 118 text

࣮ࡍʹൃߦ͞Ε͍ͯΔΫΤϦ 118 BEGIN UPDATE `hoge` SET `foo` = 3, `bar` = 2310, WHERE `hoge_id` = 85524878 INSERT INTO `hoge` (`foo`, `bar`) VALUES (85524878, 3, 2310, 914) BEGIN UPDATE `hoge` SET `foo` = 3, `bar` = 2310, WHERE `hoge_id` = 85524879 INSERT INTO `hoge` (`foo`, `bar`) VALUES (85524879, 3, 2310, 914) SessionA SessionB DeadLock DeadLock ৄ͘͠͸ωΫετΩʔϩοΫͰ ௐ΂ͯΈ͍ͯͩ͘͞

Slide 119

Slide 119 text

ରԠํ๏ w *OTFSUΛ໌ࣔతʹࢦఆ͢Δ w .PEFMPCKFDUTDSFBUF w .PEFMTBWF GPSDF@JOTFSU5SVF 119

Slide 120

Slide 120 text

༨ஊ ௐࠪํ๏ 120

Slide 121

Slide 121 text

.:42-ͷϩά͔Β ର৅ςʔϒϧΛ֬ೝ 121 mysql> SHOW ENGINE INNODB STATUS 2019-01-16 09:33:07 2acb1339d700 *** (1) TRANSACTION: TRANSACTION 45525172536, ACTIVE 0 sec inserting mysql tables in use 1, locked 1 LOCK WAIT 14 lock struct(s), heap size 2936, 6 row lock(s), undo log entries 4 MySQL thread id 210690, OS thread handle 0x2acb433de700, query id 1591163 ec2-52-193-113-252.ap-northeast-1.compute.amazonaws.com 52.193.113.252 popinfo update INSERT INTO `delivery_indexedmessage` (`infobase_id`, `delivery_state`, `operator_id`, `shop_id`) VALUES (85524410, 3, 2310, 914) *** (1) WAITING FOR THIS LOCK TO BE GRANTED: RECORD LOCKS space id 965 page no 274660 n bits 488 index `PRIMARY` of table `popinfo`.`delivery_indexedmessage` trx id 45525172536 lock_mode X insert intention waiting Record lock, heap no 1 PHYSICAL RECORD: n_fields 1; compact format; info bits 0 0: len 8; hex 73757072656d756d; asc supremum;; *** (2) TRANSACTION: TRANSACTION 45525172535, ACTIVE 0 sec inserting mysql tables in use 1, locked 1 14 lock struct(s), heap size 2936, 6 row lock(s), undo log entries 4 MySQL thread id 210689, OS thread handle 0x2acb1339d700, query id 1591164 ec2-52-193-113-252.ap-northeast-1.compute.amazonaws.com 52.193.113.252 popinfo update INSERT INTO `delivery_indexedmessage` (`infobase_id`, `delivery_state`, `operator_id`, `shop_id`) VALUES (85524409, 3, 2310, 914) *** (2) HOLDS THE LOCK(S): RECORD LOCKS space id 965 page no 274660 n bits 488 index `PRIMARY` of table `popinfo`.`delivery_indexedmessage` trx id 45525172535 lock_mode X Record lock, heap no 1 PHYSICAL RECORD: n_fields 1; compact format; info bits 0 0: len 8; hex 73757072656d756d; asc supremum;; *** (2) WAITING FOR THIS LOCK TO BE GRANTED: RECORD LOCKS space id 965 page no 274660 n bits 488 index `PRIMARY` of table `popinfo`.`delivery_indexedmessage` trx id 45525172535 lock_mode X insert intention waiting Record lock, heap no 1 PHYSICAL RECORD: n_fields 1; compact format; info bits 0 0: len 8; hex 73757072656d756d; asc supremum;;

Slide 122

Slide 122 text

ൃߦ42-Λ֬ೝ 122 sudo tcpdump -i eth0 -s 0 -w - port 3306 | strings SELECT ... UPDATE ... Djangoαʔόʹೖͬͯtcpdump͔Βൃߦ͍ͯ͠ΔSQLΛऔಘ͢Δ

Slide 123

Slide 123 text

1SPCMFN ಥવ༗ޮʹͳΔ ϦΫΤετϘσΟ্ݶ 123

Slide 124

Slide 124 text

ϦΫΤετϘσΟ ࠷େαΠζ੍ݶͷ௥Ճ w %KBOHPʹର͢ΔϦΫΤετϘσΟͷαΠζ੍ݶΛߦ͏ w σϑΥϧτ஋.# w EKBOHPTFUUJOHTʹهࡌ͕ͳ͘ͱ΋੍ݶ͞ΕΔ 124 1.10/Maximum size of a request body and the number of GET/POST parameters is limited DATA_UPLOAD_MAX_MEMORY_SIZE

Slide 125

Slide 125 text

໰୊ൃੜ࣌ظ 125 Django 1.3.7 Django 1.11.18 Django 1.8.18 ΧφϦΞ ϦϦʔε શମ ϦϦʔε ΧφϦΞ ϦϦʔε શମ ϦϦʔε

Slide 126

Slide 126 text

໰୊ൃੜ w ސ٬ͷϦΫΤετ͕ࣦഊ w େ༰ྔͷϦΫΤετϘσΟΛࡌͤͨ΋ͷͷΈ 126

Slide 127

Slide 127 text

ରԠํ๏ w /HJOYV8THJͰରԠ͢ΔͷͰ%KBOHPଆͰ͸ແޮʹ 127 DATA_UPLOAD_MAX_MEMORY_SIZE=None

Slide 128

Slide 128 text

1SPCMFN ϦμΠϨΫτઌ͕ ૬ରύεʹ 128

Slide 129

Slide 129 text

)551ϦμΠϨΫτઌ͕ ઈର63*͔Β૬ର63*ʹ w 3'$͸ϦμΠϨΫτϨεϙϯεͷ-PDBUJPOϔομ ͕ઈର63*ͱͳΔ͜ͱΛڧ੍ w 3'$Ͱ-PDBUJPOͷ૬ର63*ΛڐՄ 129 )551SFEJSFDUTOPMPOHFSGPSDFEUPBCTPMVUF63*T

Slide 130

Slide 130 text

ͭ·Γ͜͏͍͏͜ͱ 130 Location: "https://docs.djangoproject.com/en/2.1/ releases/1.9/" Location: "/en/2.1/releases/1.9/" 1.8ͷϦμΠϨΫτ 1.9ͷϦμΠϨΫτ

Slide 131

Slide 131 text

໰୊ൃੜ࣌ظ 131 Django 1.3.7 Django 1.11.18 Django 1.8.18 ΧφϦΞ ϦϦʔε શମ ϦϦʔε ΧφϦΞ ϦϦʔε શମ ϦϦʔε

Slide 132

Slide 132 text

໰୊ൃੜ w ಛఆͷސ٬͕ࣗࣾγεςϜ͕QPQJOGP"1*Λίʔϧ͢Δͱ ΤϥʔʹͳΔͱͷใࠂ w গ͠ಛघͳίʔϧํ๏Λ͍ͯͨ͠ 132

Slide 133

Slide 133 text

มߋલ 133 https://nyan.jp/hoge "Location": "https://nyan.jp/hoge/" https://nyan.jp/hoge/ ސ٬αʔό ؅ཧAPI Django 1.8 αʔό

Slide 134

Slide 134 text

มߋޙ 134 https://nyan.jp/hoge "Location": "/hoge/" /hoge/ ސ٬αʔό ؅ཧAPI Django 1.11 αʔό

Slide 135

Slide 135 text

ରԠํ๏ w ΧελϜϛυϧ΢ΣΞΛ௥Ճ͢Δ͜ͱͰɺҎલͷڍಈΛҡ ࣋Ͱ͖Δ 135 class LocationHeaderFix(object): def process_response(self, request, response): if 'Location' in response: response['Location'] = request.build_absolute_uri(response['Location']) return response

Slide 136

Slide 136 text

1SPCMFN ۭനจࣈྻͷ όϦσʔγϣϯมߋ 136

Slide 137

Slide 137 text

'PSN$IBS'JFME͕ ۭจࣈྻΛ࡟আ w $IBS'JFMEͷॳظԽҾ਺ʹTUSJQ͕௥Ճ w TUSJQ5SVFͷ৔߹ɺ'PSNೖྗ஋ͷલޙۭനΛআڈ w σϑΥϧτ͕5SVF 137 1.9/Forms

Slide 138

Slide 138 text

໰୊ൃੜ࣌ظ 138 Django 1.3.7 Django 1.11.18 Django 1.8.18 ΧφϦΞ ϦϦʔε શମ ϦϦʔε ΧφϦΞ ϦϦʔε શମ ϦϦʔε

Slide 139

Slide 139 text

มߋલ 139 ސ٬αʔό ؅ཧAPI Django 1.8 αʔό https://nyan.jp/add { "title": "ೣ" "contents": " " } OK

Slide 140

Slide 140 text

มߋલ 140 ސ٬αʔό ؅ཧAPI Django 1.8 αʔό https://nyan.jp/add { "title": "ೣ" "contents": " " } OK contents = forms.CharField( required=True, )

Slide 141

Slide 141 text

มߋޙ 141 ސ٬αʔό ؅ཧAPI Django 1.11 αʔό https://nyan.jp/add { "title": "ೣ" "contents": " " } όϦσʔγϣϯΤϥʔ

Slide 142

Slide 142 text

มߋޙ 142 ސ٬αʔό ؅ཧAPI Django 1.11 αʔό https://nyan.jp/add { "title": "ೣ" "contents": " " } όϦσʔγϣϯΤϥʔ Form { "title": "ೣ" "contents": "" }

Slide 143

Slide 143 text

ରԠํ๏ 143 contents = forms.CharField( required=True, strip=False, )

Slide 144

Slide 144 text

Ͷɻ3FMFBTF/PUF͸ ༏लͰ͠ΐ͏ w ϦϦʔε࣌ʹ౿ΜͩΤϥʔݪҼ͸͢΂ͯهࡌ͕͞Ε͍ͯͨ w ࣄલʹಡΜͰ֬ೝ͓͚ͯ͠͹ϦϦʔεͨ͋͠ͱʹސ٬ʹ ౖΒΕΔ͜ͱ΋ͳ͔͔ͬͨ΋͠Εͳ͍ 144

Slide 145

Slide 145 text

पΓͷ ϓϩϑΣογϣφϧΛཔΔ 145 1 ———— 6 7

Slide 146

Slide 146 text

͋ͳͨ͸ҰਓͰ͸ͳ͍ w %KBOHPΞοϓάϨʔυΛ͍ͯ͠Δͱࣗ෼͚ͩͰ͸Ͳ͏͠ Α͏΋ͳ͍໰୊ʹ౰ͨΔ͜ͱ΋͋Δ w ͦΜͳͱ͖͸͋ͳͨͷपΓʹ͍ΔϓϩϑΣογϣφϧ ͷҙݟΛฉ͘΂͖ 146

Slide 147

Slide 147 text

1SPCMFN ٸ্ঢ͢ΔϨΠςϯγ 147

Slide 148

Slide 148 text

%KBOHPʹ͸ਪ঑͞ΕΔ 1ZUIPOͷόʔδϣϯ͕͋Δ w %KBOHPެࣜΛݟͯΈΔͱ্هͷදه w ݱঢ়1ZUIPOͳͷͰਪ঑όʔδϣϯͰ͸ͳ͍ 148 > Since newer versions of Python are often faster, have more features, and are better supported, all else being equal, we recommend that you use the latest 2.x.y or 3.x.y release. 8IBU1ZUIPOWFSTJPOTIPVME*VTFXJUI%KBOHP

Slide 149

Slide 149 text

໰୊ൃੜ࣌ظ 149 Django 1.3.7 Django 1.11.18 Django 1.8.18 ΧφϦΞ ϦϦʔε શମ ϦϦʔε ΧφϦΞ ϦϦʔε શମ ϦϦʔε

Slide 150

Slide 150 text

ΛͿΒԼ͛ͨ ΠϯελϯεͷϨΠςϯγ͕ٸ্ঢ 150 NAT GW MYSQL Aurora EC2 EC2 ΠϕϯτऩूAPI EC2 ΤϯυϢʔβAPI ؅ཧAPI ഑৴γεςϜ ELB ؅ཧը໘ ELB ELB

Slide 151

Slide 151 text

/"5(BUFXBZܦ༝ͷ ௨৴ͷࢼߦճ਺͕ٸ্ঢ 151 NAT GW MYSQL Aurora EC2 EC2 ΠϕϯτऩूAPI EC2 ΤϯυϢʔβAPI ؅ཧAPI ഑৴γεςϜ ELB ؅ཧը໘ ELB ELB

Slide 152

Slide 152 text

ҰԠղܾ͸͕ͨ͠ ݪҼ͸Θ͔Βͣ 152

Slide 153

Slide 153 text

ݪҼௐࠪ w αʔόʹUDQEVNQΛ࢓ֻ͚ͯ௨৴Λμϯϓ w 8JSFTIBSLͰղੳͯ͠ݪҼΛௐࠪ 153

Slide 154

Slide 154 text

ݪҼௐࠪ w %KBOHP͔Β%#΁ͷ઀ଓͰ5$1ͷXBZϋϯυγΣΠΫத ʹҟৗ͕͋ͬͨ w ҟৗ࣌ʹ઀ଓϦτϥΠ w ϦτϥΠ࣌ඵ଴ͭ Χʔωϧύϥϝʔλґଘ 154

Slide 155

Slide 155 text

ਖ਼ৗͳ8BZϋϯυγΣΠΫ 155 ΞΫςΟϒΦʔϓϯ (APIαʔό) ύογϒΦʔϓϯ (DBαʔό) SYN SYN/ACK ACK

Slide 156

Slide 156 text

ҟৗͳ8BZϋϯυγΣΠΫ 156 ΞΫςΟϒΦʔϓϯ (APIαʔό) ύογϒΦʔϓϯ (DBαʔό) SYN ACK RST ϦτϥΠ࣮ߦ

Slide 157

Slide 157 text

ਪଌ w ύογϒΦʔϓϯ %#αʔόଆ ͕઀ଓऴྃ࣌ʹιέοτ ΛΫϩʔζͰ͖͍ͯͳ͍ 4UBUF͕&TUBCMJTIFEͳ͍͠'*/ 8"*5 w Ϋϩʔζ͍ͯ͠ͳ͍ιέοτʹ઀ଓ͔ͨ͠Β͍͖ͳΓ "$,͕ฦΔ w "1*(BUFXBZ͕தܧ࣌ʹޡͬͨϙʔτʹ޲͚͍ͯΔ ͷͰ͸ʁ 157

Slide 158

Slide 158 text

ݪҼΘ͔Βͣ ͜ͷؒҰϲ݄΄Ͳ ຖ೔8JSFTIBSLͱ%KBOHPͷιʔεΛோΊΔ 158

Slide 159

Slide 159 text

౰ͨͬͯࡅ͚Δ͜ͱʹͨ͠ w ݪҼ͕Θ͔Βͳ͍ͳΒ53:&3303͢Δ͔͠ͳ͍ w ΍Γଓ͚Ε͹͖͔͚͕ͬ௫ΊΔ͔΋͠Εͳ͍ 159

Slide 160

Slide 160 text

53: 8BZϋϯυγΣΠΫݮΒ͢ w XBZϋϯυγΣΠΫճ਺͕ݮΕ͹345ݮΔͷͰ͸ w %KBOHPTFUUJOHʹ$0//@."9@"(&Λ௥Ճ w ϓϩηεຖʹ%#઀ଓΛࢦఆඵ਺ҡ࣋͢Δ 160

Slide 161

Slide 161 text

คࡅ 161

Slide 162

Slide 162 text

53: .:42-υϥΠόߋ৽ w .:42-υϥΠό͕ݹ͘%KBOHP૬ੑ͕ѱ͍ͷͰ͸ w .Z42-υϥΠόʔΛ࠷৽όʔδϣϯʹߋ৽ 162

Slide 163

Slide 163 text

ۄࡅ 163

Slide 164

Slide 164 text

΋͏%KBOHPΛ ϦϦʔε͢Δ͜ͱ͸Ͱ͖ͳ͍ ͷ͔΋͠Εͳ͍ʜ 164

Slide 165

Slide 165 text

ίʔώʔϒϨΠΫதͷࡶஊ 165 Python 2.7.9͋ͨΓͰ SSLͷԿ͔มߋ͋ͬͨΑͶʁ ͦ͜·Ͱ͋͛Ε͹ͳΜ͔͋Δ͔΋ ಉ྅ͷHayao Suzukiࢯ ΋͒·ͫΉΓ Wireshark΋͏ݟͨ͘ͳ͍Α͒

Slide 166

Slide 166 text

ެࣜΛ೷͍ͯΈΔ 166

Slide 167

Slide 167 text

53: 1ZUIPOͷΞοϓάϨʔυ w %KBOHPͷਪ঑͢Δ1ZUIPOόʔδϣϯͰ͸ͳ͍͔ΒͰ͸ w 1ZUIPOͷόʔδϣϯΛʹߋ৽ 167

Slide 168

Slide 168 text

େ׃ࡃ ࣏ͬͨ 168

Slide 169

Slide 169 text

%KBOHPͷ ΞοϓάϨʔυ࣌ʹ͸ ಉ࣌ʹ1ZUIPOΛ ਪ঑όʔδϣϯʹ͠·͠ΐ͏ 169

Slide 170

Slide 170 text

Ұਓͷࢹ໺͸ڱ͍ w ϨΠςϯγ໰୊͸໰୊ղੳ͔Βमਖ਼ҊͷཱҊ·Ͱଟ͘ͷਓ ʹڠྗΛڼ͍ͩ w UDQEVNQ XBZIBOETIBLF ͳʹͦΕඒຯ͍͠ͷ w Ұਓ͚ͩͰߟ͍͑ͯͨΒະͩʹ%KBOHP͸͔ͩͬͨ΋͠ Εͳ͍ 170

Slide 171

Slide 171 text

ΞοϓάϨʔυͷ ׬ྃ͸ऴΘΓͰ͸ͳ͍ 171 1 ————— 7

Slide 172

Slide 172 text

࣍ʹ΍Δ΂͖͜ͱ͸ ͍͘ΒͰ΋͋Δ w 1ZUIPO w ·Ͱ w %KBOHP w ·Ͱ 172

Slide 173

Slide 173 text

कΓ͔Β߈ΊʹసͣΔ w αϙʔτ੾ΕͷରԠʹ௥ΘΕΔͷ͸͜͜·Ͱ w ߃ৗతʹΞοϓάϨʔυର৅ͷൃݟͱղܾΛߦ͏ଶ੎ ͷߏங w ࠓճͷΞοϓάϨʔυͷͨΊʹߏஙͨ͠αΠΫϧΛΑΓ ߴ଎Խ w ൃੜͨ͠όάʹର͢Δख౰ 173

Slide 174

Slide 174 text

·ͱΊ 174

Slide 175

Slide 175 text

ͳͥΞοϓάϨʔυ͕ඞཁ͔ߟ͑Δ ΰʔϧʹ͍͖ͳΓ޲͔Θͳ͍ ඞཁͳ΋ͷ͚ͩΛΞοϓάϨʔυ͢Δ αΠΫϧΛߴ଎Խ͢Δ %KBOHPͷΞοϓάϨʔυ಺༰Λཧղ͢Δ पΓͷϓϩϑΣογϣφϧΛཔΔ ΞοϓάϨʔυ͸ऴΘΓͰ͸ͳ͍ 175

Slide 176

Slide 176 text

͝ਗ਼ௌ ͋Γ͕ͱ͏ ͍͟͝·ͨ͠ 176