Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS CDKとGitHubActionsで始めるInfrastructure as CodeのCI/CD

AWS CDKとGitHubActionsで始めるInfrastructure as CodeのCI/CD

「Developers.IO 2022 〜技術で心を揺さぶる3日間〜」 の発表で利用した資料です

■Youtube動画
https://youtu.be/EpiGUb50bIE

ShuyaKinjo

July 20, 2022
Tweet

More Decks by ShuyaKinjo

Other Decks in Technology

Transcript


  1. $9ࣄۀຊ෦%FMJWFSZ෦."%άϧʔϓ
    ۚ৓ल࠸
    "84$%,ͱ(JU)VC"DUJPOTͰ࢝ΊΔ
    *OGSBTUSVDUVSFBT$PEFͷ$*$%

    View Slide

  2. ࣗݾ঺հ
    w $9ࣄۀຊ෦%FMJWFSZ෦."%άϧʔϓ
    w αʔόʔαΠυΤϯδχΞ
    w "1/"--"84$FSUJGJDBUJPOT&OHJOFFST
    w ޷͖ͳ"84ͷαʔϏε
    w "84$%,ɺ$MPVE'PSNBUJPO
    w $PEFγϦʔζ
    ۚ৓ल࠸ 4IVZB,JOKP

    @joe-king-sh

    View Slide


  3. "84ͷϦιʔεΛ
    ͲͷΑ͏ʹ؅ཧ͍ͯ͠·͔͢ʁ

    View Slide

  4. "84ͷϦιʔε؅ཧํ๏
    Ϛωδϝϯτίϯιʔϧ
    "84$-*
    *OGSBTUSVDUVSFBT$PEF *B$

    View Slide

  5. "84ͷϦιʔε؅ཧํ๏
    Ϛωδϝϯτίϯιʔϧ
    "84$-*
    *OGSBTUSVDUVSFBT$PEF *B$

    ࢖͍ࣺͯɺ΄ͱΜͲมߋ͠ͳ͍৔߹

    View Slide

  6. "84ͷϦιʔε؅ཧํ๏
    Ϛωδϝϯτίϯιʔϧ
    "84$-*
    *OGSBTUSVDUVSFBT$PEF *B$

    ఆظతʹ࣮ߦ͢Δӡ༻ɺॳظߏஙͷΈ

    View Slide

  7. ͜͏ߟ͍͑ͯΔͳΒ
    ܧଓతʹมߋ͕ඞཁ


    ӡ༻Λָʹ͍ͨ͠


    ։ൃεϐʔυΛ্͍͛ͨ

    View Slide


  8. Infrastructure as Code(IaC)͕


    ͋ͳͨΛ޾ͤʹͯ͘͠Ε·͢☺


    View Slide

  9. "84ͷϦιʔε؅ཧํ๏
    Ϛωδϝϯτίϯιʔϧ
    "84$-*
    *OGSBTUSVDUVSFBT$PEF *B$

    ܧଓతʹมߋ͕ඞཁɺӡ༻Λָʹ͍ͨ͠ɺ։ൃ଎౓Λ্͍͛ͨ

    View Slide


  10. ͦͷ*B$Λ
    Ͳ͏΍ͬͯσϓϩΠ͢Δ͔ʁ

    View Slide


  11. ܧଓతʹมߋ͕ඞཁͳIaCͷσϓϩΠΛ


    ʮखಈʯͰߦ͍ͬͯΔ৔߹…

    View Slide


  12. IaCͷޮՌΛ࠷େݶʹൃشͰ͖͍ͯ·ͤΜ

    View Slide


  13. ͔ͤͬ͘IaCԽͯ͠࡞ۀΛࣗಈԽ͢ΔͳΒɺ


    ࠷ޙͷσϓϩΠ·ͰࣗಈԽ͠·͠ΐ͏🚀

    View Slide

  14. ͜Ε͔Β࿩͢಺༰
    ͳͥ*B$͸$*$%ʹ৐ͤΔ΂͖͔ʁ
    Ͳ͏΍ͬͯ*B$$*$%Λߏங͍ͯ͘͠ͷ͔ʁ
    *B$πʔϧ
    ϦϙδτϦɺ$*πʔϧ
    ΞϓϦͱΠϯϑϥͷίʔυ؅ཧ
    ϒϥϯνઓུ
    *B$$*$%ߏ੒ͷ۩ମྫ

    View Slide


  15. ͜Ε͔Β*B$Λಋೖ͢Δํ
    *B$΍$*$%ߏஙͷϋʔυϧΛԼ͛Δ
    $*$%ͷߏஙΛηοτͰߟ͍͑ͯͨͩ͘
    ͢Ͱʹ*B$΍$*$%ΛಋೖࡁΈͷํ
    طଘͷӡ༻ݟ௚͠ͷ͖͔͚ͬͱͳΔ
    ࠓޙͷݕ౼࣌ͷબ୒ࢶΛ૿΍͢
    ຊηογϣϯͷΰʔϧ

    View Slide


  16. ͋ͳͨͷ૊৫ʹ߹ͬͨɺ


    ࠷దͳIaCͱCI/CDͷߏஙํ๏Λ


    Ұॹʹߟ͍͖͑ͯ·͠ΐ͏😄

    View Slide


  17. *B$ʹԿΛٻΊΔͷ͔ʁ

    View Slide

  18. *B$ͰಘΒΕΔ΋ͷ
    Πϯϑϥͷόʔδϣϯ؅ཧ
    มߋ಺༰ͷίʔυϨϏϡʔ
    ਓతϛεͷ࡟ݮ
    มߋ؅ཧ
    ߏ੒؅ཧ
    ։ൃεϐʔυ
    ίʔυΛಡΊ͹Πϯϑϥߏ੒͕Θ͔Δ
    ΠϯϑϥΛҰݩ؅ཧ
    ࠶ݱੑͷ͋ΔσϓϩΠ
    ૉૣ͍σϓϩΠɾϩʔϧόοΫ
    ༰қʹ؀ڥΛෳ੡

    View Slide


  19. ຊ౰ʹͦ͏Ͱ͠ΐ͏͔🤔

    View Slide

  20. ྫ͑͹ɺ͜ΜͳखಈσϓϩΠΛͯ͠Δͱʜ
    લఏɿ$MPVE'PSNBUJPOͰ*B$Խ
    ᶃϩʔΧϧ1$͔Β"84$-*ͰσϓϩΠ
    ᶄσϓϩΠ؀ڥ͝ͱʹύϥϝʔλʔΛ্ॻ͖
    ᶅελοΫؒʹґଘؔ܎͕͋ΔɺσϓϩΠखॱ͕ෳࡶ

    View Slide

  21. ᶃϩʔΧϧ1$͔Β"84$-*ͰσϓϩΠ
    ϦϞʔτϦϙδτϦ͔Β࠷৽ίʔυΛऔಘ
    ϩʔΧϧͰίʔυΛमਖ਼
    $-*Ͱຊ൪؀ڥ΁σϓϩΠ
    ΋͠΋ϦϞʔτ΁νΣοΫΠϯΛ๨ΕΔͱʜ

    View Slide

  22. ΋͠΋ϦϞʔτ΁νΣοΫΠϯΛ๨ΕΔͱʜ
    ࠷৽ιʔεͱΠϯϑϥ͕ဃ཭͠ɺ


    ࠷ѱͷ৔߹σάϨ͕ൃੜ͠·͢⚠

    View Slide

  23. *B$͚ͩͰ͸อূ͞Εͳ͍΋ͷ
    Πϯϑϥͷόʔδϣϯ؅ཧ
    มߋ಺༰ͷίʔυϨϏϡʔ
    ਓతϛεͷ࡟ݮ
    มߋ؅ཧ
    ߏ੒؅ཧ
    ։ൃεϐʔυ
    ίʔυΛಡΊ͹Πϯϑϥߏ੒͕Θ͔Δ
    ΠϯϑϥΛҰݩ؅ཧ
    ࠶ݱੑͷ͋ΔσϓϩΠ
    ૉૣ͍σϓϩΠɾϩʔϧόοΫ
    ༰қʹ؀ڥΛෳ੡

    View Slide

  24. ᶄσϓϩΠ؀ڥ͝ͱʹύϥϝʔλʔΛ্ॻ͖
    $MPVE'PSNBUJPOͷύϥϝʔλʔΛखಈઃఆ
    ؀ڥ͝ͱʹύϥϝʔλʔ͸ίʔυԽ͍ͯ͠Δ͕ɺ
    EFW TUH QSEͱ͍ͬͨ؀ڥΛखಈͰࢦఆ
    BXTDMPVEGPSNBUJPOEFQMPZa
    UFNQMBUF
    fi
    MFUFNQMBUFZBNMa
    QBSBNFUFSPWFSSJEFTFOWJSPONFOUQSEa
    TUBDLOBNF.Z4UBDL

    View Slide

  25. σϓϩΠઃఆΛؒҧ͑Δͱʜ
    ҙਤ͠ͳ͍Ϧιʔεͷઃఆมߋ΍ɺ


    σϓϩΠઌͷ؀ڥΛޡΓ·͢😨

    View Slide

  26. *B$͚ͩͰ͸อূ͞Εͳ͍΋ͷ
    Πϯϑϥͷόʔδϣϯ؅ཧ
    มߋ಺༰ͷίʔυϨϏϡʔ
    ਓతϛεͷ࡟ݮ
    มߋ؅ཧ
    ߏ੒؅ཧ
    ։ൃεϐʔυ
    ίʔυΛಡΊ͹Πϯϑϥߏ੒͕Θ͔Δ
    ΠϯϑϥΛҰݩ؅ཧ
    ࠶ݱੑͷ͋ΔσϓϩΠ
    ૉૣ͍σϓϩΠɾϩʔϧόοΫ
    ༰қʹ؀ڥΛෳ੡

    View Slide

  27. ᶅελοΫؒʹґଘؔ܎͕͋ΔɺσϓϩΠखॱ͕ෳࡶ
    VPC Database
    API GW
    Lambda

    View Slide

  28. ελοΫؒʹґଘؔ܎͕͋ΔɺσϓϩΠखॱ͕ෳࡶ
    σϓϩΠ͕ਏ͍


    ໭͢ͷ͸΋ͬͱਏ͍😢

    View Slide

  29. *B$͚ͩͰ͸อূ͞Εͳ͍΋ͷ
    Πϯϑϥͷόʔδϣϯ؅ཧ
    มߋ಺༰ͷίʔυϨϏϡʔ
    ਓతϛεͷ࡟ݮ
    มߋ؅ཧ
    ߏ੒؅ཧ
    ։ൃεϐʔυ
    ίʔυΛಡΊ͹Πϯϑϥߏ੒͕Θ͔Δ
    ΠϯϑϥΛҰݩ؅ཧ
    ࠶ݱੑͷ͋ΔσϓϩΠ
    ૉૣ͍σϓϩΠɾϩʔϧόοΫ
    ༰қʹ؀ڥΛෳ੡

    View Slide

  30. ͜ΕΒ͸*B$$*$%ͰॳΊͯอূ͞ΕΔ΋ͷͰ͢
    Πϯϑϥͷόʔδϣϯ؅ཧ
    มߋ಺༰ͷίʔυϨϏϡʔ
    ਓతϛεͷ࡟ݮ
    มߋ؅ཧ
    ߏ੒؅ཧ
    ։ൃεϐʔυ
    ίʔυΛಡΊ͹Πϯϑϥߏ੒͕Θ͔Δ
    ΠϯϑϥΛҰݩ؅ཧ
    ࠶ݱੑͷ͋ΔσϓϩΠ
    ૉૣ͍σϓϩΠɾϩʔϧόοΫ
    ༰қʹ؀ڥΛෳ੡
    ※खಈͰAWS͸৮Βͳ͍ͱ͍͏લఏ༗Γ

    View Slide


  31. ΋ͬͱྑ͍͜ͱ΋͋Γ·͢

    View Slide

  32. *B$$*$%ͰಘΒΕΔ΋ͷЋ
    Πϯϑϥͷόʔδϣϯ؅ཧ
    มߋ಺༰ͷίʔυϨϏϡʔ
    ਓతϛεͷ࡟ݮ
    มߋ؅ཧ
    ߏ੒؅ཧ
    ։ൃεϐʔυ
    ίʔυΛಡΊ͹Πϯϑϥߏ੒͕Θ͔Δ
    ΠϯϑϥΛҰݩ؅ཧ
    ࠶ݱੑͷ͋ΔσϓϩΠ
    ૉૣ͍σϓϩΠɾϩʔϧόοΫ
    ༰қʹ؀ڥΛෳ੡
    ࣗಈςετ
    ؂ࠪରԠ
    ΞΫηεݖݶ؅ཧ
    Ҿܧ͕؆୯

    View Slide


  33. CI/CD·Ͱ੔උͯ͠


    IaCΛ࠷େݶʹ׆༻͠·͠ΐ͏🎉

    View Slide

  34. ໨࣍
    ͳͥ*B$͸$*$%ʹ৐ͤΔ΂͖͔ʁ
    Ͳ͏΍ͬͯ*B$$*$%Λߏங͍ͯ͘͠ͷ͔ʁ
    *B$πʔϧ
    ϦϙδτϦɺ$*πʔϧ
    ΞϓϦͱΠϯϑϥͷίʔυ؅ཧ
    ϒϥϯνઓུ
    *B$$*$%ߏ੒ͷ۩ମྫ

    View Slide

  35. *B$$*$%ߏஙͷݕ౼ϙΠϯτ
    Ͳͷ*B$πʔϧΛ࢖͏ʁ
    ϦϙδτϦɾ$*πʔϧ͸ԿΛબͿʁ
    ΞϓϦͱΠϯϑϥ͸෼͚Δʁ
    ϒϥϯνઓུ͸Ͳ͏͢Δʁ

    View Slide

  36. "84ϦιʔεΛ؅ཧ͢Δ*B$πʔϧͷྫ
    AWS SAM
    AWS CDK
    CloudFormation

    View Slide

  37. πʔϧબఆͷ؍఺
    Πϯϑϥͷ؅ཧऀ΍νʔϜͷεΩϧηοτ
    ߏங͢ΔΞϓϦέʔγϣϯͷछྨ
    *5౷੍ํ਑ ϚϧνΫϥ΢υ૝ఆͷ༗ແͳͲ

    Ͳͷ*B$πʔϧΛ࢖͏͔ʁ
    CloudFormation AWS SAM AWS CDK

    View Slide

  38. Ͳͷ*B$πʔϧΛ࢖͏͔ʁ
    AWS CDK
    "84$%,͸ҎԼͷ఺ͰΦεεϝͰ͢
    ։ൃεϐʔυΛ޲্ͤ͞Δ
    มߋࠩ෼ͷࢹೝੑ͕ྑ͍
    *B$Λॻָ͍͍͍ͯͯ͠
    ιϑτ΢ΣΞΤϯδχΞͱͷ਌࿨ੑ͕ߴ͍
    *B$ͷςελϏϦςΟ͕ߴ͍

    View Slide

  39. ϓϩάϥϛϯάݴޠͰ"84ͷΠϯϑϥΛهड़
    5ZQFTDSJQU 1ZUIPO +BWB (P /&5
    ιʔείʔυ͔Β$MPVE'PSNBUJPOςϯϓϨʔτΛੜ੒ͯ͠σϓ
    ϩΠ
    ϕετϓϥΫςΟεʹԊͬͨܗͰΠϯϑϥ͕ந৅Խ͞Ε͍ͯͯɺ
    গͳ͍ίʔυͰΠϯϑϥ͕ఆٛՄೳ
    ΦʔτίϯϓϦʔτ΍੩తܕղੳͳͲΤσΟλͷԸܙ͕ಘΒΕΔ
    Ϧιʔεͷ୯ମςετΛ$*Ͱճ͢͜ͱ͕Ͱ͖·͢
    "84$%,ͱ͸
    AWS CDK

    View Slide

  40. 4OBQTIPU5FTUJOH
    $MPVE'PSNBUJPOςϯϓϨʔτͷมߋݕ஌
    $%,ͷόʔδϣϯΞοϓ࣌ͷมߋ֬ೝ
    'JOFHSBJOFE"TTFSUJPOT
    ఆٛͨ͠Πϯϑϥ͕ҙਤ௨Γ͔୯ମςετ
    $%,ͷ"TTFSUJPOTϞδϡʔϧΛ࢖༻
    "84$%,Λ࢖ͬͨ*B$ͷςετ

    View Slide

  41. ྫ͑͹ɺҎԼͷΑ͏ͳ୯ମςετ͕ՄೳͰ͢
    ຊ൪؀ڥͰ͸%#ͷ࡟আϙϦγʔΛ3&5"*/ʹ͓͖͍ͯͨ͠
    "VUP4DBMJOH(SPVQͷ࠷খ஋͸୆Ҏ্Λอূ͍ͨ͠
    ։ൃ؀ڥͷΠϯελϯελΠϓ͸UNFEJVN·Ͱ
    "84$%,ͷ'JOFHSBJOFE"TTFSUJPOT

    View Slide

  42. "84$%,Λ৮ͬͨ͜ͱ͕ͳ͍ํ
    $%,ϫʔΫγϣοϓ͔Βࢼͯ͠Έ͍ͩ͘͞
    IUUQTDELXPSLTIPQDPN

    View Slide

  43. *B$$*$%ߏஙͷݕ౼ϙΠϯτ
    Ͳͷ*B$πʔϧΛ࢖͏ʁ
    ϦϙδτϦɾ$*πʔϧ͸ԿΛબͿʁ
    ΞϓϦͱΠϯϑϥ $%,
    ͷιʔε؅ཧ͸Ұॹʁผʑʁ
    ϒϥϯνઓུ͸Ͳ͏͢Δʁ

    View Slide

  44. Կͷ(JUϗεςΟϯάαʔϏεΛ࢖͏͔
    CodeCommit GitHub
    BitBucket
    FUDʜ

    View Slide

  45. Ͳͷ$*πʔϧΛબ୒͢Δ͔
    CodeCommit
    GitHub
    BitBucket
    CodePipeline
    #JU#VDLFU
    1JQFMJOFT
    (JU-BC
    3VOOFS

    View Slide

  46. ҎԼͷΑ͏ͳ؍఺ͰબΜͰ͍͖·͢
    (JUͷ࢖͍΍͢͞
    1VMM3FRVFTU΍ϨϏϡʔɺλά෇͚ɺ3FWFSUͳͲ(6*ͷૢ࡞ײ
    (JUҎ֎ͷػೳ΍֎෦αʔϏε࿈ܞ
    λεΫ؅ཧɺϓϩδΣΫτ؅ཧɺφϨοδ؅ཧػೳ
    ࿈ܞ͢Δ$*πʔϧʹԿΛ࢖͍͍͔ͨ
    *5౷੍ํ਑ ೝূ৘ใͷ؅ཧɺ4BB4ར༻Մ൱

    Կͷ(JUϗεςΟϯάαʔϏεΛ࢖͏͔

    View Slide

  47. (JU)VC͕ఏڙ͢ΔϫʔΫϑϩʔαʔϏε
    ϫʔΫϑϩʔΛ:".-Ͱఆٛ͢Δ
    1VTIɺ*TTVFɺ1VMM3FRVFTUɺ3FMFBTFͳͲɺ
    (JU)VCϓϥοτϑΥʔϜͷ༷ʑͳΠϕϯτͰىಈ
    0*%$Ͱ(JU)VCଆʹ"84ͷӬଓతͳΫϨσϯγϟϧ͕ෆཁ
    1VCMJDϦϙδτϦ͸ແྉɺ1SJWBUF΋ϓϥϯʹԠͨ͡Ұఆ࣌ؒແྉ
    (JU)VC"DUJPOT

    View Slide

  48. ҎԼͷߏ੒Λத৺ʹઆ໌͍͖ͯ͠·͢
    ຊηογϣϯͰऔΓѻ͏ߏ੒
    GitHub
    4PVSDF #VJME 5FTU %FQMPZ
    AWS CDK

    View Slide

  49. *B$$*$%ߏஙͷݕ౼ϙΠϯτ
    Ͳͷ*B$πʔϧΛ࢖͏ʁ
    ϦϙδτϦɾ$*πʔϧ͸ԿͰબͿʁ
    ΞϓϦͱΠϯϑϥ $%,
    ͷιʔε؅ཧ͸Ұॹʁผʑʁ
    ϒϥϯνઓུ͸Ͳ͏͢Δʁ

    View Slide

  50. ΠϯϑϥͱΞϓϦέʔγϣϯͰɺσϓϩΠͷϥΠϑαΠΫϧ͕
    Ұॹͷ৔߹ɺಉ͡ϦϙδτϦͰ؅ཧͨ͠ํ͕౎߹͕ྑ͍Ͱ͢ɻ


    41"Λ$MPVE'SPOUͰ഑৴
    "1*(BUFXBZ-BNCEBɺ4UFQ'VODUJPOT-BNCEBͳͲͷαʔόϨε
    ಉ͡ϦϙδτϦͰ؅ཧ͢΂͖৔߹

    View Slide

  51. ΠϯϑϥͱΞϓϦέʔγϣϯͰ୲౰νʔϜ͕෼͔Ε͍ͯΔ৔
    ߹΍ɺσϓϩΠύΠϓϥΠϯ͕ผͷ৔߹͸ɺผϦϙδτϦͰ
    ؅ཧ͢Δ͜ͱʹͳΓ·͢ɻ


    Πϯϑϥͷ؅ཧ͸ΠϯϑϥνʔϜ
    ίϯςφΠϝʔδͷϏϧυ͸ΞϓϦνʔϜ
    ผͷϦϙδτϦͰ؅ཧ͢΂͖৔߹

    View Slide

  52. *B$$*$%ߏஙͷݕ౼ϙΠϯτ
    Ͳͷ*B$πʔϧΛ࢖͏ʁ
    ϦϙδτϦɾ$*πʔϧ͸ԿͰબͿʁ
    ΞϓϦͱΠϯϑϥ $%,
    ͷιʔε؅ཧ͸Ұॹʁผʑʁ
    ϒϥϯνઓུ͸Ͳ͏͢Δʁ

    View Slide

  53. ୅දతͳϒϥϯνઓུ
    (JU'MPX
    (JU)VC'MPX
    (JU-BC'MPX
    τϥϯΫϕʔε։ൃ

    View Slide

  54. (JU'MPX
    NBJOɺEFWFMPQͷӬଓϒϥϯνͱɺػೳ࣮૷
    ༻ͷGFBUVSFϒϥϯνɺϦϦʔε͸SFMFBTFϒϥ
    ϯνɺۓٸରԠ͸IPU
    fi
    YΛ੾Δӡ༻
    NBJO·ͰϚʔδͷ͕͔͔࣌ؒΓɺίϯϑϦΫ
    τղফͷίετ͕ߴ͍
    ӡ༻͕ෳࡶ
    ϦϦʔελΠϛϯά͕ܾΊΒΕ͍ͯΔ ִ͕ؒ
    ௕͍
    ɺϦϦʔε಺༰Λࣗ༝ʹίϯτϩʔϧ͠
    ͍ͨ৔߹޲͖
    SFGIUUQTOWJFDPNQPTUTBTVDDFTTGVMHJU
    CSBODIJOHNPEFM

    View Slide

  55. (JU)VC'MPX
    (JU)VCͷ։ൃͰ࢖༻͞Ε͍ͯΔઓུ
    NBJOͱػೳ࣮૷༻ͷϒϥϯνͷΈͰӡ༻͢Δ
    খ͍͞มߋΛεϐʔυײΛ࣋ͬͯ܁Γฦ͢։ൃ޲͖
    ӡ༻͕γϯϓϧ
    main
    feature/aaa

    View Slide

  56. (JU-BC'MPX
    (JU-BCͷ։ൃͰ࢖༻͞Ε͍ͯΔઓུ
    NBJOͱTUBHJOH΍QSPEVDUJPOͳͲɺ֤؀ڥ͝ͱʹϒϥϯνΛ੾Γɺ
    ։ൃεςʔδϯάຊ൪ɹͱ͍ͬͨॱͰϚʔδΛ͢Δ͜ͱͰɺ֤
    ؀ڥʹσϓϩΠΛల։͢Δɻ
    (JU)VC'MPXͷΑ͏ʹӡ༻γϯϓϧ͕ͩɺϦϦʔελΠϛϯάͱ಺༰Λ
    ίϯτϩʔϧ͢Δ͜ͱ͕Ͱ͖Δ
    main
    staging
    production
    feature

    View Slide

  57. τϥϯΫϕʔε։ൃ
    (JU)VC'MPXͷػೳϒϥϯν͕͞Βʹ୹໋Խͨ͠΋ͷ
    σϓϩΠͱϦϦʔεΛ෼཭͍ͨ͠৔߹ɺϑΟʔνϟʔϑϥάΛ༻͍Δ
    ίϯϑϦΫτղফͳͲɺແବͳ࡞ۀΛ࡟ݮͰ͖Δ
    Πϯϑϥ୯ମ؅ཧͩͱϦϦʔελΠϛϯάௐ੔Ͱ૬ੑ͕ѱ͍
    ΞϓϦͱΠϯϑϥΛಉࠝ͢ΔέʔεͰ͋Ε͹ੵۃతʹ࠾༻͍ͨ͠
    main
    feature/aaa
    1~2 days

    View Slide

  58. ϒϥϯνઓུΛෳࡶ͞Ͱฒͼସ͑Δͱ
    (JU'MPX
    (JU-BC'MPX
    (JU)VC'MPXɺτϥϯΫϕʔε։ൃ ୯७
    ෳࡶ

    View Slide

  59. ϒϥϯνઓུΛෳࡶ͞Ͱฒͼସ͑Δͱ
    (JU'MPX
    (JU-BC'MPX
    (JU)VC'MPXɺτϥϯΫϕʔε։ൃ ୯७
    ෳࡶ
    ·ͣ͸୯७ͳ΋ͷ͔Βࢼͯ͠Έ·͠ΐ͏

    View Slide

  60. ໨࣍
    ͳͥ*B$͸$*$%ʹ৐ͤΔ΂͖͔ʁ
    Ͳ͏΍ͬͯ*B$$*$%Λߏங͍ͯ͘͠ͷ͔ʁ
    *B$πʔϧ
    ϦϙδτϦɺ$*πʔϧ
    ΞϓϦͱΠϯϑϥͷίʔυ؅ཧ
    ϒϥϯνઓུ
    *B$$*$%ߏ੒ͷ۩ମྫ

    View Slide

  61. ҎԼͷΑ͏ͳαʔόϨε"1*
    ߏங͢ΔΞϓϦέʔγϣϯ
    API Gateway Lambda DynamoDB

    View Slide

  62. νʔϜͷମ੍
    Backend Team
    όοΫΤϯυνʔϜ͕ɺΞϓϦ΋Πϯϑϥ΋྆ํ؅ཧ
    Lambda
    AWS CDK

    View Slide

  63. όοΫΤϯυνʔϜ͕ɺΞϓϦ΋Πϯϑϥ΋྆ํ؅ཧ
    νʔϜͷମ੍
    Lambda
    AWS CDK
    Backend Team

    View Slide

  64. ։ൃɺεςʔδϯάɺຊ൪؀ڥ͕༻ҙ͞Ε͍ͯΔ
    ຊ൪σϓϩΠલʹεςʔδϯά؀ڥͰखಈςετΛߦ͏
    σϓϩΠઌͷ؀ڥ
    ։ൃ εςʔδϯά ຊ൪

    View Slide

  65. ͳΔ΂͘୯७ʹ͍ͨ͠
    ϦϦʔεͷִؒ͸ൺֱత୹͍
    ຊ൪ϦϦʔεͷτϦΨʔ͸खಈͰίϯτϩʔϧ͍ͨ͠
    ։ൃεςʔδϯά<खಈςετ>ຊ൪σϓϩΠ
    ϒϥϯνͷӡ༻

    View Slide

  66. ࠶ܝ
    (JU)VC'MPX
    (JU)VCͷ։ൃͰ࢖༻͞Ε͍ͯΔઓུ
    NBJOͱػೳ࣮૷༻ͷϒϥϯνͷΈͰӡ༻͢Δ
    খ͍͞มߋΛεϐʔυײΛ࣋ͬͯ܁Γฦ͢։ൃ޲͖
    ӡ༻͕γϯϓϧ
    main
    feature/aaa

    View Slide

  67. (JU)VCͷϦϦʔεʹ͍ͭͯ

    View Slide

  68. ͳΔ΂͘୯७ʹ͍ͨ͠
    ϦϦʔεͷִؒ͸ൺֱత୹͍
    ຊ൪ϦϦʔεͷτϦΨʔ͸खಈͰίϯτϩʔϧ͍ͨ͠
    ։ൃεςʔδϯά<खಈςετ>ຊ൪σϓϩΠ
    ϒϥϯνͷӡ༻
    ύΠϓϥΠϯΛ෼ׂ

    View Slide

  69. εςʔδϯά؀ڥ·ͰͷσϓϩΠύΠϓϥΠϯ
    GFBUVSF
    CSBODI
    ᶃPush
    NBJO
    CSBODI
    ᶄPull Request & Merge
    ։ൃ εςʔδϯά
    $ cdk deploy
    Ϗϧυ
    ୯ମςετ
    ։ൃ؀ڥ
    σϓϩΠ
    ݁߹ςετ
    45(؀ڥ
    σϓϩΠ
    $ cdk deploy
    ᶅAPIΛୟ͍ͯಈ࡞֬ೝ

    View Slide

  70. ຊ൪؀ڥ·ͰͷσϓϩΠύΠϓϥΠϯ
    Ϗϧυ
    ୯ମςετ
    ຊ൪؀ڥ
    σϓϩΠ
    ݁߹ςετ
    $ cdk deploy
    HTTP Request
    3FMFBTF
    ᶄλάͱ


    ϦϦʔεΛ࡞੒
    εςʔδϯά ຊ൪
    ᶃखಈͰϏδωεཁ݅ͳͲΛςετ

    View Slide


  71. GitHub FlowͱGitHubͷReleaseͰ


    ୯७ͳϒϥϯνઓུͷ··ɺ


    ϦϦʔελΠϛϯάΛίϯτϩʔϧͰ͖·͢

    View Slide


  72. ·ͱΊ

    View Slide

  73. ໨࣍
    ͳͥ*B$͸$*$%ʹ৐ͤΔ΂͖͔ʁ
    Ͳ͏΍ͬͯ*B$$*$%Λߏங͍ͯ͘͠ͷ͔ʁ
    *B$πʔϧ
    ϦϙδτϦɺ$*πʔϧ
    ΞϓϦͱΠϯϑϥͷίʔυ؅ཧ
    ϒϥϯνઓུ
    *B$$*$%ߏ੒ͷ۩ମྫ

    View Slide

  74. ·ͱΊ
    *B$͸$*$%·Ͱߏங͢Δ͜ͱͰɺ࠷େݶͷ
    ޮՌΛൃش͠·͢
    ͋ͳͨͷ૊৫ʹ͋ͬͨ࠷దͳπʔϧɺϒϥϯ
    νઓུΛબΜͰɺշదͳσϓϩΠϥΠϑΛ͓
    ա͍ͩ͘͝͠͞🙌

    View Slide

  75. ຊηογϣϯͰৄ͘͠࿩͞ͳ͔ͬͨ಺༰
    "84$%,Λ৮ͬͨ͜ͱ͕ͳ͍ํ
    $%,ϫʔΫγϣοϓ͔Βࢼͯ͠Έ͍ͩ͘͞
    (JU)VC"DUJPOTΛ৮ͬͨ͜ͱͷͳ͍ํ
    ΫΠοΫελʔτΛࢼͯ͠Έ͍ͯͩ͘͞
    IUUQTDELXPSLTIPQDPN
    IUUQTEPDTHJUIVCDPNKBBDUJPOTRVJDLTUBSU

    View Slide

  76. View Slide