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

B92d009de8d3901efa6d76e537ed2051?s=47 mdoi
March 22, 2015
13k

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

B92d009de8d3901efa6d76e537ed2051?s=128

mdoi

March 22, 2015
Tweet

Transcript

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

  2. ࣗݾ঺հ ౔ډɹਖ਼ߦ (@m_doi) Kaizen Platform Inc ΠϯϑϥΤϯδχΞ • ͜Ε·Ͱ •

    ϑΟʔνϟʔϑΥϯͷιϑτ΢ΣΞ։ൃ • SNS/ιγϟήܥͷωοτϫʔΫ / αʔόΤϯδχΞ • ؂ࢹγεςϜ౳ɺӡ༻ͷͨΊͷιϑτ΢ΣΞ։ൃ • ͓ؾʹೖΓͷAWSαʔϏε • DynamoDB ͱ Kinesis
  3. ࠓ೔ͷ͓࿩ • Kaizen Platform ͷ։ൃଆͷϫʔΫϑϩʔ • Kaizen Platform ͷӡ༻ଆͷϫʔΫϑϩʔ •

    ͜ΕΒͷϫʔΫϑϩʔʹࠐΊͨࢥ૝ • ͓·͚
  4. None
  5. EC2 Instance VPC ELB Route 53 S3 Glacier CloudFront RDS

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

  7. None
  8. None
  9. None
  10. ։ൃଆͷϫʔΫϑϩʔ

  11. • Work In Progress Ͱ Pull Request • ։ൃ •

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

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

  14. Pull Request

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

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

  17. ϨϏϡʔ

  18. • Work In Progress Ͱ Pull Request • ։ൃ •

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

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

  21. • CI ͷ SaaS • fooϒϥϯνʹpushͨ͠Βbar͢Δ • foo, bar ͷ෦෼Λࡉ੍͔͘ޚՄೳ

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

    • ୯७ͳίϚϯυΛ࣮ߦ͢Δ • ࣗ࡞ͨ͠೚ҙͷγΣϧεΫϦϓτΛ࣮ߦ͢Δ CircleCI ͭ·ΓɺGitHub ͷ ೚ҙͷϒϥϯν΁ͷ push Λܖػʹɺ ༷ʑͳϫʔΫϑϩʔΛఆٛͰ͖Δɻ
  23. ϦϦʔεϓϩηε master ϒϥϯν΁ͷ push Λܖػʹ Unit Test Λ࣮ߦ e2e ϒϥϯν΁ͷ

    push Λܖػʹ E2E Test Λ࣮ߦ E2E Test Deploy Unit Test deploy ϒϥϯν΁ͷ push Λܖػʹ Deploy Λ࣮ߦ
  24. ϦϦʔε࡞ۀ։࢝ σϓϩΠ༻ͷ Pull Request Λ࡞੒ νϟοτͰίϚϯυΛୟ͘ͱ΍ͬͯ͘ΕΔ

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

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

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

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

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

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

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

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

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

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

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

  36. • GitHub Λத৺ͱͨ͠։ൃϑϩʔ • CircleCI Λத৺ͱͨ͠ϦϦʔεϑϩʔ • GitHub ͱ CircleCI

    ͱ νϟοτͷૢ࡞ Ͱ׬݁ ·ͱΊΔͱ
  37. ӡ༻ଆͷϫʔΫϑϩʔ

  38. ߏ੒؅ཧ

  39. • Work In Progress Ͱ Pull Request • ߏ੒มߋΛ Chef

    recipe ʹམͱ͜͠Ή • ϨϏϡʔ • ߏஙςετ • ຊ൪ద༻ ӡ༻ϓϩηε
  40. ߏ੒؅ཧ

  41. ߏ੒؅ཧ 1. recipe ͷ࡞੒ 2. push 3. ࢼݧߏஙٴͼServerspec ʹΑΔݕূ 4.

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

    ʹΑΔݕূ 5. ߏங༻ϒϥϯν΁ͷ merge Λܖػʹ ຊ൪؀ڥʹద༻ 4. νϟοτͰ
 ߏங༻ϒϥϯν΁ͷ merge Λࢦࣔ
  43. ߏ੒มߋΛมߋΛ Chef recipe ʹམͱ͜͠Ή ߏ੒؅ཧ

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

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

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

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

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

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

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

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

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

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

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

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

    ʹΑΔCI
  56. ϒϥϯνͷ push / merge ΛτϦΨʹ master cook/QA DPPLຊ൪ ߏ੒มߋΛ2"؀ڥʹద༻ͯ֬͠ೝ NBTUFSDPPL2"ͷ1VMM3FRVFTU࡞੒NFSHF

    2"؀ڥʹ৽͍͠SFDJQFͰDPPL hubot cook run qa-***
  57. ϒϥϯνͷ push / merge ΛτϦΨʹ master QA ຊ൪ ֤ࣗɺಈ࡞֬ೝ &&ςετ΋࣮ߦ

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

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

  60. • GitHub Λத৺ͱͨ͠ߏ੒؅ཧϑϩʔ • CircleCI Λத৺ͱͨ͠มߋద༻ϑϩʔ • GitHub ͱ CircleCI

    ͱ νϟοτͷૢ࡞Ͱ ׬݁ ·ͱΊΔͱ
  61. ։ൃϓϩηεͱӡ༻ϓϩηε ͷൺֱ

  62. • Work In Progress Ͱ Pull Request • ։ൃ •

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

    ϨϏϡʔ • ߏஙςετ • ຊ൪ద༻ ӡ༻ϓϩηε
  64. • ։ൃ • GitHub Λத৺ͱͨ͠։ൃϑϩʔ • CircleCI Λத৺ͱͨ͠ϦϦʔεϑϩʔ • GitHub

    ͱ CircleCI ͱ νϟοτͷૢ࡞Ͱ׬݁ • ӡ༻ • GitHub Λத৺ͱͨ͠ߏ੒؅ཧϑϩʔ • CircleCI Λத৺ͱͨ͠มߋద༻ϑϩʔ • GitHub ͱ CircleCI ͱ νϟοτͷૢ࡞Ͱ׬݁ ൺֱ
  65. ϓϩηεΛ߹ΘͤΔϝϦοτ • ։ൃଆ΋ΠϯϑϥͷมߋΛ͢Δ͜ͱ͕ग़དྷΔ • ٯ΋·ͨવΓ • ։ൃଆͰ΍Γͨ͘ͳΔมߋ • ϦόʔεϓϩΩγͰ̋̋ϔομ෇͚͍ͨ •

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

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

    ௥ՃػೳͷͨΊʹ̋̋ύοέʔδΛೖΕ͍ͨ ɾͦ͜·ͰෳࡶͳมߋͰ͸ͳ͍ ɾಈ͖ʹΠϯύΫτΛ༩͑Δͱͯ͠΋ΠϯϑϥΤϯδχΞΛ ௨ͨ͠ϨϏϡʔͰνΣοΫ
  68. KAIZEN ΤϯδχΞߦಈࢦ਑

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

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

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

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

  73. ͔͜͜Β͓·͚

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

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

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

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

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

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

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

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

  82. CircleCI ͕ϘτϧωοΫ

  83. CircleCI ͕ϘτϧωοΫ

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

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

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

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

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

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

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

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