Slide 1

Slide 1 text

͸ͯͳͷΠϯϑϥ؀ڥ Λࣗ୐Ͱ࠶ݱ͢Δ :"1$)PLLBJEP

Slide 2

Slide 2 text

ࣗ୐ͷ༷ࢠ

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

෺ཧαʔό: 3୆ (+1୆) Ծ૝αʔό: 40୆ L3εΠον: 1୆ (+1୆) Քಇதͷ୆਺ ()಺͸ઃఆதͷ୆਺

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

YAPC::Hokkaidoͷൃදه೦ʹ αʔόΛ૿ڧ͠·ͨ͠ (10ສ)

Slide 7

Slide 7 text

ࣗݾ঺հ

Slide 8

Slide 8 text

ࣗݾ঺հ • id:masayoshi (yoyogidesaiz) • גࣜձࣾ͸ͯͳ (2016೥4݄ೖࣾ) • YAPC ॳࢀՃͰ͢ • ֶੜ࣌୅͸αʔό؂ࢹͷΞϧόΠτ • ݱࡏ͸WebΦϖϨʔγϣϯΤϯδχΞͷج൫νʔϜ

Slide 9

Slide 9 text

ΞδΣϯμ • ॳΊʹ • ࢲͳΓͷߟ͑ํͱษڧํ๏ • ࣗ୐αʔόͷߏ੒঺հ • ·ͱΊ

Slide 10

Slide 10 text

1 ॳΊʹ

Slide 11

Slide 11 text

৽ଔ࠷ॳͷ3ϲ݄

Slide 12

Slide 12 text

• 4݄ ݚम
 http://developer.hatenastaff.com/entry/2016-newbie-training-of-web-operation • 5݄ ࣾ಺ͷωοτϫʔΫ֮͑·͔ͨ͠?
 ֎෦τϥϑΟοΫͷଳҬ૿΍͍ͯͩ͘͠͞ • 6݄ ωοτϫʔΫઃܭ͍͍ײ͡ʹ͓ئ͍͠·͢ • ͦͷޙɺج൫νʔϜ͕ൃ଍͠ϝϯόʔʹ

Slide 13

Slide 13 text

ج൫νʔϜ(3໊) • ࣗࣾͷΠϯϑϥಛੑΛ೺Ѳ͍͍ͯ͠ײ͡ʹ͢Δ • αʔϏε਺͕ଟ͍(10αʔϏεҎ্) • DC + AWS + ͘͞Βͷઐ༻αʔό • 5,10೥ར༻͞ΕΔαʔϏε • ෺ཧ,Ծ૝αʔό͸1000୆Ҏ্

Slide 14

Slide 14 text

ࠓҎ্ʹษڧ͠ͳ͍ͱϚζΠ

Slide 15

Slide 15 text

ͱ͍͏͜ͱͰ

Slide 16

Slide 16 text

΋͏͜Ε͸ ࣗ୐ͰձࣾͷΠϯϑϥΛ ਅࣅͯΈΔ͔͠ͳ͍ʂ

Slide 17

Slide 17 text

ͱ͍͏͜ͱʹͳͬͨ

Slide 18

Slide 18 text

2 ࢲͳΓͷ ߟ͑ํͱษڧํ๏

Slide 19

Slide 19 text

ษڧ͸టष͘ ࢓ࣄ͸εϚʔτʹ (΍Γ͍ͨͱࢥ͍ͬͯΔ)

Slide 20

Slide 20 text

࢓ࣄ͸… • ॏཁͳ͜ͱ • ϢʔβʹαʔϏε(Ձ஋)Λಧ͚Δ͜ͱ • ࣌ؒత੍໿ • ௅ઓͱ҆ఆͷόϥϯε • ͍࣋ͬͯΔٕज़ɺ஌ࣝͰΨϯΨϯԥΔ • ศརɺར༻͞Ε͍ͯΔ΋ͷΛੵۃతʹ࢖͏

Slide 21

Slide 21 text

ษڧ͸… • ࣌ؒΛֶ͔͚ͯΜͰྑ͍ • Ұͭͷ͜ͱΛஸೡʹਂ۷Γ • ۚ͸ͳ͍ɺ࣌ؒ͸͔͚ͯ΋Α͍ • ஍ཕ͸౿Μͩ਺͚ͩڧ͘ͳΔ • ͋ɺʙͰݟͨ͜ͱ͋Δ΍ͭͩ • ஍ཕௐࠪ͸ਂ۷Γ͢Δ͍͍νϟϯε

Slide 22

Slide 22 text

