PHPConference2022 ゴールドスポンサーLT 2022/09/24
Copyright© M&AΫϥυAWS CDKͰ·ΔͬͱΠϯϑϥڥΛIaCͨͧ͠ʂPHP Conference Japan 2022 / Kenjiro Kubota
View Slide
Copyright© M&AΫϥυ͓ͳ͡ΈɺM&AΫϥυͰ͢PHPConferenceͱ͍͑M&AΫϥυ※ࣾઆɺॾઆ͋Γ·͢● PHPConference 2020(4໊)● PHPConference 2021(5໊)● PHPConference 2022(4໊)M&AΫϥυࡏ੶ΤϯδχΞͷPHPConferenceొஃྺ
Copyright© M&AΫϥυٻਓࠂαΠτͷΑ͏ͳM&AμΠϨΫτϚονϯά3ങ͍खɾҊ݅ใुM&AޭใुͷΈɾ࠷खྉͳ͠ɾചΓखιʔγϯάͷνϟωϧ͕૿͑ΔɾM&AχʔζΛൃ৴͢Δ͚ͩͰചΓखΛू٬ɾհۀऀΛհͣ͞ʹμΠϨΫτʹΓऔΓՄೳɾજࡏʹϦʔν͕Մೳखྉແྉ※ϓϥοτϑΥʔϜҊ݅ͷ߹※ചΓख1.ܝࡌ͢Δɾങ͍खͷM&AχʔζΛࣗΒௐΔ͜ͱ͕Մೳ ɾհۀऀΛհͣ͞ʹμΠϨΫτʹΓऔΓՄೳ ɾങ͍खͷM&A୲ऀʹίϯλΫτΛͱΕΔ ɾհۀऀΛΘͳ͍ͷͰखྉ͕ແྉ2.ΦϑΝʔ͢ΔM&Aɾग़ࢿχʔζΛܝࡌങ͍खͷϝϦοτ ചΓखͷϝϦοτɾհۀऀΛΘͳ͍ͷͰखྉ͕ແྉʓʓྖҬͷձࣾΛืू͠·͢͜ͷձࣾͱҰॹʹ͍͖͍ͬͯͨʂ3PR
Copyright© M&AΫϥυࢿۚௐୡϓϥοτϑΥʔϜ2022ౙఏڙ։࢝PRࡢࠓͷࢿۚௐୡχʔζٸ૿ʹ͋ΘͤɺैདྷM&AΫϥυͰఏڙ͍ͯͨ͠ʮࢿۚௐୡͷػೳʯΛΓग़͠ɺࢿۚௐୡʹಛԽͨ͠৽αʔϏεΛߏஙதͰ͢ɻ͜ΕʹΑΓɺຊதͷελʔτΞοϓاۀͷࢿۚௐୡΛεϜʔζʹ͠ɺΑΓεϐʔυײΛ࣋ͬͨࣄۀʹߩݙͯ͠·͍Γ·͢ɻ
Copyright© M&AΫϥυAWS CDKͱ
Copyright© M&AΫϥυAWS CDKͱAWS Cloud Development Kit (AWS CDK)AWS CloudFormationΛ࣮ߦ͢ΔίʔυΛએݴతͳςϯϓϨʔτͱͯ͠ఆٛ͢Δ͜ͱͰϓϩϏδϣχϯάΛ࣮ݱͰ͖ΔϑϨʔϜϫʔΫCloudFormationʹΑΓIaC͕࣮ߦ͞ΕΔͷͰࣗಈϩʔϧόοΫυϦϑτݕग़ʢखಈมߋͯ͠͠·ͬͨ߹ʹఆٛͱ࣮ମ͕ဃ͢Δ͜ͱΛݕग़ʣ͕Ͱ͖ΔɻҎԼͷݴޠ͕αϙʔτ͞Ε͍ͯΔPHPͳ͍
Copyright© M&AΫϥυAWS CDKͱAWS CDK ConstructsCDKAPPɺStackɺConstructͷ֤ཁૉʹΑͬͯߏ͞Ε͍ͯΔɻ● APP○ Stackͷґଘؔͷఆٛ● Stack○ CloudformationͷStack୯Ґ○ σϓϩΠͷ࠷খ୯Ґ● Construct○ AWSͷϦιʔε
Copyright© M&AΫϥυAWS CDKͱConstruct LibraryCDKConstruct LibraryΛ༻ͯ͠AWSϦιʔεΛఆٛ͠·͢ɻConstruct LibraryʹҎԼͷ3छྨʹ͚ΒΕ·͢ɻ● low-level constructsʢL1ʣ○ ײతʹϦιʔεΛఆٛ͢Δ͜ͱ͕Ͱ͖ɺσϑΥϧτ͕ઃఆࡁΈͷศརͳϝιου͕ఏڙ͞ΕΔ● higher-level, intent-based APIʢL2ʣ○ ϓϩύςΟΛ໌ࣔతʹઃఆ͢Δඞཁ͕͋ΔͨΊɺύϥϝʔλΛৄࡉʹઃఆͰ͖Δ○ Ϋϥε໊ʹCfnϓϨϑΟοΫε͕͍͍ͭͯΔ● patternsʢL3ʣ○ ҰൠతͳΞʔΩςΫνϟύλʔϯʹै͏ߴϨϕϧͷConstructΛఏڙ
Copyright© M&AΫϥυAWS CDKͱAWS SDKʹ͍ͭͯৄ͘͠Γ͍ͨํͪ͜ΒͷηογϣϯΛνΣοΫʂʢ͢ͰʹऴΘ͍ͬͯΔηογϣϯͳͷͰεϥΠυ͔ಈըΛࢀর͍ͩ͘͞ʣ
Copyright© M&AΫϥυM&AΫϥυͷࣄྫM&AΫϥυͷΠϯϑϥAmazon Web Service(AWS)্Ͱߏங͍ͯ͠·͢ɻओʹҎԼͷαʔϏεΛར༻● ECS(Fargate)● ECR● Lambda● Cloudfront● Open Search Service● ALB● CloudWatch● Athena● S3● RDS● ElastiCache● SQS● etc
Copyright© M&AΫϥυAWS CDKΛಋೖ͢ΔલϒϥβͷAWSίϯιʔϧ͔Βૢ࡞αʔϏεΠϯ͔Β3ఔ࣮͜ͷঢ়ଶͰಛʹʹͳͬͯͳ͔ͬͨɻ࡞ۀΛεΫγϣͯ͠υΩϡϝϯτʹ͢ͳͲߦ͍ͬͯͯΘ͕͋ͬͨ͠͞ɺසൟʹΠϯϑϥʹखΛೖΕΔ͜ͱ͕ͳ͔ͬͨɻҰ෦Serverless FrameworkΛ͏ͳͲIaCʹͳ͍ͬͯΔͷ͋ͬͨɻ
Copyright© M&AΫϥυ֬ೝڥΛ૿ͦ͏
Copyright© M&AΫϥυ։ൃऀ͕૿͑ɺνʔϜΛ͚ͨνʔϜ͕͔Εͨ͜ͱʹΑΓ֬ೝڥʢ͍ΘΏΔεςʔδڥʣͰಈ࡞֬ೝ͍ͨ͠λΠϛϯά͕ҟͳΓσϓϩΠौ͕ൃੜͨ͠ɻͦͷͨΊɺ֬ೝڥΛෳ࡞Δ͜ͱʹɾɾɾ
Copyright© M&AΫϥυෳڥ࡞Δࡍͷো
Copyright© M&AΫϥυεϖοΫΛ͋Θͤͯෳڥ࡞Δखؒϒϥβίϯιʔϧ͔ΒڥΛ࡞Δͷ͕ඇৗʹखؒকདྷతʹ͞ΒʹνʔϜ͕૿͑ͨ߹ɺ·ͨಉ͡Λͬͯ࡞Δख͕ؒൃੜ͢Δ͞ΒʹฐࣾͰCloudfrontͷBehaviorΛར༻ͯ͠ύε͝ͱʹΞϓϦέʔγϣϯͷ͖ઌΛมߋ͢Δॲཧ͕େྔʹ͋ͬͨɻڥΛෳ࡞Δࡍʹͱͯͭͳ͍࡞ۀ֬ೝ͕ඞཁʹͳΔɻ
Copyright© M&AΫϥυͦ͜ͰɺAWS CDK
Copyright© M&AΫϥυAWS CDKΛར༻ͯ͠ڥߏஙStack୯ҐͰڞ௨Խ͠ɺڥʹΑͬͯҟͳΔมΛ༩͑Δ͜ͱͰεϖοΫ֤छIPΞυϨεͷมಈ͕Ͱ͖ΔΑ͏ʹߏஙCloudfrontͷBehaviorྻͰอ࣋͠ɺCDK͔ΒҰׅͰө͞ΕΔΑ͏ʹରԠෳڥ·ͱΊͯಉ͡BehaviorΛઃఆ͢Δ͜ͱ͕Ͱ͖ΔΑ͏ʹͳͬͨɻ
Copyright© M&AΫϥυͪΐͬͱ೦ͳͱ͜Ζ
Copyright© M&AΫϥυAWS CDKΛར༻ͯ͠ݟ͑ͨ՝● CloudFromation͕࣮ߦ͞ΕΔͨΊɺྃ·Ͱ݁ߏ͕͔͔࣌ؒΔɻ○ ಛʹCloudfront֤Edgeαʔόʔͷө·Ͱ͍ͬͯΔײ͡ʁͰ͍● Fargate SpotΛ͏ͨΊʹL1 ConstructͰ͏·͘ߦ͔ͳ͔ͬͨͷͰL2ʹΑΔCfnΫϥεΛ͏ඞཁ͕͋ͬͨɻͦͷଞʹ݁ہCfnΫϥεͰॻ͔ͳ͍ͱࢦఆͰ͖ͳ͍ͷ͕ଟ͔ͬͨ● ϥΠϒϥϦ͕TypeScriptͷݴޠͷྑ͞Λ͍Ε͍ͯͳ͍○ ܾ·ͬͨจࣈ͔͑͠ͳ͍ͳΒUnionͰఆٛͯ͠΄͍͠ɻStringʹͳ͍ͬͯΔͷͰɺͳʹ͕ࢦఆͰ͖Δ͔Θ͔Βͳ͍ͷ͕݁ߏ͋Δʢ݁ہެࣜυΩϡϝϯτΛݟͳ͚Ε͑ͳ͍ʣ● CDKͷίʔυͨͩཏྻ͢Δ͚ͩͰͳ͘StackConstruct୯ҐΛ͏·͘ઃܭ͢Δඞཁ͕͋Δͱײͨ͡
Copyright© M&AΫϥυ·ͱΊ● Թ͔Έͷ͋Δख࡞ۀ͔ΒIaCʹҠߦͨ͜͠ͱͰࠓޙڥ͕૿͑ͯఆٛΛ΄΅ίϐϖͰ૿͚ͩ͢Ͱྑ͍Ϩϕϧʹͳͬͨʂ● CloudfrontͷBehaviorͣͬͱ՝ײ͕͕͋ͬͨCDKͰεοΩϦͨ͠● ୀ۶ͳ͜ͱCDKʹΒͤΑ͏ɻ
Copyright© M&AΫϥυThanks for watching this :)