社内勉強会で話したときのスライドです。
αʔόϨεΞʔΩςΫνϟೖ
View Slide
About Me• ߂ Ұໜ• Ruby / JavaScript(Node.js) / C• Ruby on Rails / Serverless / React.js ϏΞόογϡεϐʔΧʔେืूʂ
αʔόϨεΞʔΩςΫνϟͱ
ࡶͳઆ໌• AWS Lambda• Google Cloud Functions• Azure Functions• ͱ͔ͷFaaS(Function as a Service)Λ͏ ΞʔΩςΫνϟ
FaaSͱ
αʔόͷߏஙɾཧΛඞཁͱ͠ͳ͍Function࣮ߦڥ• ࣮ߦ͍ͨؔ͠(ίʔυ)Λஔ͢Εɺ࣮ߦΫϥυαʔϏεଆ͕Α͠ͳʹͬͯ͘ΕΔ• ࣮ߦྔɾ࣮ߦ࣌ؒʹԠͨ͡՝ۚํࣜ• ༷ʑͳΠϕϯτΛτϦΨʔͱͯؔ͠Λ࣮ߦ͢Δ͜ͱ͕Ͱ͖Δ
ैདྷͷWebΞϓϦέʔγϣϯͩͱ…• αʔό͕ॲཧՄೳ͔ࢹ͢Δඞཁ͕͋Δ• ٸͳτϥϑΟοΫ૿େͰམͪΔةݥ͕͋Δ (ώϧφϯσε๒ɺ࢝etc…)• ༧࠷େτϥϑΟοΫʹ߹ΘͤͯαʔόΛௐୡ͢Δͱɺ௨ৗ࣌τϥϑΟοΫ࣌ʹίεύ͕ѱ͘ͳΔ
FaaSΛ͏ͱ…• αʔόࢹͷඞཁ͕ͳ͘ͳΔ• ٸͳτϥϑΟοΫ͕͖ͯΫϥυαʔϏε͕શ෦దʹ͍ͯ͘͞ΕΔ• ༻ͷίετ͔͔͔͠Βͳ͍ͷͰαʔόΛϑϧͰௐୡ͢ΔΑΓ҆͘ͳΔ߹͕ଟ͍
࣮ࡍʹಈ͍ͯͨΓ։ൃͯ͠Δը໘ΛݟΔͷ͕ૣ͍Ͱ͢
σϞΞϓϦ֓ཁ• S3(ΫϥυετϨʔδ)͔ΒΞηοτ͕৴͞ΕΔ• API ܦ༝ͰLambda͕࣮ߦ͞ΕɺAWS͕࣋ͭϑϧϚωʔδυͳαʔϏε(Web APIܦ༝Ͱݺͼग़ͤΔαʔϏε)Ͱ͋ΔDynamo DBʹσʔλΛอଘ͢Δ• Dynamo DBͷอଘΛτϦΨʔͱͯ͠LambdaΛ࣮ߦͤ͞ɺอଘ༰ΛSlackʹ௨͢Δ
σϞΞϓϦ֓ཁ
σϞΞϓϦ͕ैདྷͷΞϓϦߏͩͬͨ߹!3FTU$POUSPMMFSDMBTTDPOUSPMMFS\!3FRVFTU.BQQJOH tDSFBUFuQVCMJDWPJEDSFBUF 3FRSFR\4USJOHNTHSFRNTH j ᬊᅊj%ZOBNPECOFX%ZOBNP ECTBWF JUFNj ᬊᅊj4MBDLTMBDLOFX4MBDL4FSWJDF TMBDLQPTU JUFN^^DMBTT4MBDL4FSWJDF\QVCMJDWPJEQPTU 4USJOHNTH\1PTUUP4MBDL^^DMBTT%ZOBNP\QVCMJDWPJETBWF 4USJOHNTH\4BWFUP%#^^
ʮSlack௨͔Βϝʔϧૹ৴ʹ͠Α͏ʂʯͱ͍͏༷มߋ͕ೖΔͱ…!3FTU$POUSPMMFSDMBTTDPOUSPMMFS\!3FRVFTU.BQQJOH tDSFBUFuQVCMJDWPJEDSFBUF 3FRSFR\4USJOHNTHSFRNTH j ᬊᅊj%ZOBNPECOFX%ZOBNP ECTBWF JUFNj ᬊᅊj4MBDL͝ΛϦ⑲ϰͽม.BJMNBJMOFX.BJM4FSWJDF NBJMQPTU JUFN^DMBTT.BJM4FSWJDF\QVCMJDWPJEQPTU 4USJOHNTH\4FOEBONBJM^^DMBTT%ZOBNP\QVCMJDWPJETBWF 4USJOHNTH\4BWFUP%#^^NBJM
!3FTU$POUSPMMFSDMBTTDPOUSPMMFS\!3FRVFTU.BQQJOH tDSFBUFuQVCMJDWPJEDSFBUF 3FRSFR\4USJOHNTHSFRNTH ϕϯό⑲μϬϸ᳔ό⑲τξύΧରԠ%ZOBNPECOFX%ZOBNP ECTBWF JUFNέϮ⑲ϔϸώϯϸε͔ΞΔͩͱ͖ͥΞΔͩͱ͖4MBDL͝ΛϦ⑲ϰͽม.BJMNBJMOFX.BJM4FSWJDF NBJMQPTU JUFN^DMBTT.BJM4FSWJDF\QVCMJDWPJEQPTU 4USJOHNTH\4FOEBONBJM^^DMBTT%ZOBNP\QVCMJDWPJETBWF 4USJOHNTH\4BWFUP%#^^NBJMʮSlack௨͔Βϝʔϧૹ৴ʹ͠Α͏ʂʯͱ͍͏༷มߋ͕ೖΔͱ…ਏ͍ະདྷ͕ݟ͑ͯ͘Δʜ
σϞΞϓϦͷߏͰ༷มߋ͕ೖͬͨ߹NBJM
σϞΞϓϦͷߏͰ༷มߋ͕ೖͬͨ߹NBJM͜͜Λมߋ͢ΔͷΈʂ
σϞΞϓϦͷߏͰ༷มߋ͕ೖͬͨ߹• ϩάͷग़ྗΛLambdaͷ࣮ߦΠϕϯτʹ͢ΔͱΞϥʔτܥͷ࣮͕ͦ͢͠͏• όϦσʔγϣϯॲཧAPI GatewayΛ࣮ߦΠϕϯτʹ͢Δ͜ͱͰରԠͰ͖ͦ͏• ଞσʔλετΞରԠDynamo DBͷอଘΛ࣮ߦΠϕϯτʹ͢ΕΑͦ͞͏
ΠϕϯτۦಈͰૄ݁߹͔ͭαʔόཧ͕ෆཁͳΞʔΩςΫνϟ
αʔόϨεΞʔΩςΫνϟ
֤ʑͷػೳΠϕϯτ͔Web APIΛܦ༝࣮ͯ͠ߦ͞ΕΔͷΈ
ϚΠΫϩαʔϏεͷ࣮ݱ
ಋೖࣄྫ• υϥΰϯΫΤετX (גࣜձࣾεΫΤΞɾΤχοΫε)• ܦిࢠ൛ (גࣜձࣾ ຊܦࡁ৽ฉࣾ) ࢀߟ: https://aws.amazon.com/jp/solutions/case-studies/
σϝϦοτ• ࣮ߦϥϯλΠϜ͕ݶΒΕΔ• Node.js, Python, C#, Java, Go(2018/2ݱࡏ)• ࢥ͍͖ͬΓϕϯμʔϩοΫΠϯ͢Δ• αʔυύʔςΟʔͷOSS͕֤ΫϥυαʔϏεͷࠩҟΛٵऩͯ͘͠Εͳ͍͔ͳ͊
σϝϦοτ• ֶशίετ݁ߏߴ͍• Πϕϯτۦಈͱ͍͏ߟ͑ํ• ϚΠΫϩαʔϏεͷܮ• ֤ΫϥυαʔϏεͷࣝ
σϝϦοτʮαʔόϨεͬͯαʔόࢹ͠ͳ͍͍ͯ͘ΜͰ͠ΐʁʯ ʮͱΓ͋͑ͣDBطଘͷRDBMS͓͏ʯ ʮEC2Λϥούʔͱͯ͠ஔ͍ͱ͚͍͍Μ͡Όͳ͍ʁʯ ↑่յͷংষ
ੋඇࢼͯ͠Έ͍ͯͩ͘͞