Slide 1

Slide 1 text

NetlifyͰFaaSʹೖ໳͢Δ 2018.08.09 Tech Do #6 AWS Lambda, GCP Cloud FunctionsͷҰาखલ @mottox2

Slide 2

Slide 2 text

Netlify • ੩తαΠτΛϗεςΟϯάͯ͘͠ΕΔαʔϏεaʢ੩తαΠτHerokuʣ • BuildίϚϯυͱެ։ϦϙδτϦΛࢦఆ͢Δͱ͍͍͔Μ͡ʹσϓϩΠͯ͘͠ΕΔɻ

Slide 3

Slide 3 text

FaaS Πϝʔδͱͯ͠͸ؔ਺͚ͩॻ͚͹͍͍ײ͡ʹಈ͔ͯ͠ΕΔαʔϏε 'VODUJPO request response URL Call: https://example.com/hoge Status: 200 body: Hello World Event Call: S3ʹϑΝΠϧ͕อଘ͞Εͨͱ͖ OR ͚ͩ͜͜ؾʹ͢Ε͹Α͍

Slide 4

Slide 4 text

Netlify Functions • Netlify͸੩తαΠτϗεςΟϯάઐ༻ʹݟ͑Δ͕ɺͲΜͲΜػೳΛ૿΍͍ͯ͠Δ • ͦͷதͰFunctionsͱ͍͏ػೳ͕͋Γɺத਎͸AWS LambdaͰಈ͍͍ͯΔ • ݄ؒͰ ࣮ߦճ਺͕125,000ճҎԼ or ࣮ߦ͕࣌ؒ100࣌ؒҎ಺Ͱ͋Ε͹ແྉ • NetlifyͳͷͰɺϦϙδτϦͷϒϥϯνͱ࿈ಈͯ͠σϓϩΠ͞ΕΔɻ • ΫϨδοτΧʔυͷొ࿥΋ෆཁɻa • Node.js ·ͨ͸ Golang Ͱॻ͚Δɻ • ΋ͪΖΜS3΍Dynamo DBΛϑοΫʹͨ͠ىಈ͸Ͱ͖ͳ͍ɻURLͷΈɻ

Slide 5

Slide 5 text

ͳͥNetlify Functions GitHubΞΧ΢ϯτ͕͋Ε͹ແྉͰ࢖͑Δ GitHubͱͷ࿈ܞ͕ॳظঢ়ଶͰ༻ҙ͞Ε͍ͯΔ URLͰ͔͠ىಈͰ͖ͳ͍ͷͰΘ͔Γ΍͍͢ ΫϨδοτΧʔυ΋ඞཁ͕ͳ͍ͷͰ՝ۚࣄނ΋ා͘ͳ͍ 1 2 3 4

Slide 6

Slide 6 text

Ұ൪؆୯ͳྫ

Slide 7

Slide 7 text

࣮૷ͯ͠GitHubʹPush /functions/hoge.js /netlify.toml • Functionsͱͯ͠ಈ͔ͨ͠ϑΝΠϧΛؚΉ
 σΟϨΫτϦΛࢦఆ • Event͔Βrequest৘ใΛऔಘ • callbackͰresponseΛ࿔Δ https://github.com/mottox2/netlify-functions-hello-world

Slide 8

Slide 8 text

NetlifyʹGitHubͷϦϙδτϦΛඥ෇͚Δ

Slide 9

Slide 9 text

NetlifyʹGitHubͷϦϙδτϦΛඥ෇͚Δ

Slide 10

Slide 10 text

NetlifyʹGitHubͷϦϙδτϦΛඥ෇͚Δ

Slide 11

Slide 11 text

ಈ࡞֬ೝ Netlifyͷ؅ཧը໘ͰϑΝΠϧຖʹϩά͕ݟΕΔ

Slide 12

Slide 12 text

ಈ࡞֬ೝ

Slide 13

Slide 13 text

