Slide 1

Slide 1 text

PerlͷWebΞϓϦέʔγϣϯΛ σϓϩΠ͢Δ࣌ʹ ๻ୡ͕ߟ͑ͨ͜ͱ papix (Hatena Co., Ltd.)

Slide 2

Slide 2 text

͸͡Ίʹ

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

Θͨ͠Ͱ͢

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

͸ͯͳ͔Βདྷ·ͨ͠

Slide 7

Slide 7 text

ͭͬͯ͘·͢

Slide 8

Slide 8 text

papix • Twitter: @__papix__ • GitHub: papix • CPAN: PAPIX • Blog • Technology: http://papix.hatenablog.com/ • My Life: http://papix.hatenablog.jp/

Slide 9

Slide 9 text

PerlͷWebΞϓϦέʔγϣϯΛ σϓϩΠ͢Δ࣌ʹ ๻ୡ͕ߟ͑ͨ͜ͱ papix (Hatena Co., Ltd.)

Slide 10

Slide 10 text

σϓϩΠͱ͸?

Slide 11

Slide 11 text

σϓϩΠͱ͸? • WebαʔϏε͸(େ఍)ࣗ෼ͷPCͰ։ൃ͢Δ • ͦͷαʔϏεΛ, Ϣʔβʹ࢖ͬͯ΋Β͏ʹ͸? • Կ͔͠ΒͷαʔόʹňσϓϩΠʼnͯ͠, • ňγεςϜΛར༻Մೳͳঢ়ଶʹʼn͠ͳ͚Ε͹
 ͳΒͳ͍

Slide 12

Slide 12 text

αʔϏεͷ྆ྠ • ň։ൃʼnͱňσϓϩΠʼn͸αʔϏεͷ྆ྠ • ։ൃ, σϓϩΠ, ։ൃ, σϓϩΠ… • ͦͷͨΊ, σϓϩΠͷॏཁ౓͸ߴ͍! • σϓϩΠͳͯ͘͠αʔϏεͳ͠!!!!

Slide 13

Slide 13 text

σϓϩΠͷॏཁੑ • αʔϏεͷՁ஋ΛߴΊΔҝʹඞཁෆՄܽ • ϢʔβͷମݧΛଛͶͳ͍Α͏ʹ… • ͳΔ΂͘μ΢ϯλΠϜͳ͘… (ແఀࢭͰ) • σϓϩΠࣦഊͰαʔϏε͕௕ظؒࢭ·Δ • ΦϖϨʔγϣϯϛεͰσʔλ͕ফ͑Δ

Slide 14

Slide 14 text

σϓϩΠʹਖ਼ղͳ͠ • Ԧಓ(ύλʔϯ)͸͋Δ΋ͷͷ, ม਺͕ଟ͍ • αʔϏεͷػೳ, Πϯϑϥߏ੒, ։ൃऀͷ਺, Ϣʔβ਺, ར༻͢Δݴޠ, WAF, ϛυϧ΢ΣΞ, อଘ͢Δσʔλͷྔ… • ͍Ζ͍Ζͳ΋ͷͱ޲͖߹͏ඞཁ͕͋Δ

Slide 15

Slide 15 text

αʔϏεͱਐԽ͢ΔσϓϩΠ • αʔϏεͷਐԽʹ൐͍࠷ળղ͕มΘ͍ͬͯ͘ • ࠷ॳ͸खಈͰ΋͍͚ΔΑͶ • खಈͩͱΦϖϛε͢Δ͔ΒࣗಈԽ͍ͨ͠Ͷ • ୆਺૿͑Δͱਏ͍͔Βฒྻ࣮ߦ͍ͨ͠Ͷ • etc…

Slide 16

Slide 16 text

σϓϩΠʹ͍ͭͯ࠷ۙࢥ͏ࣄ • (ۀ຿ͷ৔߹)ඞཁ࠷௿ݶʹཹΊΔ • ࠷ॳ͔Βཧ૝Λ࣮ݱ͢Δͱ, ίετߴ͍ • ΦʔόʔςΫϊϩδʔʹ૸Γ͕ͪ • Ҿ͖ܧ͗΋େมʹͳͬͯ͠·͏… • ͍ͭͰ΋ۀ຿Ͱ࢖͑ΔΑ͏ʹ, झຯͷྖҬͰ৽͍͠΍Γํ, πʔϧΛࢼͤΔͱྑ͍!

