Slide 1

Slide 1 text

©Fusic Co., Ltd. 1 ஍ํͦ͜αʔόʔϨε ͦͷҙٛʹഭΔαʔόʔϨεPHP 2024.05.11 ਗ਼Ո࢙࿠ @seike460 PHPΧϯϑΝϨϯε߳઒2024

Slide 2

Slide 2 text

©Fusic Co., Ltd. 2 ਗ਼Ո ࢙࿠ @seike460 AWS Community Builders Serverless ݄ؒPHPΧϯϑΝϨϯε2024 - PHPΧϯϑΝϨϯε๺ւಓ2024 ొஃ (LT) - PHPΧϯϑΝϨϯεؔ੢2024 ొஃ (LT) - PHPerKaigi2024 ొஃ (LT) - PHPΧϯϑΝϨϯεখాݪ2024 ొஃ - PHPΧϯϑΝϨϯε߳઒2024 ొஃ - PHPΧϯϑΝϨϯε෱Ԭ2024 ొஃ༧ఆ ࣗݾ঺հ ͸͡Ίʹ גࣜձࣾFusic ϓϦϯγύϧΤϯδχΞ/ΤόϯδΣϦετ

Slide 3

Slide 3 text

©Fusic Co., Ltd. 3 CONTENTS ໨࣍ 1. αʔόʔϨεͱ͸ͳΜͳͷ͔ 2. αʔόʔϨεͷ੍໿ͱιϑτ΢ΣΞΞʔΩςΫνϟ 3. ஍ํҊ݅ͱϑϨʔϜϫʔΫ 4. ٕज़ελοΫͷҰ؏ੑͱڞ༗஌ 5. ·ͱΊ

Slide 4

Slide 4 text

©Fusic Co., Ltd. 4 αʔόʔϨεͱ͸ͳΜͳͷ͔ 1

Slide 5

Slide 5 text

©Fusic Co., Ltd. 5 αʔόʔϨεͱ͸ͳΜͳͷ͔ 言 Cloud Native Computing Foundation CNCF Serverless Whitepaper v 1 . 0 行 https://github.com/cncf/wg-serverless/tree/master/whitepapers/serverless-overview

Slide 6

Slide 6 text

©Fusic Co., Ltd. 6 αʔόʔϨεͷϝϦοτ αʔόʔϨεͷ֓೦ΛऔΓೖΕͨΞʔΩςΫνϟͰ͋Δ αʔόʔϨεΞʔΩςΫνϟΛಋೖ͢ΔͱɺҎԼͷΑ͏ͳϝϦοτ͕͋Δ - ӡ༻ͷ؆ૉԽ - ίετޮ཰ - ΦʔτεέʔϦϯά - ։ൃͷਝ଎Խ - Πϕϯτۦಈܕ - Մ༻ੑͱ৴པੑ

Slide 7

Slide 7 text

©Fusic Co., Ltd. 7 ӡ༻ͷ؆ૉԽ αʔόʔϨεΞʔΩςΫνϟ͸αʔόʔͷ؅ཧ΍ӡ༻ʹ͍ͭͯ৺഑͢Δඞཁ͕ͳ͍ ΠϯϑϥετϥΫνϟͷ؅ཧ͸AWS౳ͷΫϥ΢υϕϯμʔ͕୲౰͠ɺ ΞϓϦέʔγϣϯͷσϓϩΠ΍εέʔϦϯά΋ࣗಈͰߦΘΕΔ

Slide 8

Slide 8 text

©Fusic Co., Ltd. 8 ίετޮ཰ αʔόʔϨεΞʔΩςΫνϟͰ͸ɺҰൠతʹ࣮ࡍʹ࢖༻͞ΕͨϦιʔεʹରͯ͠՝ۚ ैདྷͷ༧໿ܕΠϯελϯε΍ৗ࣌Քಇ͢Δαʔόʔʹൺ΂ɺ ίετΛେ෯ʹ࡟ݮͰ͖ΔՄೳੑ͕ߴ͍ ※େྔΞΫηε͕ൃੜͨ͠ͱ͖͸ʮͦͷϦΫΤετΛࡹ͚ͯ͠·͏ʯͷͰ ɹίετ͕ߴ͘ͳΔՄೳੑ͕͋Δ

Slide 9

Slide 9 text

©Fusic Co., Ltd. 9 ΦʔτεέʔϦϯά αʔόʔϨεΞʔΩςΫνϟ΁ͷτϥϑΟοΫ΍ෛՙ͕૿Ճ͢Δͱɺ ࣗಈతʹϦιʔεΛௐ੔͠ɺඞཁʹԠͯ͡εέʔϧΞοϓɾμ΢ϯ τϥϑΟοΫͷ༧ଌ΍Ϧιʔεͷखಈௐ੔͔Βղ์͞ΕΔ ※܁Γฦ͠ʹͳΔ͕ʮτϥϑΟοΫΛࡹ͚ͯ͠·͏ʯͷͰ ɹҙਤ͠ͳ͍ΞϓϦέʔγϣϯͷಈ࡞ͳͲͰͷແݶεέʔϦϯάʹ͸஫ҙ͕ඞཁ ɹઃఆͰରॲ͢Δඞཁ͕͋Δ

Slide 10

Slide 10 text

©Fusic Co., Ltd. 10 ։ൃͷਝ଎Խ αʔόʔϨεΞʔΩςΫνϟΛ࠾༻͢Δͱɺ։ൃऀ͸Πϯϑϥͷ؅ཧ͔Βղ์͞Εɺ ΞϓϦέʔγϣϯͷίʔυʹूதՄೳʹ ΋ͪΖΜΞʔΩςΫνϟͷઃఆ͸YamlͳͲͷίʔυͰ؅ཧ͢Δඞཁ͕͋Δ͕ αʔόʔͷߏஙΛߦ͏ΑΓ΋४උ଎౓ͷ޲্͕ظ଴Ͱ͖ɺ։ൃظؒͷ୹ॖ͕Մೳ

