ଟΘ͔ΔServerless FrameworkARCANA MeetupNakao Takamasa
View Slide
ࠓճͷझࢫ• αʔόʔϨεԿͳͷ͔ɺͦͯ͠Ͳ͏͍͏࣌ʹʹཱͭͷ͔ཧղͰ͖ΔΑ͏ʹͳΔ• Serverless FrameworkͱLambda͕ͳΜͳͷ͔গ͠ͰཧղͰ͖ΔΑ͏ʹͳΔ• جૅͷجૅΛ͠·͢• AWS͕བྷΈ࢝ΊΔͱ͜Ζ·Ͱ͠·ͤΜ
΅͘͠͝ͱɾLaravelͱJQueryͰԥΓ͢ࠓقΞχϝɾͷΜͷΜͼΑΓΛ؍͍ͯ·͢
ʮࠓ൩ͷΞχϝͳΜ͚ͩͬʯ
SlackͷbotΛ࡞Γ·ͨ͠
̍̍ճ͔͠ಈ͔ͳ͍ίʔυര
͔͠͠ɺPCʹίʔυ͕͋ΔͷͰPCΛด͡Δͱಈ͍ͯ͘Ε·ͤΜ
ͳͷͰαʔόͰಈ͔͠·͠ΐ͏
αʔόͰಈ͔͠·͠ΐ͏• దͳαʔό(VPS)Λܖ͠·͢• SSHsudo·ΘΓͱ͍ͬͨUNIXؔ࿈ͷઃఆΛ͠·͢• npmΛೖΕ·͢• Node.jsΛೖΕ·͢• ϑΝΠϧΛSFTPͱ͔Ͱసૹ͠·͢• CronͰఆظతʹಈ͘Α͏ʹ͠·͢
͜ͷํ๏ʹ՝͕͋Δ
՝• ίʔυΛಈ͔͍͚ͨͩ͠ͳͷʹLinuxͷߏஙΛͯ͠Δ• Πϯϑϥࣝͷͳ͍ํʹͱͬͯॳݟࡴ͠• ಈ͍͍ͯͳ͍࣌ؒ՝ۚ͞Ε͍ͯΔ• 11ඵ͚ͩಈ͘ίʔυ͕͋ͬͨΒΓͷ࣌ؒͷ՝ۚ…
࣮͞Εͨӡ༻
ސ٬͕ຊʹඞཁͩͬͨͷ࣮͞Εͨӡ༻
Lambda• AWS͕ఏڙ͢ΔɺίʔυΛ࣮ߦͯ͘͠ΕΔͭ• ͱΓ͋͑ͣjs͕ಈ͘ڥΛ͘ΕΔ• 1ϛϦඵ͋ͨΓͰ՝ۚ͞ΕΔ• 0.0000000021USD• ·͔͔͋࣌ؒͬͯߴ͘ͳ͍ΑͶ
• MicrosoftʮαʔόϨεͳAzure FunctionsϦϦʔε͠·͢ʯ• IBMʮαʔόϨεͳIBM Cloud FunctionsϦϦʔε͠·͢ʯ• GoogleʮαʔόϨεͳGoogle Cloud FunctionsϦϦʔε͠·͢ʯ
‧⛺è䡢(’ω’)䡢è⛺䡡‧͏Θ͋͋͋͋͋͋͋͋͋͋͋͋
αʔϏε͝ͱʹίϚϯυ֮͑ΜͷͭΒ͍͠แׅతʹͳΜ͔ͬͯ͘ΕΔͷͳ͍ͷ͔…
͋ΔΜͩͳͦΕ͕
Serverless Framework• ࠓͷຊ• αʔόʔϨεܥͷߏΛָʹཧͯ͘͠ΕΔπʔϧ• ָʢ؆୯ͱݴͬͯͳ͍ʣ
Serverless Frameworkͷಋೖ• NpmΛಋೖ͍ͯ͠ΔڥͰҎԼͷίϚϯυΛୟ͘• ؆୯Ͱ͢Ͷ
ϓϩόΠμʔΞΧϯτͷઃఆ• Serverless Framework֤αʔόʔϨεαʔϏεΛแׅͯ͘͠ΕΔͭͳͷͰɺʮAWSͷLambdaͰΔͱ͖͜ͷAPIΩʔͬͯͶʯͱࣄલʹઃఆͯ͋͛͠Δඞཁ͕͋Δ• APIΩʔͷൃߦ͕ඞཁͳͷͰAWSͳΒϧʔτϢʔβʔͰೖͬͯIAMϢʔβʔΛ৽ن࡞͓ͯ͘͠
ϓϩδΣΫτͷ࡞
ϓϩδΣΫτͷ࡞σΟϨΫτϦΛ࡞Δ
ϓϩδΣΫτͷ࡞BXTͷMBNCEBͰ/PEFKTΛ͏ͱ͖ͷςϯϓϨʔτ໊લ
࡞Δ• ಈ͔͍ͨ͠ίʔυΛ͕Γ͕Γॻ͘
࡞Δ• ͍͍Ͱ͢Ͷ
ิࣄ߲• ڥมserverless.ymlͰߦ͏• API GatewayͷઃఆͳͲ͜͜Ͱߦ͏
σϓϩΠ• sls deployͰOK• ϥΠϒϥϦΑ͠ͳʹͯ͘͠ΕΔ• ZIPͰݻΊͯS3ʹ্͛ͯCFnͰల։͢Δ·ͰશࣗಈͰ͢Δ
• ʮServerless Frameworkͷ΄͏͕ͦ͠͏ʹݟ͑ΔΜ͚ͩͲʯ• ʮ͜ΕΘͣʹLambdaͰͬͨ΄͏ָ͕ͳΜ͡Όͳ͍ͷʯ
ಉ͜͡ͱΛLambdaͰΔ߹• σΟϨΫτϦΛzipͰѹॖ͢Δʢnode_modulesͦͷ··Ͱྑ͍ʣ• AWSͷϚωδϝϯτ ίϯιʔϧΛ։͖ɺlambdaΛ։͘• ֘ϓϩδΣΫτΛબ• ZipΛΞοϓϩʔυ
͜͏ͳΓ͔Ͷͳ͍ͷͰ͓͢͢Ί͠·ͤΜ
·ͱΊ• Serverless FrameworkLambda”ͳͲ”ͷαʔόʔϨεΞʔΩςΫνϟΛָʹѻ͑ΔϑϨʔϜϫʔΫ• AWSͷ߹APIͷઃఆͳͲࣗಈԽͰ͖ΔͨΊɺϙνϙνૢ࡞͢Δख͕ؒҰؾʹল͚Δ
ऴΘΓ