Slide 17

Slide 17 text

σϓϩΠʹ͍ͭͯ ߟ͑Δ

Slide 18

Slide 18 text

σϓϩΠʹࢥ͍Λ஘ͤΔ • ͪΌΜͱͨ͠σϓϩΠΛ࣮ݱ͢Δʹ͸? • ͍Ζ͍Ζͳࣄͱ޲͖߹͏ඞཁ͕͋Δ • ݱ࣮ͱ޲͔͍߹͍͖ͬͯ·͠ΐ͏ • ੒ޭ͸, టष͍࡞ۀͷੵΈॏͶͷઌʹ͋Δ

Slide 19

Slide 19 text

͍Ζ͍Ζͳ΋ͷͱ ޲͖߹͓͏

Slide 20

Slide 20 text

Ͳ͜ʹσϓϩΠ͢Δ? • αʔϏε͕ಈ͘Πϯϑϥͱ޲͖߹͏ • VPS (Virtual Private Server) • IaaS (Infrastructure as a Service) • PaaS (Platform as a Service) • ΦϯϓϨαʔό / ࣗ୐αʔό

Slide 21

Slide 21 text

ԿΛσϓϩΠ͢Δ? • αʔϏεͦͷ΋ͷͱ޲͖߹͏ • όον΍ϫʔΧʔ͸͋Δ͔? • ϞϊϦγοΫ? ϚΠΫϩαʔϏε? • JavaScript͸͋Δ͔? ͦͷϏϧυ͸? • ϥΠϒϥϦͷΠϯετʔϧ/ߋ৽͸?

Slide 22

Slide 22 text

Ͳ͏΍ͬͯσϓϩΠ͢Δ? • αʔϏε΍, ར༻͢Δϛυϧ΢ΣΞͱ޲͖߹͏ • Ͳ͏΍ͬͯϓϩηεΛಈ͔͔͢? • αʔϏεͷ࠶ىಈ͸Ͳ͏͢Δ͔? • RDBMSͷϚΠάϨʔγϣϯ͸ඞཁ͔? • ΩϟογϡͷഁغͳͲߟྀ͠ͳ͍ͱ͍͚ͳ͍͔?

Slide 23

Slide 23 text

ͲΜͳσϓϩΠʹ͢Δ? • αʔϏεΛ։ൃ͢ΔνʔϜͱ޲͖߹͏ • σϓϩΠʹ࢖͑Δίετ͸? (ίετ) • खಈͰ͢Δ? ࣗಈԽ͢Δ? (ࣗಈԽ౓) • σϓϩΠ͸ແఀࢭ? ϝϯςΛೖΕΔ? (Մ༻ੑ) • ͲΕ͚ͩσϓϩΠ͍ͨ͠? (σϓϩΠස౓)

Slide 24

Slide 24 text

ňσϓϩΠͷϏδϣϯʼn͸େࣄ • ňͲΜͳσϓϩΠʹ͢Δʼnʹ͋ͨΔ෦෼ • ܦݧଇͱͯ͠, ͜ͷลΓͷ߹ҙ/ܭը͕ࡶͩͱ, Φʔ όʔςΫϊϩδʔʹ૸Γ͕ͪ • ଞͷཁૉʹൺ΂, ׂͱࣗ༝౓͕ߴ͍(ͱࢥ͏) • झຯαʔϏεͰ͋Ε͹, νʔϜ = ࣗ෼ͳͷͰ޷͖উ ख΍ΕΔ!!!

Slide 25

Slide 25 text

ίετͷྫ • ໌೔ϦϦʔε͔ͩΒͳΔ͸΍Ͱ! • සൟʹϦϦʔε͢Δ͠, ͔ͬ͠Γ࡞Γࠐ΋͏! • طଘͷࢿݯΛར༻ͯ͠, γϡοͱग़དྷͳ͍?

