Slide 1

Slide 1 text

©Fusic Co., Ltd.  1 ஍ํͦ͜αʔόʔϨεʂ νʔϜʹϑΟοτͤ͞ΔαʔόʔϨε 2024.09.06 清家史郎 @seike460 JAWS-UG ͓͓͍ͨ ஍ํاۀ͕Ϋϥ΢υΛ׆༻͢Δώϯτ

Slide 2

Slide 2 text

©Fusic Co., Ltd. 2 ਗ਼Ո ࢙࿠ @seike460 େ෼ݝ༝෍ࢢঙ಺ொग़਎ େ෼༤৓୆ߴߍଔۀ AWS Community Builder Serverless Fukuoka.php Fukuoka.go JAWS-UG Fukuoka Serverless Meetup Fukuoka Cloudflare Meetup Fukuoka JP_Stripes Fukuoka ࣗݾ঺հ ͸͡Ίʹ גࣜձࣾFusic ϓϦϯγύϧΤϯδχΞ/ΤόϯδΣϦετ

Slide 3

Slide 3 text

©Fusic Co., Ltd. 3 CONTENTS ໨࣍ 1. αʔόʔϨεͱ͸ͳΜͳͷ͔ 2. ஍ํ x αʔόʔϨε 3. ஍ํͰͷ։ൃͱϑϨʔϜϫʔΫ 4. ·ͱΊ

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

Slide 8

Slide 8 text

©Fusic Co., Ltd. 8 ஍ํ x αʔόʔϨε 2

Slide 9

Slide 9 text

©Fusic Co., Ltd. 9 ஍ํ։ൃͷ՝୊ 地 方 開発の課題   リソース制約: 限られた予算、 人 材、時間   スキルセット: メンバー次第で濃淡が出がち、広い共有知があるスキルが揃いがち

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

©Fusic Co., Ltd. 11 ஍ํ։ൃͷ՝୊ 地 方 開発の課題   リソース制約: 限られた予算、 人 材、時間   スキルセット: メンバー次第で濃淡が出がち、広い共有知があるスキルが揃いがち サーバーレスの強み   初期、運 用 コストの削減: 物理サーバーやインフラの設定、ゼロスケール、メンテナンスが不要   マネージドサービス: 共有知が多いAmazon Web Servicesに乗っかれる

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

©Fusic Co., Ltd. 18 Bref Brefͱ͸PHPͷOSSϓϩδΣΫτͷҰͭ AWS Lambda্ͰPHPΞϓϦέʔγϣϯΛ؆୯ʹσϓϩΠͱ؅ཧΛՄೳʹ͢Δπʔϧ - PHPϥϯλΠϜ ɹAWS LambdaͷΧελϜϥϯλΠϜΛར༻ɺDeveloper Community ڞ༗ͷΧελϜϥϯλΠϜΛఏڙ - ϑϨʔϜϫʔΫରԠ ɹLaravelɺSymfonyͳͲͷਓؾͷ͋ΔPHPϑϨʔϜϫʔΫΛαϙʔτ - ίϯιʔϧίϚϯυ ɹίϚϯυϥΠϯΠϯλʔϑΣʔεʢCLIʣΛఏڙ

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

©Fusic Co., Ltd. 21 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 22

Slide 22 text

©Fusic Co., Ltd. 22 AWS LambdaͰLaravelͰར༻͢Δཧ༝ これだけの理由があり、理解もあるのに なぜフレームワークを使おうとするのか

Slide 23

Slide 23 text

©Fusic Co., Ltd. 23 ໨తΛৼΓฦΔ 目 的は「サーバーレスを導 入 して終わり」ではない 「チームで運 用 できるサーバーレス」を考える

Slide 24

Slide 24 text

©Fusic Co., Ltd. 24 AWSͱWebϑϨʔϜϫʔΫΛ૊Έ߹ΘͤΔ ࣗ෼ͨͪͷจԽͰ͋ΔPHPͱAWS LambdaΛ૊Έ߹ΘͤΔࣄͰ࣋ଓՄೳͳ։ൃମ੍Λ֬อ

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

©Fusic Co., Ltd. 26 ΤϯυϙΠϯτΛ෼͚Δ͜ͱͰ֦ுʹ΋ରԠ 実際に今回の構成でも動作するエンドポイントを 役割に分けて変更できる エンドポイント専 用 の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 ( 4 2 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. ( 4 2 s)

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

©Fusic Co., Ltd. 28 νʔϜͰಋೖ͢Δ͜ͱ΋Ͱ͖ͨ ؆қͳWebϑΥʔϜ ͨͩ͠଴ػίετΛ௿ݮ͍ͤͨ͞ AWS LambdaͱPHPΛ૊Έ߹Θͤͯ एखͷϝϯόʔʹߏஙͯ͠΋Β͍ͳ͕Β ଴ػίετΛ΄΅0ͷঢ়ଶͰߏஙΛ׬ྃ The Frugal Architect

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

©Fusic Co., Ltd. 30 9/21 ServerlessDays Tokyoʹͯʂ

Slide 31

Slide 31 text

©Fusic Co., Ltd. 31 ஍ํͦ͜αʔόʔϨε • αʔόʔϨεΛಋೖ͠΍͘͢ίετϝϦοτ͕ग़΍͘͢஍ํͱ૬ੑ͕ྑ͍ • ׬ᘳΛٻΊͣαʔόʔϨεʹPHPΛಋೖ͢Δ͜ͱΛબ୒ࢶʹ νʔϜʹϑΟοτͤ͞ΔαʔόʔϨεΛಋೖͯ͠Έ·ͤΜ͔ʁ

Slide 32

Slide 32 text

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