؆୯Ͱͨ͠Ͷʁ ࢀߟϦϙδτϦ https://github.com/mottox2/netlify-functions-hello-world

Slide 14

Slide 14 text

΋ͬͱෳࡶͳྫ͸ʁ • ࠓճͷྫͰ͸ϥΠϒϥϦ΋࢖ΘͣBuild΋͠ͳ͔ͬͨɻ • ͪΌΜͱ΍͍ͬͯ͘ͱ͖͸ `netlify-lambda` ͱ͍͏webpackͷϥούʔϥΠϒϥϦ Λ࢖͍ͬͯ͘ɻ • https://github.com/netlify/netlify-lambda Ͱ • `netlify-lambda build src/` ͰϏϧυͯ͘͠ΕΔɻ

Slide 15

Slide 15 text

Կ͕࡞ΕΔͷʁ • Netlify୯ମͰ͸֎෦αʔϏεͷWebhookΛड͚ͯɺಛఆͷαʔϏεͷAPIΛୟ͘ͱ ͍͏࢖͍ํʹͳΔͱࢥ͏ɻ • ࣗ෼͸Slack AppΛNetlify্Ͱӡ༻͍ͯ͠·͢ɻ • https://github.com/mottox2/slack-esa-preview͋ • Slack͔ΒϦΫΤετΛड͚ͯesa.ioͱ͍͏αʔϏεͷAPIΛୟ͍͍ͯ·͢ɻ • ࢓ࣄͰ͸಺෦ͰWordPress REST APIΛୟ͍ͯɺϑϩϯτΤϯυͷΞϓϦέʔγϣϯ ʹฦ͢ॲཧΛॻ͍͍ͯ·͢ɻ • ࣮͸WebαʔϏεͱૄ݁߹ͳՕॴΛ͚ͩ͜͜nodejs΍golangͰॻ͘ͱ͖ͳͲ

Slide 16

Slide 16 text

Lambda΍Cloud FunctionsͰεςοϓΞοϓ • AWS͸UIͰଛ͍ͯ͠Δͱࢥ͏ͷͰNetlifyͰLambdaʹೖ໳͢Δͱ͍͍ͱࢥ͍·͢ɻ • URL͚ͩ͡Όͳͯ͘ɺAWS΍GCPͷଞαʔϏεͱ࿈ಈ͢ΔΑ͏ͳΠϕϯτͰͷىಈ ͕ՄೳʹͳΔɻ • DBͷσʔλΛݩʹͳʹ͔͢ΔɺΞοϓϩʔυ͞ΕͨϑΝΠϧΛݩʹͳʹ͔͢ΔͷΑ ͏ͳॲཧ͕Ͱ͖ΔΑ͏ʹͳΔɻ • ʮখ͞ͳαʔϏεͳΜ͚ͩͲExpressΛ࢖͏΄ͲͰ΋ͳ͍ʯΑ͏ͳγνϡΤʔγϣ ϯͷͱ͖ʹબ୒ࢶͱͯ͠΋͓ͬͯ͘ͱΑ͍ɻ • ৗ࣌Քಇ͓ͯ͘͠ඞཁ͕ͳ͍ͷͰઅ໿ʹ΋ͳΔ͠ɺϝϯςϑϦʔɻa

Slide 17

Slide 17 text

FaaS͸͍͍ͧʂແྉͰ࢖͑ΔNetlify΋͍͍ͧʂ ·ͱΊ ݩωλͷϒϩάهࣄ https://mottox2.com/posts/165/

Slide 18

Slide 18 text

@mottox2 • ReactͱRuby on RailsΛத৺ʹWebαʔϏε։ൃ͍ͯ͠·͢ • ϒϩά΍ͬͯ·͢(esa.io + note.mu + GatsbyJS) => mottox2.com • #ٕज़ॻయ5 ͰNetlifyͱGatsbyJSͷຊΛग़͠·͢ Freelance web engineer Yuki Takemoto ୭ʁ