Slide 11

Slide 11 text

©Fusic Co., Ltd. 11 Πϕϯτۦಈܕ αʔόʔϨεΞʔΩςΫνϟ͸ҰൠతʹΠϕϯτۦಈܕͷΞϓϩʔνΛ࠾༻ ಛఆͷΠϕϯτ΍τϦΨʔʹԠͯ͡ॲཧ͕࣮ߦ͞Εɺ HTTPΞΫηεɺఆظ࣮ߦɺΩϡʔΠϯάΛར༻ͨ͠ඇಉظԽͳͲ༷ʑͳγʔϯʹରԠ

Slide 12

Slide 12 text

©Fusic Co., Ltd. 12 Մ༻ੑͱ৴པੑ Ϋϥ΢υϕϯμʔͷαʔόʔϨεαʔϏε͸ɺߴ͍Մ༻ੑΛอূ͢ΔͨΊʹઃܭ ΞϓϦέʔγϣϯ͸μ΢ϯλΠϜͷϦεΫ͕௿ݮ͞Εɺ ΑΓ৴པੑͷߴ͍αʔϏεΛఏڙ͕ՄೳʹͳΓɺߋʹอकରԠͷ࣌ؒ࡟ݮʹܨ͕Δ

Slide 13

Slide 13 text

©Fusic Co., Ltd. 13 αʔόʔϨεͷ֓೦ΛऔΓೖΕΔϝϦοτ͸ଟ਺ 入 入 入 大 小 用 行

Slide 14

Slide 14 text

©Fusic Co., Ltd. 14 αʔόϨεΒ͠͞ αʔόʔϨεͱ͸֓೦Ͱ͋Γʮ͜ͷαʔϏε͸׬શʹαʔόʔϨεͰ͋Δʯͱ அݴͰ͖ΔαʔϏε͸࣮͸೉͍͠ͷͰ͸ͳ͍͔ͱߟ͍͑ͯ·͢ αʔόʔϨεͰ͋ΔɺαʔόʔϨεͰ͸ͳ͍ͱ͍͏ٞ࿦ࣗମɺ ࣮͸ߦ͏ඞཁ͕ͳ͍ͷ͔΋͠Εͳ͍ େࣄͳͷ͸αʔόʔϨεͱ͍͏֓೦ͷཧղ౓ΛਂΊ ʮαʔόʔϨεΒ͠͞ͷਖ਼ମΛ௫Ή͜ͱʯ

Slide 15

Slide 15 text

©Fusic Co., Ltd. 15 Ϋϥ΢υωΠςΟϒͰ͋Ζ͏ͱ͢Δ͜ͱ αʔόʔϨεΩϟογϡͰ༗໊ͳmomentoʹΑΔදݱ 1. ϓϩϏδϣϯෆཁɺ؅ཧෆཁ 2. ࠷௿ྉۚͷͳ͍࢖ͬͨ෼͚ͩͷࢧ෷ 3. 1 ͭͷ API ݺͼग़͠Ͱར༻Մೳ 4. ܭըఀࢭ͕ͳ͍ 5. Πϯελϯε͕ແ͍ αʔόʔϨεͷಛ௃ଊ͓͑ͯΓඇৗʹαʔόʔϨεΒ͍͠ ݸਓతͳҙࣝͱͯ͠͸ʮ౴͑ͩͱߟ͑Δඞཁ͸ͳ͍ʯ αʔόʔϨεΒ͍͠αʔϏε΋Ξοϓσʔτ͞Ε͍ͯ͘͠ɺ ৽͍֓͠೦ͷ௥ՃʹΑΓαʔόϨεΒ͠͞͸มΘ͍ͬͯ͘

Slide 16

Slide 16 text

©Fusic Co., Ltd. 16 AWSʹ͓͚ΔαʔόʔϨεΒ͍͠αʔϏε ࠓճ͸AWSʹ͓͚ΔαʔόʔϨεΒ͍͠αʔϏεʹ஫໨ - AWSΛ୅දͱ͢ΔαʔόʔϨεαʔϏε - AWS Lambda: Πϕϯτൃੜ࣌ʹίʔυΛ࣮ߦ͠ɺ ίϯϐϡʔςΟϯάϦιʔεΛࣗಈతʹ؅ཧ͢ΔίϯϐϡʔςΟϯάαʔϏε ʮαʔόʔϨεͱ͍͑͹AWS Lambdaʯͱߟ͑Δํ΋ଟ͍ͱࢥ͍·͢

Slide 17

Slide 17 text

©Fusic Co., Ltd. 17 αʔόʔϨεΒ͋͘͠Ζ͏ͱ͢Δ AWS LambdaΛத৺ʹαʔόʔϨεͷ֓೦ΛऔΓೖΕɺ ݩʑؚΜͰ͍ͨαʔϏεΛ૊Έ߹Θ੍ͤ໿Λҙࣝͨ͠αʔόʔϨεΒ͍͠։ൃΛߦ͏ αʔόʔϨεͷ֓೦Λ೺Ѳͯ͠औΓೖΕ͍͖ͯ·͠ΐ͏

Slide 18

Slide 18 text

©Fusic Co., Ltd. 18 αʔόʔϨεͷ੍໿ͱ ιϑτ΢ΣΞΞʔΩςΫνϟ 2

