$30 off During Our Annual Pro Sale. View Details »

開発するように運用するインフラ JAWS DAYS 2015

mdoi
March 22, 2015
15k

開発するように運用するインフラ JAWS DAYS 2015

mdoi

March 22, 2015
Tweet

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. View Slide

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

    View Slide

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

    View Slide

  7. View Slide

  8. View Slide

  9. View Slide

  10. ։ൃଆͷϫʔΫϑϩʔ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  14. Pull Request

    View Slide

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

    View Slide

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

    View Slide

  17. ϨϏϡʔ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  28. E2E ςετ
    QA؀ڥͰ࣮ࢪ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  37. ӡ༻ଆͷϫʔΫϑϩʔ

    View Slide

  38. ߏ੒؅ཧ

    View Slide

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

    View Slide

  40. ߏ੒؅ཧ

    View Slide

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

    View Slide

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

    ߏங༻ϒϥϯν΁ͷ merge
    Λࢦࣔ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  66. ϓϩηεΛ߹ΘͤΔϝϦοτ
    • ։ൃଆ΋ΠϯϑϥͷมߋΛ͢Δ͜ͱ͕ग़དྷΔ
    • ։ൃଆͰ΍Γͨ͘ͳΔมߋ
    • ϦόʔεϓϩΩγͰ̋̋ϔομ෇͚͍ͨ
    • ̋̋ϑΝΠϧΛ഑ஔ͍ͨ͠
    • ௥ՃػೳͷͨΊʹ̋̋ύοέʔδΛೖΕ͍ͨ
    Dev < ͜ΕೖΕ͍ͨͰ͢
    Ops < ҰճϛʔςΟϯά͠·͠ΐ͏͔
    ʙϛʔςΟϯάʙ

    Dev < ͜ΕೖΕ͍ͨͰ͢
    Ops < ͦ΋ͦ΋ͳΜͰඞཁͳΜͰ͚ͨͬ͠
    Dev < ͔͔͔͔͘͘͠͡
    Ops < Ͱ͸ௐ੔ͯ͠ɺ݄̋☓೔ʹೖΕ·͠ΐ͏ɻ୲౰ऀ͸̋̋͞
    ΜΞαΠϯͰɻ
    ଓ͘…

    View Slide

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

    View Slide

  68. KAIZEN ΤϯδχΞߦಈࢦ਑

    View Slide

  69. KAIZEN ΤϯδχΞߦಈࢦ਑

    View Slide

  70. ݖҖతʹͳΒͳ͍
    DevOps Day Tokyo 2013

    @mirakui ͞ΜͷεϥΠυΑΓҾ༻

    View Slide

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

    View Slide

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

    View Slide

  73. ͔͜͜Β͓·͚

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  82. CircleCI ͕ϘτϧωοΫ

    View Slide

  83. CircleCI ͕ϘτϧωοΫ

    View Slide

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

    View Slide

  85. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  90. PagerDuty
    Sensu ΍ Pingdom ͱͷ Integration ΋؆୯

    View Slide

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

    View Slide

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

    View Slide