Slide 26

Slide 26 text

ίετͷิ଍ • ߏஙίετͱ࣮ࢪίετ͕͋Δ • ߏஙίετˢ ͩͱ, ࣮ࢪίετ ↓ (ࣗಈ) • ߏஙίετ ↓ ͩͱ, ࣮ࢪίετ ↑ (खಈ) • ࡶͳϏδϣϯͰਐΊΔͱͲͪΒ΋ΞήΞήʹ...

Slide 27

Slide 27 text

ࣗಈԽ౓ͷྫ • 1ίϚϯυͰσϓϩΠΛશͯ׬ྃͤ͞Α͏! • ్தͰ֬ೝΛڬΈ͍ͨͷͰ, ز͔ͭͷϑΣΠζ ʹ෼͚ͯ, ͦΕͧΕίϚϯυΛ࣮ߦ͠Α͏ • શ෦खಈͰ΍Ζ͏! (ਖ਼ؾ͔!?)

Slide 28

Slide 28 text

ࣗಈԽ౓ͷิ଍ • ઌʹ঺հͨ͠ňίετʼnʹӨڹΛ༩͑Δ • ࣗಈԽ౓ΛߴΊΕ͹ߴΊΔ΄Ͳ, ࢦ਺ؔ਺తʹ ίετ͕૿͍͑ͯ͘ (ͱࢥ͏) • νʔϜ/αʔϏεʹԠͯ͡ద౓ʹखಈ࡞ۀͷ ཁૉΛڬΜͰ͍͘ͷ͕େࣄͳͷͰ͸?

Slide 29

Slide 29 text

Մ༻ੑͷྫ • σϓϩΠ͸ແఀࢭ(ϊʔϝϯς)Ͱ΍Γ͍ͨ! • ਂ໷Ͱ͋Ε͹X෼ͷఀࢭ͸ڐ༰Ͱ͖ΔͶ • ݄ʹXճ͸αʔϏεΛࢭΊͯσϓϩΠͰ͖ͦ͏

Slide 30

Slide 30 text

Մ༻ੑͷิ଍ • SLA(Service Level Agreement)ʹ΋ؔΘͬͯ͘Δ • झຯͷαʔϏεͰ͋Ε͹, ϦϦʔεͷ౓ʹఀࢭ͠ ͯ΋ౖΒΕΔ͜ͱ͸ͳͦ͞͏ • ޿͘࢖ΘΕΔαʔϏε, ج൫తαʔϏεͩͱ,
 ͳΔ΂͘ແఀࢭͰσϓϩΠͰ͖ΔΑ͏ʹ͍ͨ͠!

Slide 31

Slide 31 text

σϓϩΠස౓ͷྫ • 1೔ʹ10ճ͘Β͍σϓϩΠ͍ͨ͠! • िʹ1ճσϓϩΠͰ͖Ε͹े෼͔ͳ... • 1ճ͋ͨΓX෼ͰσϓϩΠ͍ͨ͠!

Slide 32

Slide 32 text

σϓϩΠස౓ͷิ଍ • αʔϏε։ൃॳظͰ͸ॏཁͳཁૉ • σϓϩΠճ਺ = ϢʔβʹՁ஋Λಧ͚Δࢼߦνϟϯε਺ • ௿ίετͰ, 1೔ʹԿ౓΋σϓϩΠग़དྷΔͱྑ͍ • ྫ: GitHub (1೔100ճҎ্σϓϩΠ!) • ࠓ΋͍ͯ͠Δͷ͔ͳ...?

Slide 33

Slide 33 text

Ϗδϣϯ͕ࡶͩͱى͖Δ͜ͱ • σϓϩΠස౓͕௿͍ͷʹ, ϐλΰϥεΠονతʹ
 શࣗಈԽ͞ΕͨϞϊ͕࢓্͕ͬͨΓ... • ͦͷίετͰαʔϏε։ൃΛޙԡ͠Ͱ͖ͨͷͰ͸!? • ࡶʹਐΊͯ, ΍͚ʹ࣌ؒͷ͔͔ΔϞϊ͕࢓্͕ͬͨΓ... • Ұ೔ʹԿ౓΋σϓϩΠ͍ͨ͠ͷʹ…!