Slide 19

Slide 19 text

©Fusic Co., Ltd. 19 AWS LambdaͷϕετϓϥΫςΟε ίʔϧυελʔτΛ࠷খݶʹ ؔ਺ͷґଘؔ܎Λ࠷খݶʹ ؔ਺ͷ࣮ߦ࣌ؒΛ࠷খݶʹ VPCΛۃྗར༻͠ͳ͍ ؀ڥม਺Λ׆༻͢Δ ద੾ͳϩΪϯάͱϞχλϦϯά

Slide 20

Slide 20 text

©Fusic Co., Ltd. 20 αʔόʔϨεͷσϝϦοτ αʔόϨε͸ϝϦοτ͚ͩͰ͸ͳ͍ɺσϝϦοτ΋͋Δ Ұ൪େ͖͍ͷ੍͕ݶͱͷઓ͍ - ࣮ߦ੍࣌ؒݶ - Ϧιʔε੍ݶ - ಉ࣮࣌ߦ੍ݶ - APIϨʔτ੍ݶ

Slide 21

Slide 21 text

©Fusic Co., Ltd. 21 ੍໿ͱ੤໿ αʔόϨεʹ͓͚Δ੍໿͸ʮ੍໿ͱ੤໿ʯͱಉ͡ঢ়ଶʹ͋Δ - ੍໿ΛकΔࣄʹΑΓαʔόʔϨεͷେ͖ͳྗΛಘ͍ͯΔ͜ͱ - ੍໿ΛഁΔ͜ͱ͸ຊ౰ʹιϑτ΢ΣΞΞʔΩςΫνϟͱͯ͠ਖ਼͍͠ͷ͔ʹண໨

Slide 22

Slide 22 text

©Fusic Co., Ltd. 22 αʔόʔϨεͷ੍໿ΛৼΓฦΔ - ࣮ߦ੍࣌ؒݶ - ࣮ߦ͕࣌ؒ௕͍͜ͱ͕ت͹͍͠ͷ͔ - Ϧιʔε੍ݶ - ڊେͳCPU΍ϝϞϦΛར༻͢Δͷ͸ت͹͍͠ͷ͔ - ಉ࣮࣌ߦ੍ݶ - ಉ࣮࣌ߦ͢Δϓϩηε਺͕ଟେͳࣄ͸ت͹͍͠ͷ͔ - APIϨʔτ੍ݶ - APIͷίʔϧ਺͕ଟେͳࣄ͸ت͹͍͠ͷ͔

Slide 23

Slide 23 text

©Fusic Co., Ltd. 23 ࣮ߦ੍࣌ؒݶ - ࣮ߦ͕࣌ؒ௕͍͜ͱ͕ت͹͍͠ͷ͔(max_execution_time) - CPUͱϝϞϦͷ઎༗཰্͕͕Δ͜ͱʹͳΔͷͰɺ࣮ߦ࣌ؒ͸୹͍ͨ͘͠

Slide 24

Slide 24 text

©Fusic Co., Ltd. 24 Ϧιʔε੍ݶ - ڊେͳCPU΍ϝϞϦΛར༻͢Δͷ͸ت͹͍͠ͷ͔ (memory_limit) - Ϧιʔείετ͕૿͑Δ͜ͱʹͳΔͷͰɺϦιʔεྔ͸গͳ͍ͨ͘͠

Slide 25

Slide 25 text

©Fusic Co., Ltd. 25 ಉ࣮࣌ߦ੍ݶ - ಉ࣮࣌ߦ͢Δϓϩηε਺͕ଟ͍ࣄ͸ت͹͍͠ͷ͔(pm.max_childrenɺMaxSpareServers) - ॲཧΛ෼ׂग़དྷΔͷ͸خ͍͕͠ɺແҝʹϓϩηεΛ૿΍͍ͨ͠Θ͚Ͱ͸ͳ͍

Slide 26

Slide 26 text

©Fusic Co., Ltd. 26 APIϨʔτ੍ݶ - APIͷίʔϧ਺͕ଟେͳࣄ͸ت͹͍͠ͷ͔ - ར༻ྉ = ίετʹ௚઀Өڹͯ͠͠·͏ͨΊগͳ͍΄͏͕๬·͍͠

Slide 27

Slide 27 text

©Fusic Co., Ltd. 27 αʔόʔϨεͷ੍໿ͱ޲͖߹͏ αʔόʔϨεͷ੍໿͸ιϑτ΢ΣΞΞʔΩςΫνϟͱͯ͠΋༏Εͨ΋ͷͰ͋Δ৚݅ Ϋϥ΢υαʔϏεͷ੍໿Λҙࣝͨ͠։ൃΛߦ͏͜ͱ͸ɺ αʔόʔϨεͷϝϦοτͷڗडΛߦ͍ͳ͕Βɺ ιϑτ΢ΣΞΞʔΩςΫνϟͱͯ͠ਖ਼͍͠΋ͷʹ

Slide 28

Slide 28 text

©Fusic Co., Ltd. 28 ஍ํ։ൃͷ՝୊ 方   : 人   :

Slide 29

Slide 29 text

©Fusic Co., Ltd. 29 ஍ํҊ݅ͱαʔόʔϨεͷ૬ੑ ஍ํҊ݅͸ҰൠతʹαʔόʔϨεͷ੍໿Λ९क͠΍͍͢ཁ͕݅ଟ͍͸ͣͰ͢ ͦͷ݁ՌίετΛԼ͛ΕΔՄೳੑ͕ߴ͘ɺ༧ࢉʹϙδςΟϒʹಇ͘ࣄ͕ଟ͍ ·ͨ։ൃऀ͕গͳ͘ͳΔ܏޲ʹ͋Δͷ͸൱ఆͰ͖ͣɺ DevOpsΛ෼཭Ͱ͖ͣ։ൃऀ͕อकҊ݅ʹ࣌ؒΛऔΒΕΔ͜ͱ΋͋Δ