࣌ؒΛ͔͚ͯਂ۷Γ

Slide 23

Slide 23 text

࡞ΔਅࣅΔ৮Δฉ͘ ಡΉ ೉͍͠ ͔͔࣌ؒΔ Α͘Θ͔Δ ؆୯ ͙͢ग़དྷΔ Α͘Θ͔ΒΜ

Slide 24

Slide 24 text

ֶ෦3೥ͷࠒͷษڧํ๏ • ਓ͔Βฉ͘ɺٕज़ϒϩάͱ͔ಡΉ • LinuxͷίϚϯυͱ͔ • શવ֮͑ΒΕͳ͍͠ɺΘ͔ΒΜ • ͱΓ͋͑ͣܰ͘৮ͬͯΈΔ • ՈͷϊʔτPCΛLinuxʹ͢Δ • wordpressͱ͔Λߏஙͯ͠ΈͨΓ

Slide 25

Slide 25 text

৮Δ͚ͩͷݶք • ߏஙखॱΛ֮͑Δ͜ͱ͕ٕज़ྗ? • εΫϦϓτͱ͔ChefͰࣗಈԽग़དྷΔΒ͍͠ • ઃఆ߲໨Λ֮͑Δ͜ͱ͕ॏཁ? • Ͳ͏ͯͦ͠ͷઃఆΛ͢Δͱ଎͘ͳΔͷ͔͕ॏཁ • ϛυϧ΢ΣΞ͸Ͳ͏΍ͬͯબ΂͹ྑ͍? • ಓ۩ͷ࢖͍ํ΋ॏཁ͚ͩͲબͼํ΋௒ॏཁ

Slide 26

Slide 26 text

ܰ͘৮ͬͨΓɺ ฉ͘ɺಡΉఔ౓Ͱ͸ ৽͍͠΋ͷΛ࡞੒ɺઃܭ͸೉͍͠ ౰ͨΓલ͕ͩ

Slide 27

Slide 27 text

ֶ෦4೥Ҏ߱ͷษڧํ๏ • αʔό؂ࢹͷΞϧόΠτ • ϛυϧ΢ΣΞɺෛՙ෼ࢄɺ৑௕ԽͳͲͷߏ੒ྫ • ਅࣅΔͨΊͷ࣮ྫ • ݚڀ • ιϑτ΢ΣΞϧʔλ࡞੒ɺϓϩτίϧͷௐࠪͳͲ • ඞཁͳجૅ஌ࣝͷษڧͱ࣮૷

Slide 28

Slide 28 text

ਅࣅͯ࡞ͬͨΓมߋͨ͠Γ • ߏ੒ྫͷߏஙࣗಈԽνϟϨϯδ • ৚݅ΛՃ͑ͯɺͦΕʹ͋͏Α͏ʹߏ੒ྫΛมߋ͢Δ • ݸਓతʹ͸”റΓϓϨΠ”ͱݺΜͰ͍Δ (ແఀࢭറΓͱ͔) • େม͚ͩͲҰ͔Β࡞ͬͯΈΔ • ϥΠϒϥϦͷ࠶࣮૷ͱ͔ • ϛυϧ΢ΣΞͳͲͷҰ෦Λ؆қ࣮૷ • ιέοτϓϩάϥϛϯάͰpreforkܕͱeventܕͱ͔

Slide 29

Slide 29 text

ಘΒΕΔ΋ͷ(ͦͷ1) • ఆੴͷϝϦοτɺσϝϦοτֶ͕΂Δ • બ୒ࢶΛ૿΍ͤΔɺ൑அج४͕ग़དྷΔ • ҰͭԼͷϨΠϠʔֶ͕΂Δ (syscall, OS, Network,..) • ҧ͏ϛυϧ΢ΣΞͷཧղʹ໾ཱͭ • ஌͕ࣝ޿͕Δ • ෼͔ͬͨ”ͭ΋Γ”෦෼ͷ೺Ѳ • ͳΜ͔ٕज़ϒϩάɺຊͱ͔Ͱ஌ͬͨؾʹͳͬͯͨ • צҧ͍ɺࢥͬͨΑΓ~ͩͬͨ

Slide 30

Slide 30 text