Slide 34

Slide 34 text

࢓૊ΈΛม͑Δ೉͠͞ • Ұ౓࡞ͬͨ࢓૊Έ(͜͜Ͱ͸σϓϩΠ)Λޙ͔Βม͑ͯ ͍͘ͷ͸ඇৗʹ೉͍͠! • ຬͨ͢΂͖σϓϩΠͷϏδϣϯ(৚݅)͕͋ΔͳΒ, ຬͨͤΔΑ͏ʹ࠷ॳ͔ΒؤுΔ΂͖! • (࠷ॳ͔ΒϏδϣϯ͕ఆ·͍ͬͯͯ, ͣͬͱมΘΒͳ͍ ͳΒۤ࿑͠ͳ͍࿩Ͱ͸͋Γ·͢!)

Slide 35

Slide 35 text

WebΞϓϦέʔγϣϯͷ σϓϩΠઓུ

Slide 36

Slide 36 text

खಈΦϖϨʔγϣϯ • αʔόʹ઀ଓͯ͠, खͰίʔυΛೖྗ • ίϚϯυΛؒҧ͑ͳ͍Α͏ʹ, खॱॻΛ࡞Δ • ͱ͸͍͑, ਓؒͳͷͰͨ·ʹؒҧ͑Δ…! • αʔόʔͷ୆਺͕૿͑Ε͹, ΦϖϛεͷՄೳੑ΋ ૿͍͑ͯ͘…

Slide 37

Slide 37 text

γΣϧεΫϦϓτʹΑΔࣗಈԽ • Ұ࿈ͷσϓϩΠॲཧͷͨΊͷίϚϯυΛ,
 γΣϧεΫϦϓτͰ·ͱΊ࣮ͯߦ͢Δ • σϓϩΠͷखॱΛίʔυʹམͱ͠ࠐΉ • ίʔυͳͷͰ࣮ߦग़དྷΔ, ಡΊΔ, मਖ਼Ͱ͖Δ! • ͜Ε΋୆਺͕૿͑ͯ͘Δͱ, ֤αʔόͰεΫϦϓτΛ࣮ ߦ͢Δͷ͕େมʹͳͬͯ͘Δ…

Slide 38

Slide 38 text

πʔϧΛ࢖ͬͨࣗಈԽ/ฒྻԽ • ୅දྫ͸CapistranoͳͲ • ༧ΊσϓϩΠઌͱͳΔαʔόΛొ࿥͢Ε͹, ί Ϛϯυ1ͭͰશͯͷαʔόʹσϓϩΠՄೳ • ศརͳϔϧύʔ͕͋Γ, ίʔυͰσϓϩΠखॱ Λߏங͠΍͍͢

Slide 39

Slide 39 text

πʔϧΛ࢖ͬͨࣗಈԽ/ฒྻԽ • αʔόͷ؀ڥΛߏங͢ΔπʔϧͰߦ͏৔߹΋ • Ansible, Chefͱ͍ͬͨϓϩϏδϣχϯάπʔ ϧͷ׆༻ • ؀ڥߏஙͱσϓϩΠΛҰؾ௨؏Ͱಉ͡πʔϧͰ ࣮ݱͰ͖Δ • ࠷ॳͷҰาͱͯ͠Φεεϝ

Slide 40

Slide 40 text

πʔϧΛ࢖ͬͨࣗಈԽ/ฒྻԽ • ۀ຿Ͱ͸, ͜ͷล·Ͱ͸”ී௨ʹ"΍Δࣄ͕ଟ͍ • Infrastructure as CodeͷྲྀߦΓͱ͔… • ίʔυԽ͢Δ͜ͱͰ, ଞνʔϜͷίʔυ/஌ݟΛྲྀ༻ ͠΍͍͢ͱ͍͏ͷ΋͋Δ • ୠ͠, ΍Γ͗͢Δͱࣾ಺ͰňΨϥύΰεతਐԽʼnΛ͢Δ ͜ͱ΋...