Slide 30

Slide 30 text

©Fusic Co., Ltd. 30 ஍ํ։ൃͷ՝୊ 方   : 人   : Laravel   用 :   : 用   : AWS

Slide 31

Slide 31 text

©Fusic Co., Ltd. 31 ஍ํͰͷ։ൃͱϑϨʔϜϫʔΫ 3

Slide 32

Slide 32 text

©Fusic Co., Ltd. 32 ஍ํ։ൃͦ͜ϑϨʔϜϫʔΫͷಋೖΛ ࢲͨͪPHPerʹ͸ڧྗͳϑϨʔϜϫʔΫ͕ຯํ͍ͯ͠·͢ LaravelɺSymphonyɺCakePHPͳͲར༻͢Δ͜ͱͰ͖ɺ ϕʔεߏஙͷ࣌ؒΛ୹ॖ͢Δ͜ͱ͕Ͱ͖·͢ ஍ํاۀ͸ϝϯόʔ࣍ୈͰٕज़ͷೱ୶͕ग़΍͘͢ɺ޿͍ڞ༗஌͕͋ΔεΩϧ͕ἧ͍͕ͪ શੈք͔Βڞ༗஌͕ڞ༗͞Ε͍ͯͯɺ࣮૷ΛਐΊΔ্Ͱେ͖ͳॿ͚ʹͳΓ·͢

Slide 33

Slide 33 text

©Fusic Co., Ltd. 33 Laravel ࠓճ͸Laravelʹয఺Λ͋ͯͯߟ͑·͢ Laravel͸AWSͱͷ૬ੑ͕ඇৗʹྑ͘ɺ .envʹAWSͷύϥϝʔλʔΛઃఆ͢Δ͚ͩͰAWSΛ্खʹѻ͏ࣄ͕ग़དྷ·͢ ॳظ஋ͱͯ͠AWSΛલఏʹͨ͠ύϥϝʔλʔ͕༻ҙ͞Ε͍ͯΔఔͰ͢

Slide 34

Slide 34 text

©Fusic Co., Ltd. 34 Bref AWS Lambda͸PHPΛެࣜαϙʔτ͍ͯ͠·ͤΜ ͜Ε͸PHPίϛϡχςΟʹͱͬͯͷେ͖ͳোนͰ͋Γɺ PHP։ൃऀ͕αʔόʔϨεΞʔΩςΫνϟΛ׆༻͢ΔͷΛ೉͍ͯͨ͘͠͠ Brefͱ͸PHPͷOSSϓϩδΣΫτͷҰͭ AWS Lambda্ͰPHPΞϓϦέʔγϣϯΛ؆୯ʹσϓϩΠͱ؅ཧΛՄೳʹ͢Δπʔϧ - PHPϥϯλΠϜ ɹAWS LambdaͷΧελϜϥϯλΠϜΛར༻ɺDeveloper Community ڞ༗ͷΧελϜϥϯλΠϜΛఏڙ - ϑϨʔϜϫʔΫରԠ ɹLaravelɺSymfonyͳͲͷਓؾͷ͋ΔPHPϑϨʔϜϫʔΫΛαϙʔτ - ίϯιʔϧίϚϯυ ɹίϚϯυϥΠϯΠϯλʔϑΣʔεʢCLIʣΛఏڙ

Slide 35

Slide 35 text

©Fusic Co., Ltd. 35 σϓϩΠ ·ͣԿΑΓ΋خ͍͠ͷ͕ɺ ΧελϜϥϯλΠϜΛ ʮDeveloper CommunityͰڞ༗ग़དྷΔࣄʯ AWS Lambda͸ެࣜͷϥϯλΠϜʹ PHP͕༻ҙ͞Ε͍ͯͳ͍ͷ͸PHPͷࣄ৘Λߟ͑Δͱ PHPer͸ཧղͰ͖·͕͢ɺগ͠ਏ͕͋͞Γ·͢ ͦ͜ΛBref͸ղܾͯ͘͠Ε͓ͯΓɺ ҎԼίϚϯυʹͯࠨͷServerless Frameworkͷ ςϯϓϨʔτ͕ग़ྗ͞Ε·͢ (region౳͸ߋ৽ࡁ) $ composer require bref/bref $ vendor/bin/bref init $ serverless deploy

Slide 36

Slide 36 text

©Fusic Co., Ltd. 36 serverless framework Serverless Framework͸αʔόʔϨεΞʔΩςΫνϟͷΞϓϦέʔγϣϯΛ ؆୯ʹσϓϩΠ͠؅ཧ͢ΔͨΊͷOSS AWS LambdaɺGoogle Cloud FunctionsɺAzure FunctionsͳͲɺ ͞·͟·ͳΫϥ΢υϓϩόΠμʔΛαϙʔτ͍ͯ͠·͢ ։ൃऀ͸ɺಛఆͷΫϥ΢υϓϩόΠμʔʹґଘ͢Δ͜ͱͳ͘ɺ ౷Ұ͞ΕͨΠϯλʔϑΣʔεʢYamlʣΛ௨ͯ͡αʔόʔϨεΞϓϦέʔγϣϯΛߏஙՄೳ

Slide 37

Slide 37 text