ಘΒΕΔ΋ͷ(ͦͷ2) • ײ૝ͱٙ໰఺ (ෳࡶ,γϯϓϧ, ଎͍, ஗͍, ָ, ͭΒ ͍, …) • ΈΜͳͲ͏͍ͯ͠ΔΜͩΖ͏? • ͭΒ͍ͷ͸૝ఆ͞Εͨ࢖ΘΕํ͡Όͳ͍͔Β͔ ΋ • ͔ͩΒ͜͏͍͏࣮૷ͳͷ͔~ • ݁ہ͕͜͜໰୊ͳΜͩΑͳ͊ • ଞʹ΋ͬͱద࣮ͨ͠૷͕͋ΔͷͰ͸? • ͳ͍ͳΒ࡞Δ͔(ͱݴ͑Δͱ͔͍͍ͬ͜)

Slide 31

Slide 31 text

ྫ͑͹ ιϑτ΢ΣΞϧʔλ࡞੒

Slide 32

Slide 32 text

࡞Δͱ͖ͷֶͼྫ (checksum) • 1ͷิ਺? 2ͷิ਺ͳΒΑ͘࢖͏͚Ͳͳ͊ • L2Ͱ΋L3Ͱ΋L4Ͱ΋νΣοΫαϜܭࢉ͢Μͷ͔Α • ٙࣅϔομΛ͚ͭͯܭࢉ? IPΞυϨε͕͋Δ
 ͱ͍͏͜ͱ͸IPΞυϨεॻ͖׵͑ͨΒL4ܭࢉ͠௚͠? • ͳΜ͔஗͍….γϑτԋࢉͱ͔Ͱ΍ͬͯΔͷʹͳ͊ • kernelͲ͏΍ͬͯΜͩ? ΞηϯϒϦ͔Α… • νΣοΫαϜΦϑϩʔυ? ଎͍! ϋʔυ΢ΣΞ࠷ߴ! • Μ? Ծ૝Ϛγϯ͸ԿʹΦϑϩʔυͯ͠Μͷ? • xenͩͬͨΒxen-netbackͱ͔ʹͦΕͬΆ͍ͷ͋Δͳ͊ʔ

Slide 33

Slide 33 text

࡞Δͱ͖ͷֶͼྫ (ͦͷଞ) • ͏΁͐…౸ணύέοτͷฒͼସ͑ΊͬͪΌ஗͍… • TCPͷΦϓγϣϯϑΟʔϧυ?
 Linux͸σϑΥϧτͰtimestamp࢖͍ͬͯΔͷ͔… • ωοτϫʔΫͷ଎౓ײͩͱϝϞϦίϐʔ͸஗͍… • CPU͕1ίΞʹுΓ෇͘~ͱ͜ΖͰsoftirqͬͯͳʹ? • kernelͷωοτϫʔΫελοΫ͕ϘτϧωοΫ?͑? • DPDKࢯ~ པΉ~

Slide 34

Slide 34 text

࿩Λ໭ͯ͠

Slide 35

Slide 35 text

ં֯ࣾ಺ͷΠϯϑϥͷத਎͕ݟΕΔͷͰ ՈͰਅࣅͯΈΑ͏

Slide 36

Slide 36 text

3 ࣗ୐αʔόͷߏ੒঺հ

Slide 37

Slide 37 text

ࣾ಺ͷΠϯϑϥΛਅࣅΔϝϦοτ • WebαʔϏεܥͷΠϯϑϥج൫ͷఆੴΛֶ΂Δ • ࠓͰ΋௨༻͢Δےͷྑ͍ઃܭ • ࠓͰ͸ݹ͍ɺطʹഁ୼ͨ͠Ξϯνύλʔϯ • ͪΐ͏ͲΑ͍ن໛ײ • খن໛Ϋϥ΢υ, ࣮૷͕௥͍͖ΕΔ • ౰࣌ͷઃܭऀͷҙਤɺؾ͕࣋ͪ෼͔Δ • ࣾ಺ݻ༗ͷࣄ৘(ن໛, ίετ)Λ഑ྀͨ͠ઃܭ • ؆୯ͦ͏Ͱ೉͍͠, ౰࣌͸࢖͑ͳ͔ͬͨ

Slide 38

Slide 38 text

ਅࣅΔͱ͜Ζ͸ਅࣅ͍͍ͯײ͡ʹ • ศརͳͱ͜Ζ͸ਅࣅ͍ͯ͘ • ҧ͏΋ͷࢼ͍ͨ͠ͱ͜Ζ͸ม͑Δ • ґଘؔ܎ʹ͸஫ҙ͠ͳ͕Βߏங͍ͯ͘͠ • Ոͱձࣾͷن໛ײΛҙࣝ͢Δ • ՄೳͳݶΓ৽͍͠όʔδϣϯͰ࡞Δ • ͍͍ײ͡ʹͳͬͨΒࣾ಺ಋೖ • ָ͠Ήʂ

Slide 39