Slide 41

Slide 41 text

ߋͳΔਐԽͷํ޲ੑ • ň੒Ռ෺Λར༻͢Δʼnޮ཰ͷྑ͍σϓϩΠ • BotΛ࢖ͬͨChatOps • CIπʔϧ, SaaSͷ׆༻ • σϓϩΠͷ׬શࣗಈԽ

Slide 42

Slide 42 text

ň੒Ռ෺Λར༻͢ΔʼnσϓϩΠ

Slide 43

Slide 43 text

GitΛ࢖ͬͨσϓϩΠ • GitΛ࢖͍ͬͯΔ৔߹Λߟ͑Δ • GitHub, BitBucketͳͲ... • ϦϙδτϦʹ͋ΔίʔυΛσϓϩΠ͢Δ • ී௨ʹσϓϩΠ͢Δͱ, Ͳ͏͍͏खॱʹͳΔ?

Slide 44

Slide 44 text

GitΛ࢖ͬͨσϓϩΠ • ࣍ͷΑ͏ͳॲཧΛCapistranoͳͲͰߦ͏: • σϓϩΠର৅ͷαʔόͷGitϦϙδτϦΛߋ৽ • ϥΠϒϥϦͷΠϯετʔϧ౳, ϏϧυΛ࣮ߦ • ΞϓϦέʔγϣϯΛ࠶ىಈ • αʔό͕ෳ਺ଘࡏ͢Δ৔߹, ͦͷ֤ʑͰ࣮ࢪ͢Δ

Slide 45

Slide 45 text

໰୊఺͸? • GitϦϙδτϦʹෛ୲͕͔͔Δ • Ұ౓ʹෳ਺ͷαʔό͕GitϦϙδτϦΛಡΈऔΓʹߦ͘ • Ϗϧυʹ͔͔Δίετ(Ϧιʔε, ࣌ؒ)͕ແବ • શͯͷαʔόͰ, `carton install`ͳͲ͕࣮ߦ͞Εͯ͠·͏ • JavaScriptͷϏϧυͳͲ΋ಉ༷

Slide 46

Slide 46 text

ň੒Ռ෺Λར༻͢ΔʼnσϓϩΠ • ༧Ί, σϓϩΠ͍ͨ͠ίʔυΛϏϧυ͓ͯ͘͠ • CIαʔόͷδϣϒͱͯ͠ߦ͏͜ͱ͕ଟ͍ • ͦͷň੒Ռ෺ʼn͝ͱ, ίʔυΛtarͳͲͰݻΊΔ • `local`σΟϨΫτϦ, Ϗϧυͨ͠JavaScript...

Slide 47

Slide 47 text

ň੒Ռ෺Λར༻͢ΔʼnσϓϩΠ • tar͸S3ʹ഑ஔ͓ͯ͘͠ • S3ͳͷͰ, ಉ࣌ΞΫηε౳ʹ΋ڧ͍ • σϓϩΠର৅ͷαʔό͸, S3͔ΒtarΛऔಘ,
 ల։ͯ͠࠶ىಈ͢Ε͹σϓϩΠ׬ྃ • ͦΕͧΕͷαʔόͰϏϧυ͕ඞཁͳ͘ͳΔ

Slide 48

Slide 48 text

ň੒Ռ෺Λར༻͢ΔʼnσϓϩΠ • Consul + StretcherΛ࢖ͬͨύλʔϯ • ʲະঝ୚޿ࠂʳ͜ͷޙͷmacopy͞Μͷ
 τʔΫͰ, ΧϠοΫʹ͓͚Δ۩ମྫͳͲ͕
 ޠΒΕΔͷͰ͸!? • ͳͷͰ, ͜͜Ͱ͸େ·͔ͳ֓ཁͷΈ͓࿩͠·͢

Slide 49

Slide 49 text

Consul + Stretcher • Stretcher • ΧϠοΫͷ@fujiwara͞Μۘ੡ • HashiCorp੡”Consul”ͷeventΛར༻ͨ͠
 σϓϩΠπʔϧ