©Fusic Co., Ltd. 37 ࣮ࡍͷಈ࡞ Bref͸AWS LambdaͱAPI GatewayͱͷؒͰڮ౉͠Λߦ͏ Bref͕API Gateway͔ΒϦΫΤετΛड͚औΓɺAWS Lambda͕ཧղͰ͖Δܗࣜʹม׵ ·ͨBref Laravel Bridgeͱ͍͏ϥΠϒϥϦΛ௨͠ɺLaravel͕ѻ͑Δܗࣜʹม׵ ͦͷϦΫΤετ৘ใ͕BrefʹΑͬͯLambdaؔ਺ʹ౉͞ΕΔ $ composer require bref/bref bref/laravel-bridge --update-with-dependencies $ serverless deploy

Slide 38

Slide 38 text

©Fusic Co., Ltd. 38 LaravelͱBref ͜ͷLaravelͱBrefͷPHPͷϥΠϒϥϦΛ༻͍Δ͜ͱͰ AWS Lambdaͷ্Ͱ؆୯ʹPHPΛಈ࡞ͤ͞Δࣄ͕Մೳʹ ΋ͪΖΜAWS LambdaͷΞϓϦέʔγϣϯͳͷͰɺ αʔόʔϨεͷجຊΛҙࣝ͠ͳ͍ͱ͍͚·ͤΜ͕ɺ ͦΕͰ΋AWS Lambda্ͰLaravel Λಈ͔͢͜ͱ͕ग़དྷΔ ͜Ε͸PHPerʹͱͬͯେ͖ͳਐาͰͨ͠

Slide 39

Slide 39 text

©Fusic Co., Ltd. 39 SQLΛ࢖͍͍ͨ৔߹͸αʔυύʔςΟΛར༻Մೳ - Supabase - Supabase͸ΦʔϓϯιʔεͷFirebase୅ସͱͯ͠ઃܭ͞Εͨ BaaSϓϥοτϑΥʔϜ PostgreSQLΛج൫ͱͨ͠ߴੑೳͳϦϨʔγϣφϧσʔλϕʔεΛఏڙ - TiDB Serverless - TiDB Serverless͸PingCAPʹΑͬͯ։ൃ͞Εͨ Φʔϓϯιʔεͷ෼ࢄܕSQLσʔλϕʔεͰ͋ΔTiDBͷServerlessόʔδϣϯ MySQLͱޓ׵ੑͷ͋ΔϦϨʔγϣφϧσʔλϕʔεΛఏڙ

Slide 40

Slide 40 text

©Fusic Co., Ltd. 40 جຊతʹ͸ઃఆ஋Λઃఆ͢Δ͚ͩ - Supabase - DB_CONNECTIONͷ஋ͷઃఆͷ࢓ํ͸ PHPΧϯϑΝϨϯε๺ւಓ2024ͷࢿྉࢀর - TiDB Serverless - MYSQL_ATTR_SSL_CAͷ஋Λ๨Εͣʹ AWS LambdaͰར༻͢Δ৔߹͸ҎԼͷ஋ - TLS Connections to TiDB Serverlessɿࢀর - https://docs.pingcap.com/tidbcloud/secure-connections-to-serverless-clusters MYSQL_ATTR_SSL_CA=/etc/pki/tls/certs/ca-bundle.crt

Slide 41

Slide 41 text

©Fusic Co., Ltd. 41 ։ൃͷਐΊํ ։ൃΛߦ͏ͱ͖͸ɺجຊతʹDockerͳͲͷίϯςφΛϕʔεͱͨ͠ αʔόʔϨεαʔϏεͷΤϛϡϨʔτΛલఏͱͯ͠ߟ͑ͳ͕Β εςʔδϯάʹ͓͍ͯ͸AWSʹ࣮ࡍʹϦιʔεΛ࡞੒͢ΔͳͲͷߟྀΛߦ͏ LocalStack

Slide 42

Slide 42 text

©Fusic Co., Ltd. 42 LocalStackΛར༻ͨ͠ϩʔΧϧΤϛϡϨʔτ LocalStack AWSΫϥ΢υαʔϏεͷػೳͰ͋Δ LambdaɺS3ɺDynamoDBɺSQSͳͲ AWSͷଟ͘ͷαʔϏεΛϩʔΧϧϚγϯͰΤϛϡϨʔτ͢ΔͨΊͷ ΦʔϓϯιʔεϑϨʔϜϫʔΫ

Slide 43

Slide 43 text

©Fusic Co., Ltd. 43 ΤϛϡϨʔτͯ͠։ൃ͢Δ BrefʹͯAWS LambdaΛΤϛϡϨʔτ LocalStackΛར༻ͯ͠ɺDynamoDBɺS3ɺSQS ͳͲΛϩʔΧϧΤϛϡϨʔτ - ΋ͪΖΜ௨ৗͷಈ࡞֬ೝ΋Մೳ - ϓϩάϥϜͷUnitςετ΋Մೳ - Integrationςετ΋࠶ݱՄೳ LocalStack͕ެ։͍ͯ͠ΔSample΋͋Γ·͢ https://github.com/localstack-samples/bref-localstack-sample

Slide 44

Slide 44 text

©Fusic Co., Ltd. 44 ௚઀Ϧιʔεར༻Λߦ͏ ͔͠͠ɺ͋͘·ͰΤϛϡϨʔτ͸ΤϛϡϨʔτ ͳͷͰεςʔδϯάʹ͸࣮ࡍͷϦιʔεΛߏஙͯ͠ɺ ಈ࡞֬ೝ͢ΔͳͲͷબ୒Λߦ͏΂͖ͱߟ͑·͢

Slide 45

Slide 45 text

©Fusic Co., Ltd. 45 ٕज़ελοΫͷҰ؏ੑͱڞ༗஌ 4

