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

CloudFormationを使ったPRを出しまくれるワークフロー/CloudFormaton for team

Yousan_O
August 24, 2019

CloudFormationを使ったPRを出しまくれるワークフロー/CloudFormaton for team

サーバレスフレームワークを使ったシステム開発の場合、Lambdaが乱立すること、フロントとサーバサイドでの仕様の同期(API設計、スキーマ)が問題となっていました。
CloudFormationのスタックを活用することでPRのブランチを独立したデプロイとし、機能追加が円滑にしたお話です。

Yousan_O

August 24, 2019
Tweet

More Decks by Yousan_O

Other Decks in Programming

Transcript

  1. $MPVE'PSNBUJPOΛ࢖ͬͨ

    13Λग़͠·͘ΕΔϫʔΫϑϩʔ
    2019年年8⽉月24⽇日 JAWS-UG AIZU

    View Slide

  2. -BNCEB

    View Slide

  3. View Slide

  4. (&5VTFS

    View Slide

  5. (&5VTFS
    4FSWFSMFTTJT
    $00-

    View Slide

  6. (&5VTFS

    View Slide

  7. (&5VTFS
    1045VTFS %&-&5&VTFS

    View Slide

  8. (&5VTFS
    1045VTFS %&-&5&VTFS
    4FSWFSMFTTJT
    "8&40.&

    View Slide

  9. (&5VTFS
    1045VTFS %&-&5&VTFS
    1045PSHBOJ[BUJPO %&-&5&PSHBOJ[BUJPO
    (&5PSHBOJ[BUJPO
    1045QPJOU %&-&5&QPJOU
    (&5QPJOU
    1045TDPSF %&-&5&TDPSF
    (&5TDPSF
    1045TIPQ %&-&5&TI
    (&5TIPQ
    45IJTUPSZ %&-&5&IJTUPSZ
    (&5IJTUPSZ

    View Slide

  10. (&5VTFS
    1045VTFS %&-&5&VTFS
    1045PSHBOJ[BUJPO %&-&5&PSHBOJ[BUJPO
    (&5PSHBOJ[BUJPO
    1045QPJOU %&-&5&QPJOU
    (&5QPJOU
    1045TDPSF %&-&5&TDPSF
    (&5TDPSF
    1045TIPQ %&-&5&TI
    (&5TIPQ
    45IJTUPSZ %&-&5&IJTUPSZ
    (&5IJTUPSZ
    4FSWFSMFTTJT
    6#&3"8&40.&

    View Slide

  11. (&5VTFS
    1045VTFS %&-&5&VTFS
    1045PSHBOJ[BUJPO %&-&5&PSHBOJ[BUJPO
    (&5PSHBOJ[BUJPO
    1045QPJOU %&-&5&QPJOU
    (&5QPJOU
    1045TDPSF %&-&5&TDPSF
    (&5TDPSF
    1045TIPQ %&-&5&TI
    (&5TIPQ
    45IJTUPSZ %&-&5&IJTUPSZ
    (&5IJTUPSZ
    /PHJUIFSF

    View Slide

  12. (&5VTFS
    1045VTFS %&-&5&VTFS
    1045PSHBOJ[BUJPO %&-&5&PSHBOJ[BUJPO
    (&5PSHBOJ[BUJPO
    1045QPJOU %&-&5&QPJOU
    (&5QPJOU
    1045TDPSF %&-&5&TDPSF
    (&5TDPSF
    1045TIPQ %&-&5&TI
    (&5TIPQ
    45IJTUPSZ %&-&5&IJTUPSZ
    (&5IJTUPSZ

    View Slide

  13. (&5VTFS
    1045VTFS %&-&5&VTFS
    1045PSHBOJ[BUJPO %&-&5&PSHBOJ[BUJPO
    (&5PSHBOJ[BUJPO
    1045QPJOU %&-&5&QPJOU
    (&5QPJOU
    1045TDPSF %&-&5&TDPSF
    (&5TDPSF
    1045TIPQ %&-&5&TI
    (&5TIPQ
    45IJTUPSZ %&-&5&IJTUPSZ
    (&5IJTUPSZ

    View Slide

  14. (&5VTFS
    1045VTFS %&-&5&VTFS
    1045PSHBOJ[BUJPO %&-&5&PSHBOJ[BUJPO
    (&5PSHBOJ[BUJPO
    1045QPJOU %&-&5&QPJOU
    (&5QPJOU
    1045TDPSF %&-&5&TDPSF
    (&5TDPSF
    1045TIPQ %&-&5&TI
    (&5TIPQ
    45IJTUPSZ %&-&5&IJTUPSZ
    (&5IJTUPSZ

    View Slide

  15. ཚཱ-BNCEB

    View Slide

  16. ؅ཧ͞Ε͍ͯͳ͍-BNCEB
    ։ൃऀ͕ͦΕͧΕ-BNCEBؔ਺Λ࡞੒
    (JU؅ཧ͞Ε͍ͯͳ͍
    ίʔυΛݟΔʹ͸-BNCEB͔Βμ΢ϯϩʔυ
    ʢѹॖࡁΈʣ
    ཚཱ-BNCEB

    View Slide

  17. ܧଓతͳ։ൃ͸ෆՄೳ
    ਓ͕มΘΔͱίʔυ͕ແ͘ͳΔ
    (JU؅ཧ͞Ε͍ͯΔ෦෼΋͋Δ͕

    ΤϯυϙΠϯτͱϒϥϯν͕ෳࡶ
    ཚཱ-BNCEB

    View Slide

  18. Ϗϧυ

    View Slide

  19. (JUಋೖͨ͠Αʂ
    ͜ΕͰ؅ཧͰ͖Δʂ
    ґଘύοέʔδೖΒͳ͍ʜ
    3&"%.&ߋ৽͞Εͯͳ͍ʜ
    Ͳ͏΍ͬͯϏϧυ͢Ε͹ʜʁ

    View Slide

  20. ͋ͬɺͦͷϒϥϯν

    ΋͏࢖ͬͯͳ͍Α
    ʜʜ
    ࢁ઒͞ΜͳΒσϓϩΠ
    Ͱ͖Δ͔Βฉ͍ͯΈͯ

    View Slide

  21. View Slide

  22. σϓϩΠग़དྷͳ͍໰୊

    View Slide

  23. Ϗϧυ؀ڥ
    ઀ଓ৘ใ
    "1*ΤϯυϙΠϯτ63-
    ϑϩϯτΤϯυΤϯδχΞʴαʔόαΠυΤϯδχΞ
    %#৘ใ
    ϝϯόʔ͕૿͑Δͱʜʁ
    σϓϩΠग़དྷͳ͍໰୊

    View Slide

  24. ϝϯόʔߏ੒
    ディレクター
    デザイナー・コーダー
    フロント エンジニア

    サーバ エンジニア
    仕様

    View Slide

  25. ϝϯόʔߏ੒
    ディレクター
    デザイナー・コーダー
    フロント エンジニア x3

    サーバ エンジニア x3
    仕様

    View Slide

  26. ϝϯόʔߏ੒
    フロント エンジニア x3

    サーバ エンジニア x3
    ಈ࡞֬ೝ
    ͓ئ͍͠·͢ʂ

    View Slide

  27. ϝϯόʔߏ੒
    ディレクター
    σϓϩΠ
    Ͳ͏͢Δͷʜʁ

    View Slide

  28. σϓϩΠग़དྷͳ͍ʂ

    View Slide

  29. ཚཱ-BNCEB
    σϓϩΠͰ͖ͳ͍໰୊
    ʢͦΕʹΑͬͯʣνʔϜ։ൃ͕ࠔ೉
    ໰୊

    View Slide

  30. ࣗݾ঺հ

    View Slide

  31. ਆ֞ɹ૱
    ΠϯϑϥɺϓϩάϥϜ
    8PSE1SFTTͷߴ଎Խ
    ޷͖ͳݴޠ͸1)1
    ࣗݾ঺հ
    ࣗݾ঺հ

    View Slide

  32. ࣗݾ঺հ

    View Slide

  33. גࣜձࣾɹσβΠχ΢Ϝ
    νʔϜ։ൃࢧԉʢΠϯλʔϯੜଞʣ
    גࣜձࣾɹ'MPBUJOH8FFE
    1)1 8PSE1SFTTɺ-BSBWFMʣ
    ࣗݾ঺հ

    View Slide

  34. ݱ৔Ͱى͖͍ͯͨ໰୊఺
    αʔόϨεΞʔΩςΫνϟͱ$MPVE'PSNBUJPO
    ղܾํ๏
    Ͳ͏ͳ͔ͬͨ
    ໨࣍

    View Slide

  35. ݱ৔Ͱى͖͍ͯͨ໰୊఺
    αʔόϨεΞʔΩςΫνϟͱ$MPVE'PSNBUJPO
    ղܾํ๏
    Ͳ͏ͳ͔ͬͨ
    ໨࣍

    View Slide

  36. αʔόϨεΞʔΩςΫνϟ

    View Slide

  37. 4FSWFSMFTT'SBNFXPSL
    ʢͬͪ͜ʣ
    "844".
    αʔόϨεΞʔΩςΫνϟ

    View Slide

  38. "84
    (PPHMF$MPVE1MBUGPSN
    "[VSF
    0QFO8IJTL
    ,VCFMFTT
    $MPVEqBSF
    4FSWFSMFTT'SBNFXPSL

    View Slide

  39. -BNCEB
    'BB4ʢ'VODUJPOBTB4FSWJDFʣ
    ֎෦ͱͷ઀ଓ
    "1*(BUFXBZ
    "QQ4ZOD
    4
    %ZOBNP%#
    "84ͱ4FSWFSMFTTΞʔΩςΫνϟ

    View Slide

  40. ͜ΕΒͷ؅ཧ͕େม

    View Slide

  41. $MPVE'PSNBUJPO $'O

    ʢαʔόϨεʹݶΒͣʣΠϯϑϥͷߏ੒Λ؅ཧ *BB4

    -BNCEB "1*(BUFXBZ %ZOBNP%# 4 *".
    $MPVE'PSNBUJPOςϯϓϨʔτͰهड़
    ୯Ґ͸ʮελοΫʯ
    αʔόϨεΞʔΩςΫνϟͷߏ੒͕ศརʂ
    "844".ͷݩ
    ʢ"844".͸$MPVE'PSNBUJPOͷ֦ுʣ
    ؅ཧ͕େม

    View Slide

  42. 4FSWFSMFTTͷσϓϩΠ

    $MPVE'PSNBUJPOελοΫΛσϓϩΠ
    "84ʹݶΒͣ൚༻Խ͍ͯ͠Δ
    4FSWFSMFTT'SBNFXPSL

    View Slide

  43. ݱ৔Ͱى͖͍ͯͨ໰୊఺

    View Slide

  44. σϓϩΠͰ͖Δਓ͕ݶΒΕΔ
    OQNTMTͳͲɺΤϯδχΞͷΈ
    ؀ڥʹΑͬͯϏϧυࣦഊ
    ඞཁύοέʔδͷόʔδϣϯ
    ϏϧυͱσϓϩΠͷ࣌ؒʢ෼ʣ
    ϑϩϯτͱαʔόαΠυ͕ඇಉظʹσϓϩΠ
    ϑϩϯτ͕ٻΊΔߏ੒ͱαʔόαΠυͷߏ੒ෆҰக
    ݱ৔Ͱى͖͍ͯͨ໰୊఺

    View Slide

  45. ΫϥΠΞϯτ
    σΟϨΫλʔ
    ΤϯδχΊŠ͜ͷਓ͚͕ͩσϓϩΠՄೳ
    ςελʔ
    σϓϩΠͰ͖Δਓ͕ݶΒΕΔ

    View Slide

  46. ϑϩϯτͱαʔόαΠυ
    νʔϜϝϯόʔؒͰͷಈ࡞ϨϏϡʔ
    σΟϨΫλʔͷಈ࡞ϨϏϡʔ
    ϩʔΧϧ؀ڥʁ
    νΣοΫΞ΢τϏϧυ֬ೝ
    ͦΕ͸େมʜ
    σϓϩΠͰ͖Δਓ͕ݶΒΕΔ

    View Slide

  47. ݱ৔Ͱى͖͍ͯͨ໰୊఺
    αʔόϨεΞʔΩςΫνϟͱ$MPVE'PSNBUJPO
    ղܾํ๏
    Ͳ͏ͳ͔ͬͨ
    ໨࣍

    View Slide

  48. ղܾํ๏

    View Slide

  49. (JU
    (JUqPX13
    13ʹର͢Δಈ࡞ϨϏϡʔ
    $*$% $JSDMF$*

    ͦͷଞ
    ϒϥϯν໊ɺ؀ڥɺ%#γʔσΟϯάɺϚΠάϨʔγϣϯ
    ϫʔΫϑϩʔͷಋೖ

    View Slide

  50. (JUʹฏԺΛ
    ̍ϒϥϯνϧʔϧ
    ̍ϒϥϯν̍ਓ
    ̍ϒϥϯν̍λεΫʢϢʔβʔετʔϦʔʣ
    ϒϥϯν̍13
    ̍ϒϥϯν̍σϓϩΠ
    (JU(JUqPX13

    View Slide

  51. ೥݄ʴ໊લʴػೳ໊
    ϒϥϯνͷॴ༗ऀʢ੹೚ऀʣΛ໌֬ʹ
    ղܾλεΫΛ໌֬ʹ
    λεΫ͕ਖ਼͘͠෼ղ͞Ε͍ͯΕ͹13͕ಠཱ͠΍͘͢ͳΔ
    λεΫͷ෼͚ํ͸೉͍͠
    ໋໊نଇ

    View Slide

  52. $MPVE'PSNBUJPOͷϙΠϯτ

    View Slide

  53. ελοΫͰಠཱ
    ϒϥϯν͝ͱʹಠཱ
    ελοΫ͝ͱʹϦιʔε͕ಠཱ
    -BNCEBʢηοτʣ
    "QQ4ZOD
    "1*(BUFXBZ
    %ZOBNP%#
    ໋໊نଇ

    View Slide

  54. Ϧιʔε͕ಠཱ

    View Slide

  55. (&5VTFS
    1045VTFS %&-&5&VTFS
    1045PSHBOJ[BUJPO %&-&5&PSHBOJ[BUJPO
    (&5PSHBOJ[BUJPO
    1045QPJOU %&-&5&QPJOU
    (&5QPJOU
    1045TDPSF %&-&5&TDPSF
    (&5TDPSF
    1045TIPQ %&-&5&TI
    (&5TIPQ
    45IJTUPSZ %&-&5&IJTUPSZ
    (&5IJTUPSZ

    View Slide

  56. (&5VTFS
    1045VTFS %&-&5&VTFS
    1045PSHBOJ[BUJPO %&-&5&PSHBOJ[BUJPO
    (&5PSHBOJ[BUJPO
    1045QPJOU %&-&5&QPJOU
    (&5QPJOU
    1045TDPSF %&-&5&TDPSF
    (&5TDPSF
    1045TIPQ %&-&5&TI
    (&5TIPQ
    45IJTUPSZ %&-&5&IJTUPSZ
    (&5IJTUPSZ
    ֬ೝແཧͬ͢ʜ

    View Slide

  57. ཚཱ

    View Slide

  58. Ϧιʔε͕ಠཱ

    View Slide

  59. ελοΫͰಠཱ
    ϒϥϯν͝ͱʹಠཱ
    ελοΫ໊ΛϢχʔΫʹ
    ϒϥϯν໊ΛݩʹελοΫ໊Λ෇༩
    ௕੍͞ݶ͋Γʢจࣈ

    จࣈͷதͰϢχʔΫʹ͢Δ
    ໋໊نଇ

    View Slide

  60. ελοΫ໊Λϒϥϯν໊͔Β࡞੒
    ϒϥϯνͷ໋໊نଇΛݩʹελοΫ໊Λܾఆ


    GFBUVSFZPVTBOUSZDZQSFTT


    GFBUVSFZPVTBOUSZDZQSFTT


    ZPVTUSZDZQSFTTDF
    ϒϥϯν໊ͱ$'OελοΫ໊

    View Slide

  61. Ϧιʔε͕ಠཱ
    ZPVTUSZDZQSFTTDF
    TBLBpYBENJOBCD
    ZPVTUSZDZQSFTTDF

    View Slide

  62. Ϧιʔε͕ಠཱ
    ZPVTUSZDZQSFTTDF
    ZPVTUSZDZQSFTTDF
    ZPVTUSZDZQSFTTDF
    ಈ࡞֬ೝ
    ͓ئ͍͠·͢ʂ

    View Slide

  63. ಠཱͨ͠63-͕ൃߦ
    ಠཱ
    $MPVE'PSNBUJPO
    4
    "QQ4ZOD
    %ZOBNP%#
    Ϧιʔε͕ಠཱ

    View Slide

  64. 13͝ͱʹ
    ಈ࡞֬ೝͰ͖Δʜʂ

    View Slide

  65. 13ͨ͘͞Μʜʂ

    View Slide

  66. ·ͱΊ
    ZPVTUSZDZQSFTTDF
    TBLBpYBENJOBCD
    ZPVTUSZDZQSFTTDF

    View Slide

  67. ཚཱ-BNCEBɺσϓϩΠग़དྷͳ͍໰୊
    $MPVE'PSNBUJPOɺ4FSWFSMFTT'SBNFXPSL
    σϓϩΠͱϒϥϯνʹϧʔϧʢ໋໊نଇʣ
    13Ͱಠཱ
    ·ͱΊ

    View Slide

  68. ٕज़తͳഎܠ

    View Slide

  69. ໋໊نଇ͕ϙΠϯτ
    εΫϦϓτԽ
    4FSWFSMFTTͷʮεςʔδ໊ʯΛར༻
    NBTUFS EFWFMPQ͸ͦͷ··ͷεςʔδ໊
    ໋໊نଇ

    View Slide

  70. ίʔυ
    https://git.io/fjN1X

    View Slide

  71. 4͸$MPVE'PSNBUJPOʹೖΕͳ͍΄͏͕ྑ͍
    4ΛελοΫʹೖΕΔ͜ͱ͸Մೳ
    ࡟আ͢Δͱ͖ʹ4Λ࡟আ$'OΛ࡟আ͠ͳ͚Ε͹ͳΒ
    ͳ͍
    4࡟আϑΝΠϧશ࡟আόέοτ࡟আ
    εςʔδ໊͔Βόέοτ໊ͷεΫϦϓτ
    $'OσϓϩΠΤϯυϙΠϯτऔಘϑϩϯτʹઃఆ
    ஫ҙ఺

    View Slide

  72. $MPVE'SPOUͱ૬ੑ͕ѱ͍
    $MPVE'SPOUͷΤϯυϙΠϯτ63-͕औಘͮ͠Β͍
    $'OελοΫ$MPVE'SPOU͕೉͍͠
    4ͱ$MPVE'SPOU͸$'OʹೖΕͳ͍΄͏͕ྑ͍
    ஫ҙ఺

    View Slide

  73. ίʔυ

    View Slide

  74. 13Ͱಠཱ͸͍ͯ͠Δ
    Πϯϑϥ΍αʔόαΠυ͕༩͑ΔӨڹ
    13͝ͱʹ࿈ܞ͕ඞཁͳϙΠϯτ͸ଘࡏ
    ʮ੹೚෼ք఺ʯ
    "1*ఆٛॻ
    (SBQI2-εΩʔϚϑΝΠϧ
    ஫ҙ఺

    View Slide

  75. 13Ͱಠཱ͸͍ͯ͠Δ
    Πϯϑϥ΍αʔόαΠυ͕༩͑ΔӨڹ
    13͝ͱʹ࿈ܞ͕ඞཁͳϙΠϯτ͸ଘࡏ
    ʮ੹೚෼ք఺ʯ
    "1*ఆٛॻ
    (SBQI2-εΩʔϚϑΝΠϧ
    ஫ҙ఺

    View Slide

  76. ཚཱ-BNCEBɺσϓϩΠͰ͖ͳ͍໰୊
    (JUͷϒϥϯνͰಠཱ
    ϒϥϯν੍౓
    $MPVE'PSNBUJPOελοΫͰಠཱ
    ϒϥϯν͝ͱʹσϓϩΠ
    σϓϩΠ͝ͱʹ13Ͱಈ࡞֬ೝ
    ·ͱΊ

    View Slide

  77. ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ
    ࣭໰͋Γ·ͨ͠Β࠙਌ձͰ΋Ͳ͏ͧ

    View Slide