Slide 50

Slide 50 text

Consul + Stretcher http://techblog.kayac.com/10_stretcher.html

Slide 51

Slide 51 text

Consul + Stretcher • ։ൃऀ͸ConsulʹeventΛ౤͛Ε͹OK! • Consul/StretcherΛ࢖Θͣ, CapistranoͰ
 ֤αʔόʹtarΛऔಘͤ͞, ల։ͯ͠࠶ىಈͱ͍ ͏΍Γํ΋͋ΓಘΔ

Slide 52

Slide 52 text

BotΛ࢖ͬͨChatOps

Slide 53

Slide 53 text

ChatOps (Hubot) • Botʹ͓ئ͍͢Ε͹σϓϩΠ͕ಈ͘ • Botͱ͸νϟοτπʔϧ(Slack౳)Ͱަྲྀ • ňσϓϩΠͷՄࢹԽʼnʹ΋ͭͳ͕Δ • σϓϩΠͷ༷ࢠ͕νϟοτͰՄࢹԽͰ͖Δ • ਐḿͱ͔, ໰୊ͳͦ͞͏͔ͱ͔, ײ͡΍͍͢

Slide 54

Slide 54 text

CIπʔϧ/SaaSͷ׆༻

Slide 55

Slide 55 text

CIπʔϧ • ༷ʑͳҰ࿈ͷॲཧ(Job)Λ؅ཧ/࣮ߦͯ͘͠ΕΔ • σϓϩΠͷҝͷॲཧΛ؅ཧͤ͞Δ • Jenkins, Concourse CI, Circle CIͳͲ… • ཤྺ΍ϩά΋࢒ΔͷͰ, ҆৺ײ͕͋Δ

Slide 56

Slide 56 text

Jenkins • σϑΝΫτελϯμʔυײ͕͋Δ • ࠷ۙ2.0͕ग़ͯ, Jenkinsfileͱ͍͏֓೦͕ొ৔ • ίʔυͰδϣϒΛ؅ཧग़དྷΔΑ͏ʹͳͬͨ! • JenkinsΛ؅ཧ͢Δ͜ͱΛňհޢʼnͱݺΜͩΓ…

Slide 57

Slide 57 text

Concourse CI • PivotalͷύΠϓϥΠϯܕCIπʔϧ • ݟͨ໨͕ΊͬͪΌΠέͯΔ, ͔͍͍ͬ͜ • DockerΛ࢖͍ͬͯͯ, δϣϒ͕Dockerͷ্ Ͱಈ࡞͢ΔͷͰ, ؀ڥߏஙָ͕ͪΜ

Slide 58

Slide 58 text

Concourse CIͷ༷ࢠ https://qiita-image-store.s3.amazonaws.com/0/1852/4e14e419-5b1f-75f6-f623-6aac28c9788f.png

Slide 59

Slide 59 text

SaaSͳCI • Travis • GitHubͷpublicϦϙδτϦ͸ແྉͰ࢖͑Δ • ଞʹ΋Circle CI, WerckerͳͲ... • ΋ͪΖΜSaaSͳͷͰ, ༗ྉͳࣄ͕ଟ͍Ͱ͢

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

Mackerel • ͸ͯͳͷαʔό؅ཧ/؂ࢹͷͨΊͷSaaS • σϓϩΠͷҝʹ͸ňαʔόͷ؅ཧʼn΋ॏཁ • ňͲͷαʔόʹσϓϩΠ͢Δ͔?ʼn • Capistrano + Mackerelͷྫ • σϓϩΠର৅ͷαʔόΛMackerel͔ΒΑ͠ͳʹݟ͚ͭͯ͘ΕΔ • https://mackerel.io/ja/docs/entry/advanced/capistrano-2.x

Slide 62

Slide 62 text

σϓϩΠͷ׬શࣗಈԽ

Slide 63

Slide 63 text