Slide 46

Slide 46 text

©Fusic Co., Ltd. 46 ͍··Ͱͷ࿩Λฉ͍ͯ αʔόʔϨεͷϝϦοτ΋͋Δ ։ൃ΋ࣗવʹߦ͑Δঢ়ଶʹ͋Δ

Slide 47

Slide 47 text

©Fusic Co., Ltd. 47 AWS LambdaͰLaravelͰར༻͢Δࣄͷઌೖ؍ ࣗ෼ࣗ਎Ξϯνύλʔϯͱࢥ͍ͬͯͨ

Slide 48

Slide 48 text

©Fusic Co., Ltd. 48 LambdaͷϞϊϦε Amazon Web Services ϒϩάͷʮOperating Lambda: ΠϕϯτۦಈܕΞʔΩςΫνϟʹ͓͚ΔΞϯνύλʔϯ – Part 3ʯ ҎԼͷΑ͏ʹ৮ΕΒΕ͍ͯ·͢ɻ -LambdaͷϞϊϦε -ύοέʔδαΠζ -࠷খݖݶΛద༻͢Δͷ͕೉͍͠ -ΞοϓάϨʔυ͕ࠔ೉ -อक͕ࠔ೉ -ҎԼ͸֘౰͠ͳ͍ -ίʔυͷ࠶ར༻͕೉͍͠ɿLaravelಘҙ -ςετ͕೉͍͠ɿLaravelಘҙ ࢀߟURL:https://aws.amazon.com/jp/blogs/news/compute-operating-lambda-anti-patterns-in-event-driven-architectures-part-3/ Operating Lambda: ΠϕϯτۦಈܕΞʔΩςΫνϟʹ͓͚ΔΞϯνύλʔϯ – Part 3

Slide 49

Slide 49 text

©Fusic Co., Ltd. 49 AWS LambdaͰLaravelͰར༻͢Δཧ༝

Slide 50

Slide 50 text

©Fusic Co., Ltd. 50 ฐࣾͷٕज़ελοΫ PHPɺRubyɺͦͯ͠AWSΛத৺ͱͨ͠։ൃΛߦ͍ͬͯͯɺ Ͳ͏ͯ͠΋AWS LambdaͷϥϯλΠϜͱͷϛεϚον͕͋ͬͨ WebϑϨʔϜϫʔΫར༻ͨ͠Web։ൃ - PHPͷLaravelʢCakePHPʣ - RubyͷRuby on Rails ͦΜͳத๻͸αʔόʔϨεͷՁ஋Λײͯ͡ɺಋೖΛଓ͚·ͨ͠

Slide 51

Slide 51 text

©Fusic Co., Ltd. 51 PythonʹΑΔαʔόʔϨε 入 API EC 2 API 手 心 API Gateway -> Lambda -> S 3 Json EC 2 cron Python Python -> Go

Slide 52

Slide 52 text

©Fusic Co., Ltd. 52 ݴޠʹΑΒͳ͍αʔόʔϨε AWS Amplify 用 Web ECR AWS Batch Step Functions AWS Amplify ( )

Slide 53

Slide 53 text

©Fusic Co., Ltd. 53 ϥϯλΠϜͱͷϛεϚον ࣮֬ʹαʔόʔϨεͷԸܙ͸ײ͍ͯͨ͡Ұํɺ ಋೖ͢Δ͜ͱͰϝϯςφʔ͕গͳ͍ϓϩδΣΫτΛ૿΍͍ͯ͠ΔΑ͏ͳײ֮΋͋Γ·ͨ͠ ٯʹRubyͷνʔϜʹؔͯ͠͸ɺެࣜϥϯλΠϜ͕͋ΔͨΊ͔ αʔόʔϨε͕౰ͨΓલʹͳ͍ͬͯͬͯΔͷΛײ͍͓ͯͯ͡Γ ٕज़ελοΫͱAWS LambdaͷϥϯλΠϜͱͷϛεϚον͕૝૾Ҏ্ʹେ͖͍ͷΛ࣮ײ࢝͠Ί͍ͯͨ

Slide 54

Slide 54 text

©Fusic Co., Ltd. 54 ໨తΛৼΓฦΔ 目 入 用

Slide 55

Slide 55 text

©Fusic Co., Ltd. 55 ٕज़ελοΫͷҰ؏ੑͱڞ༗஌ νʔϜͷεΩϧηοτ ΤϯδχΞ͕LaravelΛར༻ͨ͠ΞϓϦέʔγϣϯʹ׳Ε͍ͯΔ ৽͍͠ݴޠ΍αʔόʔϨεΞʔΩςΫνϟʹ׬શʹ੾Γସ͑Δ͜ͱ͸࣌ؒͱ࿑ྗ͕͔͔Δ ٕज़తͳ౷Ұੑͱ஌ࣝͷڞ༗ LaravelͷΑ͏ͳ੒ख़ͨ͠ϑϨʔϜϫʔΫ͸υΩϡϝϯτ΋ॆ࣮͓ͯ͠ΓɺνʔϜશମͰͷٕज़త౷Ұੑ΍஌ࣝͷڞ༗Λαϙʔτ ૊৫ͷܧଓੑͱੜ࢈ੑͷҡ࣋ ٸͳٕज़ελοΫͷมߋ͸ϓϩδΣΫτͷਐߦΛ஗Βͤɺੜ࢈ੑΛ௿Լͤ͞ΔՄೳੑ͕͋Γ·͢ αʔόʔϨεͷՁ஋ʹઆಘྗΛ࣋ͨͤͯ౤ࢿΛճऩ͢Δ͔ɺੜ࢈ੑΛ֬อͨ͠ঢ়ଶͰ૊৫Λม͑Δ೉қ౓ͷߴ͞ จԽ΍ϚΠϯυηοτͷมԽ νʔϜͷจԽ΍ϚΠϯυηοτ͕LaravelΛ࢖ͬͨWebΞϓϦέʔγϣϯਂ͍ࠜͯ͘͟͠Δͷ΋ײ͡·ͨ͠ ϓϩάϥϜݴޠΛࣺͯΔɺจԽΛࣺͯΔͷ͸ඇৗʹ೉͘͠ɺจԽతͳมԽ͸ٕज़తͳมԽΑΓ΋஗͍͜ͱΛ࣮ײ͠·ͨ͠