Slide 39 text

ͱ͍͏͜ͱͰ࣌ؒ͋Δ͔͗Γ঺հ • ωοτϫʔΫߏ੒ • ෺ཧαʔόͷηοτΞοϓ • Ծ૝αʔόͷηοτΞοϓ • ϓϩϏδϣχϯά • ෛՙ෼ࢄɺ৑௕Խ • WebΞϓϦέʔγϣϯ

Slide 40

Slide 40 text

ωοτϫʔΫߏ੒ %PN &BTU )PNF 0QF 0QFSBUJPO CS CS %PN6 %PN6 %PN %PN6 %PN6 %PN %PN6 %PN6 CS 8FTU &9 +VOPT CS CS CS CS CS 394 %FCJBO YFO 594 7Z04 $PSF

Slide 41

Slide 41 text

෺ཧαʔόͷηοτΞοϓ • Debian Stretch + Xen4.6 • ஌Βͳ͍͏ͪʹ࠶ىಈ • Φϑϩʔυ༗ޮʹ͢Δͱ1࣌ؒޙ͙Β͍ʹigb͕Τϥʔ • vif͕4ͭ·Ͱ͔͠࡞Εͳ͍ • ηοτΞοϓ͸PXEϒʔτ+Preseed • ϒʔτબ୒ͨ͠ΒࣗಈͰOSΠϯετʔϧ • ࡉ͔͍ͷ͸ىಈޙʹAnsibleͰ੔͑Δ

Slide 42

Slide 42 text

Ծ૝αʔόͷηοτΞοϓ • ࣾ಺ • Ծ૝CPU਺ɺϝϞϦɺσΟεΫαΠζΛਓ͕ࢦఆ • IP, ϗετ໊؅ཧ͸ߏ੒؅ཧπʔϧ, Mackerelʹొ࿥ • ࣗ୐ • NUMAΛҙࣝͨ͠ΠϯελϯελΠϓͷఆٛͱಋೖ • xen 4.5͔Β͍͍ײ͡ͷεέδϡʔϥ • IP,ϗετ໊؅ཧ͸Mackerel • ໊લղܾ͸consul(0.7)ͱPowerDNS(4.0.1)

Slide 43

Slide 43 text

ϓϩϏδϣχϯάͱ͔ • ࣾ಺ • Chef + Capistrano + Jenkins • ࣗ୐ • Ansible + Fabric + Rundeck

Slide 44

Slide 44 text

ෛՙ෼ࢄɺ৑௕Խ • ࣾ಺ • LVS+keepalived, HAProxy • ࣗ୐ • LVS+keepalivedͱconsul • Seesawͱ͔ࢼͯ͠Έ͍ͨ • ࣗ࡞

Slide 45

Slide 45 text

WebΞϓϦέʔγϣϯ • ISUCONͷ໰୊Λ࢖༻ • ؆қ࣮૷ͳͷͰ৭ʑ֬ೝ͠΍͍͢ • ϕϯνϚʔΫ͕͋Δ • ଞͷํͱൺֱɺ࿩͕ग़དྷΔ • ·ͩ࡞Ε͍ͯͳ͍͕ࣗ࡞͍ͨ͠ • PerlͰҰͭԿ͔࡞Γ͍ͨ

Slide 46

Slide 46 text

ࣗ୐αʔόͷྑ͞ • ؾܰʹෛՙ͔͚ΒΕΔ • ωοτϫʔΫ·ͰݟΕΔ • ୆਺ؾʹ͠ͳ͍ͰݐͯΒΕΔ • 10୆Ҏ্ͳΒίετ҆͘ͳΔ? • ෺ཧɺԾ૝ɺίϯςφͳΜͰ΋બ΂Δ • ϋΠύʔόΠβʔͷϩάݟΕΔ • ਂ۷Γ͢Δʹ͸࠷దʂ

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

ࣗ୐αʔόָ͍͠ʂ

Slide 49

Slide 49 text

4 ·ͱΊ

Slide 50

Slide 50 text

·ͱΊ • ͸͊ʙࣗ୐αʔόͨͷ͌͠ʙ • ؆қͳ΋ͷͰ΋ࣗ෼Ͱ࡞Δͷେࣄ • ΤϯδχΞ͸ϥΠτϢʔβ͡Όବ໨ • ΍Γ͜Έॏཁ • ษڧํ๏͸ΞϓϦέʔγϣϯΤϯδχΞͱ͞΄Ͳม ΘΒͳ͍ • ͱʹ͔ࣗ͘෼Ͱ࡞ͬͯΈΑ͏ʂ