σϓϩΠͷ׬શࣗಈԽ • ͜͏͍ͬͨ࢓૊ΈΛ૊Έ߹ΘͤΕ͹, σϓϩΠͷ׬શࣗಈ Խ΋࣮ݱͰ͖Δ • GitHubʹpushͨ͠ΒσϓϩΠ׬ྃ! • ୠ͠, ׬શࣗಈԽʹ΋ϦεΫ͸͋Δ • ňਓؒͷख͕ೖΔ༨஍ʼn͸͋Δछͷ҆શห • લड़ͷ௨Γ, ňͲ͜·ͰࣗಈԽ͢Δ͔?ʼnΛߟ͑Δ

Slide 64

Slide 64 text

σϓϩΠͱϚΠάϨʔγϣϯ

Slide 65

Slide 65 text

αʔϏεͱσʔλ • αʔϏε͕ར༻͢Δσʔλͷ؅ཧʹ͍ͭͯ΋ ߟ͑ͳ͚Ε͹͍͚ͳ͍ • RDBMSʹσʔλΛอଘͨ͠Γ… • KVSΛར༻ͨ͠Γ… • ΦϒδΣΫτετϨʔδΛར༻ͨ͠Γ...

Slide 66

Slide 66 text

εΩʔϚͷมߋ • ΞϓϦέʔγϣϯͷσϓϩΠʹ൐ͬͯ, RDBMSͷεΩʔϚΛมߋ͍ͨ͠৔߹΋͋Δ • ৽͍͠ςʔϒϧΛ༻ҙ͍ͨ͠ • ςʔϒϧʹΧϥϜΛ௥Ճ͍ͨ͠ • εΩʔϚͷมߋ -> ϚΠάϨʔγϣϯ

Slide 67

Slide 67 text

ϚΠάϨʔγϣϯ͢Δ • SQLͷALTERจΛ௚઀ଧͭ • GitDDL, GitDDL::Migrator, Anego౳͸, ͦͷࢧԉ Λ͢Δπʔϧୡ • pt-osc • Trigger౳Λۦ࢖ͯ͠, ͍͍ײ͡ʹϚΠάϨʔγϣϯ Λͯ͘͠ΕΔ܅

Slide 68

Slide 68 text

ϚΠάϨʔγϣϯͷ೉͠͞ • ALTERจͷ࣮ߦʹͲΕ͚͕͔͔ͩ࣌ؒΔ͔? • ϚΠάϨʔγϣϯޙ΋ΞϓϦ͸ಈ͔͘? • σϓϩΠલͷΞϓϦέʔγϣϯ͕, RDBMS ͷϚΠάϨʔγϣϯޙ΋ਖ਼͘͠ಈ͘ͳΒ,
 ແఀࢭͰσϓϩΠ΋Ͱ͖Δ

Slide 69

Slide 69 text

Graceful Restart

Slide 70

Slide 70 text

Tl;dr • @shibayu_36͞ΜͷΤϯτϦΛಡ΋͏! • ňServer::Starter͔ΒֶͿhot deployͷ࢓૊Έʼn
 http://blog.shibayu36.org/entry/ 2012/05/07/201556 • τοϓΫϥεʹΘ͔Γ΍͍͢Graceful Restart ͷࢿྉͰ͢

Slide 71

Slide 71 text

Graceful Restart • σϓϩΠ࣌ʹ͸ϓϩηεͷ࠶ىಈ͕ඞཁ • มߋͨ͠ίʔυΛద༻͢ΔͨΊ • ී௨ʹ࠶ىಈ͢Δͱ, ͦͷॠ͚ؒͩϦΫΤετΛࡹ͚ͳ͘ ͳͬͯ͠·͏ • αʔϏε͕ॠؒతʹμ΢ϯ͢Δ! • ͦ͜ͰGraceful Restart (༏խͳϦελʔτ)

Slide 72

Slide 72 text

PerlͷGraceful Restart • PerlͳΒ, Server::StarterҰ୒ • ࣍ͷΑ͏ʹ࢖͏:

Slide 73

Slide 73 text

http://blog.shibayu36.org/entry/2012/05/07/201556

Slide 74

Slide 74 text

http://blog.shibayu36.org/entry/2012/05/07/201556

Slide 75

Slide 75 text