Slide 56

Slide 56 text

©Fusic Co., Ltd. 56 PHPΛAWS Lambda্Ͱ࢖͏͜ͱΛݕ౼ PHPΛಋೖ͢Δ͜ͱΛ2018೥͋ͨΓ͔Βݕ౼Λ࢝Ί͍ͯͨ ΧελϜϥϯλΠϜ͕ൃද͞Εͨཌ೥ͷPHP Conference 2019ͷࢿྉʹͯ ʮAWS LambdaΛPHPʹͯ࢖͏ͨΊʹ͸ʯͱ͍͏ͱ͜ΖΛௐ΂͍ͯͨ

Slide 57

Slide 57 text

©Fusic Co., Ltd. 57 PHPΛAWS Lambda্Ͱ࢖͏͜ͱΛݕ౼ AWS Dev Day 2022ʹͯϑϧαʔόʔϨεʹͯఏڙ͍ͯ͠ΔαΠτͷ࿩Λ͠·ͨ͠ ʮAmazon S3 Select で ࣮ݱ͢Δαʔ バ ʔϨεߴෛՙରԠαΠτʯ https://speakerdeck.com/seike460/serverless-high-load-site-realized-with-amazon-s3-select

Slide 58

Slide 58 text

©Fusic Co., Ltd. 58 PHPΛAWS Lambda্Ͱ࢖͏͜ͱΛݕ౼ ಡΈࠐΈઐ༻ͷେྔͷΞΫηεΛͲ͏͞͹͔͘ɺ ߋʹ୹ೲظͰߦ͏ඞཁ͕͋Γ·ͨ͠ - AWS Lambda - AWS S3 Select - S3ʹ഑ஔ͞ΕͨJSONΛSQLͷϑΟϧλϦϯά ্هΛར༻ͨ͠ΞʔΩςΫνϟΛಈ࡞ͤ͞ͳ͕Βɺ େྔͷΞΫηεΛࡹ͘ࣄͰ͏·͘ཁ݅ʹରԠΛߦ͍·ͨ͠ ·ͨPHPͷ AWS LambdaΛઌߦͯ͠ࢼ͍ͯͨ͠ϝϯόʔͱҰॹʹ ։ൃΛଓ͚Δ͜ͱͰ·ͣ͸ຊ൪ʹಋೖ͢Δ͜ͱʹ੒ޭͨ͠ θϩεέʔϧ͢ΔLaravelΛνʔϜͰ׬੒ͤ͞Δ͜ͱ͕ग़དྷ·ͨ͠

Slide 59

Slide 59 text

©Fusic Co., Ltd. 59 WebϑϨʔϜϫʔΫΛબͿͱαʔόʔϨε͸ࢮ͵ͷ͔ Ұݟ͢Δͱ૬൓͢ΔೋͭͷςΫϊϩδʔ ҰํͰ஍ํاۀͰ͸εΩϧηοτΛڞ௨Խͤ͞Δҝʹ޿͍ڞ༗஌ࣝͰ͋ΔLaravelΛ࢖͍͍ͨ αʔόʔϨεΛར༻ͯ͠ͷϝϦοτΛڗड͍ͨ͠ ࣮ࡍʹ͸Ͳ͏ͳͷ͔ʁ - ύϑΥʔϚϯε - ࣮ߦ࣌ؒɺϦιʔεྔ੍ݶ

Slide 60

Slide 60 text

©Fusic Co., Ltd. 60 ෛՙࢼݧͷ݁ՌΛߦͬͯ΋໰୊ͳ͔ͬͨ ӡ༻ͷதͰࠔΔ͜ͱ͸ͳ͘ɺෛՙࢼݧ΋͔ͳΓͷ଎౓Λग़ͤͨ

Slide 61

Slide 61 text

©Fusic Co., Ltd. 61 ੍ݶͷ࿩͸ීஈ͔Βؾʹͨ͠ ੍ݶʹؔͯ͠͸ීஈ͔ΒύϥϝʔλʔνϡʔχϯάΛؾʹ͍ͯͨ͠ͷͰࣗવʹରԠͰ͖ͨ - max_execution_time - memory_limit - pm.max_children ͳͲօ༷΋ؾʹ͍ͯ͠ΔύϥϝʔλʔͰ͸ͳ͍Ͱ͠ΐ͏͔

Slide 62

Slide 62 text

©Fusic Co., Ltd. 62 ࣮ମݧ͔ΒৼΓฦΔ AWS LambdaΛબ΂ͨ͜ͱͰ ΋ͨΒͤͨޮՌ

Slide 63

Slide 63 text

©Fusic Co., Ltd. 63 ϑϧϚωʔδυαʔϏεʹର͢Δϝϯςφϯε͕গͳ͞ 用 用

Slide 64

Slide 64 text

©Fusic Co., Ltd. 64 ίετϝϦοτ 用 立 用 用

Slide 65

Slide 65 text

