Slide 1

Slide 1 text

։ൃ͢ΔΑ͏ʹӡ༻͢Δ Πϯϑϥ ,BJ[FO1MBUGPSN*ODɹ౔ډɹਖ਼ߦ +"84%":4

Slide 2

Slide 2 text

ࣗݾ঺հ ౔ډɹਖ਼ߦ (@m_doi) Kaizen Platform Inc ΠϯϑϥΤϯδχΞ • ͜Ε·Ͱ • ϑΟʔνϟʔϑΥϯͷιϑτ΢ΣΞ։ൃ • SNS/ιγϟήܥͷωοτϫʔΫ / αʔόΤϯδχΞ • ؂ࢹγεςϜ౳ɺӡ༻ͷͨΊͷιϑτ΢ΣΞ։ൃ • ͓ؾʹೖΓͷAWSαʔϏε • DynamoDB ͱ Kinesis

Slide 3

Slide 3 text

ࠓ೔ͷ͓࿩ • Kaizen Platform ͷ։ൃଆͷϫʔΫϑϩʔ • Kaizen Platform ͷӡ༻ଆͷϫʔΫϑϩʔ • ͜ΕΒͷϫʔΫϑϩʔʹࠐΊͨࢥ૝ • ͓·͚

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

EC2 Instance VPC ELB Route 53 S3 Glacier CloudFront RDS ElastiCache DynamoDB

Slide 6

Slide 6 text

• ؅ཧը໘ • A/Bςετ࣮ߦ༻ͷ JavaScript ͷ഑৴ • A/Bςετͷ਺஋ܭଌ

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

։ൃଆͷϫʔΫϑϩʔ

Slide 11

Slide 11 text

• Work In Progress Ͱ Pull Request • ։ൃ • ϨϏϡʔ • QA • ຊ൪ϦϦʔε ։ൃϓϩηε

Slide 12

Slide 12 text

• Work In Progress Ͱ Pull Request • ։ൃ • ϨϏϡʔ • QA • ຊ൪ϦϦʔε ։ൃϓϩηε

Slide 13

Slide 13 text

master QA ຊ൪ ։ൃϒϥϯν 2"ϓϩηε։࢝ ຊ൪؀ڥʹσϓϩΠ ։ൃϓϩηε

Slide 14

Slide 14 text

Pull Request

Slide 15

Slide 15 text

ϨϏϡʔґཔ Pull Request ͷ ID Λఴ͑ͯϨϏϡʔґཔ

Slide 16

Slide 16 text

ϨϏϡʔ PR಺Ͱɺ஫ҙ఺Λఴ͑ͯϨϏϡΞʔʹϝϯγϣϯ

Slide 17

Slide 17 text

ϨϏϡʔ

Slide 18

Slide 18 text

• Work In Progress Ͱ Pull Request • ։ൃ • ϨϏϡʔ • QA • ຊ൪ϦϦʔε ։ൃϓϩηε

Slide 19

Slide 19 text

master QA ຊ൪ ։ൃϒϥϯν 2"ϓϩηε։࢝ ຊ൪؀ڥʹσϓϩΠ ϦϦʔεϓϩηε

Slide 20

Slide 20 text

ϦϦʔεϓϩηε E2E Test Deploy Unit Test

Slide 21

Slide 21 text

• CI ͷ SaaS • fooϒϥϯνʹpushͨ͠Βbar͢Δ • foo, bar ͷ෦෼Λࡉ੍͔͘ޚՄೳ • ୯७ͳίϚϯυΛ࣮ߦ͢Δ • ࣗ࡞ͨ͠೚ҙͷγΣϧεΫϦϓτΛ࣮ߦ͢Δ CircleCI

Slide 22

Slide 22 text

• CI ͷ SaaS • fooϒϥϯνʹpushͨ͠Βbar͢Δ • foo, bar ͷ෦෼Λࡉ੍͔͘ޚՄೳ • ୯७ͳίϚϯυΛ࣮ߦ͢Δ • ࣗ࡞ͨ͠೚ҙͷγΣϧεΫϦϓτΛ࣮ߦ͢Δ CircleCI ͭ·ΓɺGitHub ͷ ೚ҙͷϒϥϯν΁ͷ push Λܖػʹɺ ༷ʑͳϫʔΫϑϩʔΛఆٛͰ͖Δɻ

Slide 23

Slide 23 text

ϦϦʔεϓϩηε master ϒϥϯν΁ͷ push Λܖػʹ Unit Test Λ࣮ߦ e2e ϒϥϯν΁ͷ push Λܖػʹ E2E Test Λ࣮ߦ E2E Test Deploy Unit Test deploy ϒϥϯν΁ͷ push Λܖػʹ Deploy Λ࣮ߦ

Slide 24

Slide 24 text

ϦϦʔε࡞ۀ։࢝ σϓϩΠ༻ͷ Pull Request Λ࡞੒ νϟοτͰίϚϯυΛୟ͘ͱ΍ͬͯ͘ΕΔ

Slide 25

Slide 25 text

ϦϦʔε࡞ۀ QA؀ڥʹσϓϩΠ͞ΕΔ ಉ࣌ʹຊ൪σϓϩΠͷ Pull Request ͕࡞੒͞ΕΔ

Slide 26

Slide 26 text

ϦϦʔε࡞ۀ ຊ൪σϓϩΠͷ Pull Request ʹνΣοΫϦετ͕Ͱ͖Δ ͦΕͧΕͷίϛοτͷಈ࡞֬ೝΛऴ͑ͨΒνΣοΫΛ෇͚Δ

Slide 27

Slide 27 text

E2E ςετ headless browser ͰγφϦΦΛςετ

Slide 28

Slide 28 text

E2E ςετ QA؀ڥͰ࣮ࢪ

Slide 29

Slide 29 text

E2E ςετ ΠϯϑϥΤϯδχΞ΋νϟοτ͔Β؆୯ʹ࣮ߦͰ͖Δ ͜Ε͕ޙʑ໾ʹཱͭ

Slide 30

Slide 30 text

ϦϦʔε࡞ۀ ͢΂ͯͷ֬ೝ࡞ۀ͕ऴΘΔͱɺ ຊ൪σϓϩΠ༻ͷϒϥϯνΛmerge ຊ൪؀ڥʹσϓϩΠ͕։࢝͞ΕΔ

Slide 31

Slide 31 text

ϒϥϯνͷ push/merge ΛτϦΨʹ master QA ຊ൪ ։ൃϒϥϯν Unit Test ͕૸Δ

Slide 32

Slide 32 text

ϒϥϯνͷ push / merge ΛτϦΨʹ master QA ຊ൪ 2"ϓϩηε։࢝NBTUFS2"ͷ1VMM3FRVFTU࡞੒NFSHF 2"؀ڥʹσϓϩΠ

Slide 33

Slide 33 text

ϒϥϯνͷ push / merge ΛτϦΨʹ master QA ຊ൪ ֤ࣗɺಈ࡞֬ೝ &&ςετ΋࣮ߦ

Slide 34

Slide 34 text

ϒϥϯνͷ push / merge ΛτϦΨʹ master QA ຊ൪ 2"ຊ൪ͷ1VMM3FRVFTUΛNFSHF ຊ൪؀ڥʹσϓϩΠ

Slide 35

Slide 35 text

ϒϥϯνͷ push / merge ΛτϦΨʹ master QA ຊ൪ ֤ࣗɺಈ࡞֬ೝ &&ςετ΋࣮ߦ

Slide 36

Slide 36 text

• GitHub Λத৺ͱͨ͠։ൃϑϩʔ • CircleCI Λத৺ͱͨ͠ϦϦʔεϑϩʔ • GitHub ͱ CircleCI ͱ νϟοτͷૢ࡞ Ͱ׬݁ ·ͱΊΔͱ

Slide 37

Slide 37 text

ӡ༻ଆͷϫʔΫϑϩʔ

Slide 38

Slide 38 text

ߏ੒؅ཧ

Slide 39

Slide 39 text

• Work In Progress Ͱ Pull Request • ߏ੒มߋΛ Chef recipe ʹམͱ͜͠Ή • ϨϏϡʔ • ߏஙςετ • ຊ൪ద༻ ӡ༻ϓϩηε

Slide 40

Slide 40 text

ߏ੒؅ཧ

Slide 41

Slide 41 text

ߏ੒؅ཧ 1. recipe ͷ࡞੒ 2. push 3. ࢼݧߏஙٴͼServerspec ʹΑΔݕূ 4. ߏங༻ϒϥϯν΁ ͷ merge Λܖػʹ ຊ൪؀ڥʹద༻

Slide 42

Slide 42 text

ߏ੒؅ཧ 1. recipe ͷ࡞੒ 2. push 3. push Λܖػʹࢼݧߏஙٴͼ Serverspec ʹΑΔݕূ 5. ߏங༻ϒϥϯν΁ͷ merge Λܖػʹ ຊ൪؀ڥʹద༻ 4. νϟοτͰ
 ߏங༻ϒϥϯν΁ͷ merge Λࢦࣔ

Slide 43

Slide 43 text

ߏ੒มߋΛมߋΛ Chef recipe ʹམͱ͜͠Ή ߏ੒؅ཧ

Slide 44

Slide 44 text

ߏ੒มߋΛมߋΛ Chef recipe ʹམͱ͜͠Ή ߏ੒؅ཧ

Slide 45

Slide 45 text

push ͯ͠ CI Λ࣮ߦ & ໰୊ͳ͚Ε͹ master merge ߏ੒؅ཧ

Slide 46

Slide 46 text

Chat Ͱߏங༻ϒϥϯν΁ͷ merge Λࢦࣔ ߏ੒؅ཧ

Slide 47

Slide 47 text

ߏ੒؅ཧ hubot ͕ ߏங༻ pull request Λ࡞Δ

Slide 48

Slide 48 text

ߏ੒؅ཧ hubot ͕ ߏங༻ pull request Λ࡞Δ

Slide 49

Slide 49 text

มߋͷৄࡉ͸͢΂ͯpull request ͷதʹ࢒Δ ߏ੒؅ཧ

Slide 50

Slide 50 text

࡞ۀͷৄࡉ͸͢΂ͯνϟοτͱCircleCIʹ࢒Δ ߏ੒؅ཧ

Slide 51

Slide 51 text

࡞ۀͷৄࡉ͸͢΂ͯνϟοτͱCircleCIʹ࢒Δ ߏ੒؅ཧ

Slide 52

Slide 52 text

ߏ੒؅ཧ ࡞ۀͷৄࡉ͸͢΂ͯνϟοτͱCircleCIʹ࢒Δ

Slide 53

Slide 53 text

ߏ੒มߋޙͷE2E ςετ େ͖ͳߏ੒มߋΛՃ͑ͯɺෆ҆ͳ৔߹͸ E2EςετΛࣗ෼Ͱճͯ͠ɺαʔϏεͷਖ਼ৗੑΛ֬ೝ

Slide 54

Slide 54 text

ߏ੒มߋޙͷE2E ςετ େ͖ͳߏ੒มߋΛՃ͑ͯɺෆ҆ͳ৔߹͸ E2EςετΛࣗ෼Ͱճͯ͠ɺαʔϏεͷਖ਼ৗੑΛ֬ೝ ΠϯϑϥΤϯδχΞతࢹ఺Ͱ͸ɺ͜Ε͕ͱͯ΋ศར ΠϯϑϥΤϯδχΞ͚ͩͰɺ ͋Δఔ౓αʔϏεͷਖ਼ৗੑ͕֬ೝͰ͖Δ

Slide 55

Slide 55 text

ϒϥϯνͷ push/merge ΛτϦΨʹ master QA ຊ൪ ։ൃϒϥϯν ࢼݧߏங / Serverspec ʹΑΔCI

Slide 56

Slide 56 text

ϒϥϯνͷ push / merge ΛτϦΨʹ master cook/QA DPPLຊ൪ ߏ੒มߋΛ2"؀ڥʹద༻ͯ֬͠ೝ NBTUFSDPPL2"ͷ1VMM3FRVFTU࡞੒NFSHF 2"؀ڥʹ৽͍͠SFDJQFͰDPPL hubot cook run qa-***

Slide 57

Slide 57 text

ϒϥϯνͷ push / merge ΛτϦΨʹ master QA ຊ൪ ֤ࣗɺಈ࡞֬ೝ &&ςετ΋࣮ߦ

Slide 58

Slide 58 text

ϒϥϯνͷ push / merge ΛτϦΨʹ master QA ຊ൪ NBTUFSDPPLຊ൪ͷ1VMM3FRVFTUΛNFSHF ৽͍͠SFDJQFͰຊ൪؀ڥΛDPPL

Slide 59

Slide 59 text

ϒϥϯνͷ push / merge ΛτϦΨʹ master QA ຊ൪ ద༻݁Ռ֬ೝ &&ςετ΋࣮ߦ

Slide 60

Slide 60 text

• GitHub Λத৺ͱͨ͠ߏ੒؅ཧϑϩʔ • CircleCI Λத৺ͱͨ͠มߋద༻ϑϩʔ • GitHub ͱ CircleCI ͱ νϟοτͷૢ࡞Ͱ ׬݁ ·ͱΊΔͱ

Slide 61

Slide 61 text

։ൃϓϩηεͱӡ༻ϓϩηε ͷൺֱ

Slide 62

Slide 62 text

• Work In Progress Ͱ Pull Request • ։ൃ • ϨϏϡʔ • QA • ຊ൪ϦϦʔε ։ൃϓϩηε

Slide 63

Slide 63 text

• Work In Progress Ͱ Pull Request • ߏ੒؅ཧπʔϧΛ࢖༻ͨ͠ߏஙखॱ࡞੒ • ϨϏϡʔ • ߏஙςετ • ຊ൪ద༻ ӡ༻ϓϩηε

Slide 64

Slide 64 text

• ։ൃ • GitHub Λத৺ͱͨ͠։ൃϑϩʔ • CircleCI Λத৺ͱͨ͠ϦϦʔεϑϩʔ • GitHub ͱ CircleCI ͱ νϟοτͷૢ࡞Ͱ׬݁ • ӡ༻ • GitHub Λத৺ͱͨ͠ߏ੒؅ཧϑϩʔ • CircleCI Λத৺ͱͨ͠มߋద༻ϑϩʔ • GitHub ͱ CircleCI ͱ νϟοτͷૢ࡞Ͱ׬݁ ൺֱ

Slide 65

Slide 65 text

ϓϩηεΛ߹ΘͤΔϝϦοτ • ։ൃଆ΋ΠϯϑϥͷมߋΛ͢Δ͜ͱ͕ग़དྷΔ • ٯ΋·ͨવΓ • ։ൃଆͰ΍Γͨ͘ͳΔมߋ • ϦόʔεϓϩΩγͰ̋̋ϔομ෇͚͍ͨ • ̋̋ϑΝΠϧΛ഑ஔ͍ͨ͠ • ௥ՃػೳͷͨΊʹ̋̋ύοέʔδΛೖΕ͍ͨ

Slide 66

Slide 66 text

ϓϩηεΛ߹ΘͤΔϝϦοτ • ։ൃଆ΋ΠϯϑϥͷมߋΛ͢Δ͜ͱ͕ग़དྷΔ • ։ൃଆͰ΍Γͨ͘ͳΔมߋ • ϦόʔεϓϩΩγͰ̋̋ϔομ෇͚͍ͨ • ̋̋ϑΝΠϧΛ഑ஔ͍ͨ͠ • ௥ՃػೳͷͨΊʹ̋̋ύοέʔδΛೖΕ͍ͨ Dev < ͜ΕೖΕ͍ͨͰ͢ Ops < ҰճϛʔςΟϯά͠·͠ΐ͏͔ ʙϛʔςΟϯάʙ
 Dev < ͜ΕೖΕ͍ͨͰ͢ Ops < ͦ΋ͦ΋ͳΜͰඞཁͳΜͰ͚ͨͬ͠ Dev < ͔͔͔͔͘͘͠͡ Ops < Ͱ͸ௐ੔ͯ͠ɺ݄̋☓೔ʹೖΕ·͠ΐ͏ɻ୲౰ऀ͸̋̋͞ ΜΞαΠϯͰɻ ଓ͘…

Slide 67

Slide 67 text

ϓϩηεΛ߹ΘͤΔϝϦοτ • ։ൃଆ΋ΠϯϑϥͷมߋΛ͢Δ͜ͱ͕ग़དྷΔ • ։ൃଆͰ΍Γͨ͘ͳΔมߋ • ϦόʔεϓϩΩγͰ̋̋ϔομ෇͚͍ͨ • ̋̋ϑΝΠϧΛ഑ஔ͍ͨ͠ • ௥ՃػೳͷͨΊʹ̋̋ύοέʔδΛೖΕ͍ͨ ɾͦ͜·ͰෳࡶͳมߋͰ͸ͳ͍ ɾಈ͖ʹΠϯύΫτΛ༩͑Δͱͯ͠΋ΠϯϑϥΤϯδχΞΛ ௨ͨ͠ϨϏϡʔͰνΣοΫ

Slide 68

Slide 68 text

KAIZEN ΤϯδχΞߦಈࢦ਑

Slide 69

Slide 69 text

KAIZEN ΤϯδχΞߦಈࢦ਑

Slide 70

Slide 70 text

ݖҖతʹͳΒͳ͍ DevOps Day Tokyo 2013
 @mirakui ͞ΜͷεϥΠυΑΓҾ༻

Slide 71

Slide 71 text

• डཧͯ͠ڐՄΛग़ཱ͢৔ͷਓؒ͸ݖҖతʹͳ Γ͕ͪ • ීஈ͔Βҙࣝ͠ͳ͍ͱࣗ෼Ͱ΋ͦ͏ͳΔ͕࣌ ͋Δ ݖҖతʹͳΒͳ͍

Slide 72

Slide 72 text

• ։ൃͱӡ༻ͷϓϩηεΛग़དྷΔ͚ͩ߹ΘͤΔ • ։ൃ͕ӡ༻ʹࢀՃ͢ΔෑډΛԼ͛Δ • ΍Ζ͏ͱࢥ͑͹Ͱ͖Δͱ͍͏؀ڥ • ΠϯϑϥΤϯδχΞ͜Θ͘ͳ͍ ·ͱΊΔͱ

Slide 73

Slide 73 text

͔͜͜Β͓·͚

Slide 74

Slide 74 text

• ຊ೥౓΋৭ʑ͋Γ·ͨ͠ • དྷ೥౓΋৭ʑ͋ΔͰ͠ΐ͏ ηΩϡϦςΟΞοϓσʔτ

Slide 75

Slide 75 text

ηΩϡϦςΟΞοϓσʔτ νϟοτ͔ΒηΩϡϦςΟΞοϓσʔτΛࢦࣔ

Slide 76

Slide 76 text

ηΩϡϦςΟΞοϓσʔτ yum --secuity check-update ͷ݁ՌΛऔಘ

Slide 77

Slide 77 text

ηΩϡϦςΟΞοϓσʔτ ͦͷ಺༰͔Β Pull Request Λ࡞੒ͯ͠ɺΠϯϑϥϝϯόʔʹϝϯγϣϯ

Slide 78

Slide 78 text

ηΩϡϦςΟΞοϓσʔτ ϨϏϡʔͯ͠໰୊ͳ͚Ε͹୲౰ऀ͕ Pull Request Λ merge

Slide 79

Slide 79 text

ηΩϡϦςΟΞοϓσʔτ merge Λܖػʹɺର৅ͷαʔόʹରͯ͠ yum --security -y update

Slide 80

Slide 80 text

ηΩϡϦςΟΞοϓσʔτ E2E ςετͷ࣮ߦ΋Chatܦ༝ͰՄೳͳͷͰɺಉ࣌ʹ࣮ߦ ࠓճͷߋ৽͕ΞϓϦέʔγϣϯͷಈ࡞ʹӨڹΛ༩͍͑ͯͳ͍͔νΣοΫ

Slide 81

Slide 81 text

ݱߦͷӡ༻ϓϩηεͷ՝୊

Slide 82

Slide 82 text

CircleCI ͕ϘτϧωοΫ

Slide 83

Slide 83 text

CircleCI ͕ϘτϧωοΫ

Slide 84

Slide 84 text

࢖͍ͬͯΔ SaaS Ͱྑ͔ͬͨ΋ͷ

Slide 85

Slide 85 text

No content

Slide 86

Slide 86 text

Bugsnag ΤϥʔΛݕ஌ͯ͠ɺݟ΍͘͢μογϡϘʔυʹ·ͱΊͯ͘ΕΔ

Slide 87

Slide 87 text

Bugsnag Slack ౳ͷνϟοτʹ௨஌΋ग़ͤΔ Կճ·Ͱ͸ڐ༰͢Δ or ͜ͷύλʔϯ͸εϧʔ͢Δ ͳͲͷௐ੔΋Մೳ

Slide 88

Slide 88 text

Pingdom http(s) ͷΤϯυϙΠϯτͷ֎෦͔Β؂ࢹ ෳ਺ͷڌ఺͔Β؂ࢹΛߦ͏

Slide 89

Slide 89 text

PagerDuty ো֐࣌ͷ௨஌Λߦͬͯ͘ΕΔαʔϏε on-call schedule ʹैͬͯి࿩ / SMS / εϚʔτϑΥϯΞϓϦͷ௨஌

Slide 90

Slide 90 text

PagerDuty Sensu ΍ Pingdom ͱͷ Integration ΋؆୯

Slide 91

Slide 91 text

PagerDuty ࠓ೔͸̋̋͞ΜٳΈ͔ͩΒɺon-call εέδϡʔϧม͓͑ͯ͜͏ ͳͲͷௐ੔΋༰қ

Slide 92

Slide 92 text

We’re Hiring! https://kaizenplatform.com/hiring/engineer.html