http://blog.shibayu36.org/entry/2012/05/07/201556

Slide 76

Slide 76 text

http://blog.shibayu36.org/entry/2012/05/07/201556

Slide 77

Slide 77 text

http://blog.shibayu36.org/entry/2012/05/07/201556

Slide 78

Slide 78 text

http://blog.shibayu36.org/entry/2012/05/07/201556

Slide 79

Slide 79 text

͸ͯͳͷσϓϩΠ

Slide 80

Slide 80 text

͸ͯͳͱσϓϩΠ • ͨ͘͞ΜͷαʔϏεΛӡ༻͍ͯ͠Δ • ͦͷͦΕͧΕʹσϓϩΠϑϩʔ͕͋Δ • ࠓճ͸͸ͯͳϒϩάνʔϜΛྫʹ...

Slide 81

Slide 81 text

͸ͯͳϒϩάνʔϜͷσϓϩΠ • ։ൃऀ͸ΈΜͳσϓϩΠͰ͖Δ • σϓϩΠຖʹͩΕ͔͕ΞαΠϯ͞ΕΔ • ༦ํ΍, ༵ۚ೔͸σϓϩΠ͠ͳ͍

Slide 82

Slide 82 text

ϒϥϯνӡ༻ • masterϒϥϯν • ຊ൪؀ڥͰಈ͍͍ͯΔίʔυ • staging/masterϒϥϯν • staging؀ڥͰಈ͍͍ͯΔίʔυ • ։ൃ༻ͷϒϥϯν(τϐοΫϒϥϯν)͸staging/masterʹ Pull Requestͯ͠Ϛʔδ

Slide 83

Slide 83 text

खॱॻͷࣗಈੜ੒ • git-pr-release Ͱखॱॻͷࣗಈੜ੒ • staging/master ͔Β master ΁ͷPull Requestͷdescription͕खॱॻʹͳΔ • ޙ͸खॱॻʹैͬͯ΍͍͚ͬͯͩ͘!

Slide 84

Slide 84 text

No content

Slide 85

Slide 85 text

No content

Slide 86

Slide 86 text

ײ૝ • (ಈ࡞֬ೝΛআ͚͹)10෼͘Β͍ͰऴΘΔ • શࣗಈԽͰ͸ͳ͘, ൒ࣗಈԽ • αʔϏεͷن໛΋খ͘͞ͳ͍ͷͰ, ్தखಈ ʹΑΔ֬ೝϑΣΠζΛڬΜͰ͍Δ • ň҆શʹ౗͍ͯ͠Δʼnҹ৅

Slide 87

Slide 87 text

ײ૝ • ໘౗ͳ/࣌ؒͷ͔͔Δॲཧ͸Jenkinsʹ೚ͤ,
 ੹೚ॏେͳλεΫ͸ਓ͕ؒखݩͰ࣮ߦ͢Δ • Slackʹ༷ࢠΛྲྀͭͭ͠, ϩάΛ֬ೝ͢Δ • ϦϦʔελΠϛϯάͳͲߟྀ͠ͳ͍ͱ͍͚ͳ ͍͕, ͔ͳΓΧδϡΞϧʹσϓϩΠ͍ͯ͠Δ

Slide 88

Slide 88 text

·ͱΊ

Slide 89

Slide 89 text

·ͱΊ • αʔϏεͷ։ൃͱσϓϩΠ͸྆ྠ • ͔ͬ͠Γߟ͍͑ͯ͘ඞཁ͕͋Δ • ࠷௿ݶͷίετͰ, ࠷ྑͷޮ཰ΛٻΊͯ • σϓϩΠ΋, ͔ͬ͠Γߟ͍͖͑ͯ·͠ΐ͏

Slide 90

Slide 90 text

We are hiring! ͸ͯͳͰ͸, ϞϦϞϦ։ൃ, ͲΜͲΜσϓϩΠΛ Ұॹʹ΍͍ͬͯ͘ΤϯδχΞΛืू͍ͯ͠·͢!

Slide 91

Slide 91 text

We are hiring! http://hatenacorp.jp/recruit/career/application-engineer