©Fusic Co., Ltd. 65 θϩεέʔϧΛแؚͨ͠εέʔϥϏϦςΟͷҕ೚ AWS AWS Lambda 大

Slide 66

Slide 66 text

©Fusic Co., Ltd. 66 ϚωʔδυαʔϏεʹΑΔ৺ͷ҆ೡ 心 用 非 大

Slide 67

Slide 67 text

©Fusic Co., Ltd. 67 νʔϜͰಋೖ͢Δ͜ͱ΋Ͱ͖ͨ ؆қͳWebϑΥʔϜ ͨͩ͠଴ػίετΛ௿ݮ͍ͤͨ͞ AWS LambdaͱPHPΛ૊Έ߹Θͤͯ एखͷϝϯόʔʹߏஙͯ͠΋Β͍ͳ͕Β ଴ػίετΛ΄΅0ͷঢ়ଶͰߏஙΛ׬ྃ Laravelͷ஌ࣝ͸͋ͬͨͷͰɺ LaravelͷߏஙΛߦ͏Α͏ʹɺ ࣗ෼Ҏ֎ͷϝϯόʔʹߏஙͤ͞Δ͜ͱ͕Ͱ͖ͨ Laravelར༻ʹΑΓηΩϡϦςΟରࡦ΋͠ͳ͕Βɺ AWSͱͷ౷߹΋೉ͳ࣮͘૷͍ͯ͠·ͨ͠

Slide 68

Slide 68 text

©Fusic Co., Ltd. 68 ͜ΕΒͷՁ஋ΛLaravelͰڗडग़དྷΔ Ξϯνύλʔϯͱ͞Ε͍ͯͨWebϑϨʔϜϫʔΫͰ΋ ͜ͷՁ஋Λڗडग़དྷΔ͜ͱʹඇৗʹߴ͍Ձ஋Λײͨ͡ ʮAWS Lambdaͱͯ͠͸ϕετͰ͸ͳ͍ ɹͰ΋ߏஙɺӡ༻·ͰؚΊͨΞϓϦέʔγϣϯͱͯ͠͸ ɹνʔϜͱͯ͠ϕετͩͬͨʯͱߟ͑·ͨ͠ νʔϜͷจԽͱͯ͠αʔόʔϨεΛड͚ೖΕΔ͜ͱ͕ग़དྷͨ Laravel΋༗ޮ׆༻ͯ͠ɺ͍ͭ΋ͱಉ͡։ൃ଎౓Λग़ͤͨ

Slide 69

Slide 69 text

©Fusic Co., Ltd. 69 Monolith First Serverless Development ࢀߟURL : https://speakerdeck.com/_kensh/monolith-first-serverless-development?slide=55 @_kensh ʮMonolith First Serverless Developmentʯ

Slide 70

Slide 70 text

©Fusic Co., Ltd. 70 ΤϯυϙΠϯτΛ෼͚Δ͜ͱͰ֦ுʹ΋ରԠ 用 Role APIGateway 示 functions: web: handler: public/index.php runtime: php- 8 2 -fpm timeout: 28 events: - httpApi: '*' admin-web: handler: public/index.php runtime: php- 8 2 -fpm timeout: 28 role: api-admin-role events: - httpApi: method: '*' path: /admin $ serverless deploy function --function admin-web Deploying function admin-web to stage dev (ap-northeast- 1 ) ✔ Function code deployed ( 42 s) Function configuration did not change, and the update was skipped. If you made changes to the service configuration and expected them to be deployed, it most likely means that they can only be applied with a full service deployment. ( 42 s)

Slide 71

Slide 71 text

©Fusic Co., Ltd. 71 ஍ํͦ͜αʔόʔϨε • αʔόʔϨεΛಋೖ͠΍͘͢ίετϝϦοτ͕ग़΍͍͢ • ׬ᘳΛٻΊͣαʔόʔϨεʹPHPΛಋೖ͢Δ͜ͱΛબ୒ࢶʹ • αʔόʔϨεΛಋೖ͢Δ͜ͱͰιϑτ΢ΣΞΞʔΩςΫνϟͱͯ͠΋༏Εͨ΋ͷʹ Everything will be Serverless ͦΜͳະདྷΛ৴ͯ͡αʔόʔϨεPHPΛ΍ͬͯΈ·ͤΜ͔ʁ

Slide 72

Slide 72 text

©Fusic Co., Ltd. 72 ·ͱΊ 5

Slide 73

Slide 73 text

©Fusic Co., Ltd. 73 ·ͱΊ αʔό؅ཧΛඞཁͱ͠ͳ͍ΞϓϦέʔγϣϯͷߏஙͱ࣮ߦͷʮ֓೦ʯ Point 01 αʔόʔϨε͸΋ͪΖΜσϝϦοτ΋͋Δ͕ɺ੍໿Λड͚ೖΕΔࣄ͸࣮͸ωΨςΟϒ͡Όͳ͍ Point 02 LaravelͳͲͷڧྗͳϑϨʔϜϫʔΫΛར༻ͨ͠Monolith First Serverless Developmentͱ͍͏ߟ͑ํ Point 03 ஍ํҊ݅ʹͦ͜αʔόʔϨε͸ಋೖ͠΍͘͢ɺޮՌ΋ग़΍͍͢ɻબ୒ࢶͷҰͭʹͲ͏Ͱ͠ΐ͏͔ Point 04

Slide 74

Slide 74 text

©Fusic Co., Ltd. 74 Thank You We are Hiring! https://recruit.fusic.co.jp/ ͝ਗ਼ௌ͍͖ͨͩ͋Γ͕ͱ͏͍͟͝·ͨ͠