Slide 1

Slide 1 text

࣍ੈ୅PaaSͱ Serverless
 ະདྷ͸Ͳ͜ʹ͋Δʁ

Slide 2

Slide 2 text

Kazuto Kusama @jacopen

Slide 3

Slide 3 text

͜ͷൃද͸ݸਓͷݟղͰ͋Γɺ ॴଐ͢Δ૊৫ͷެࣜݟղͰ͸͋Γ·ͤΜ ஫ҙ

Slide 4

Slide 4 text

࠷ۙPaaSͬͯͲ͏Ͱ͔͢ʁ ੝Γ্͕ͬͯΔʁ

Slide 5

Slide 5 text

ࣄ࣮: “PaaS”ͱ͍͏͚ͩͰ͓ۚΛग़ͯ͠
 ໯͑Δ࣌୅͸ͱͬ͘ʹऴΘͬͨ 㱺όζϫʔυͱͯ͠͸Φϫίϯ

Slide 6

Slide 6 text

ϋΠϓɾαΠΫϧ https://www.gartner.co.jp/research/methodologies/research_hype.php

Slide 7

Slide 7 text

ϋΠϓɾαΠΫϧ https://www.gartner.co.jp/research/methodologies/research_hype.php ͓͔Ͷͨͬ΀Γ ϘʔφελΠϜ PaaS͸ଟ෼͜ͷ΁Μ

Slide 8

Slide 8 text

ʮPaaSͰṶ͔͍ͬͯΔձࣾʯ
 ͱݴΘΕͯࢥ͍ු͔΂Δձ͕ࣾগͳ͍ ͳͥʁ 㱺Ϗδωεͱͯ͠ͷকདྷੑ͕ෆ͔֬

Slide 9

Slide 9 text

͔֬Β͍͠ະདྷ

Slide 10

Slide 10 text

͜Ε͔ΒPaaSͱ͍͏ݴ༿͸ ࢖ΘΕͳ͘ͳ͍ͬͯ͘ ͔֬Β͍͠ະདྷ

Slide 11

Slide 11 text

“Cloud Native Platform”

Slide 12

Slide 12 text

“Container Platform”

Slide 13

Slide 13 text

“Container as a Service”

Slide 14

Slide 14 text

Կނʮ୤PaaS͔ʯ • PaaSͱ͍͏ݴ༿ͷ෼͔ΓͮΒ͞ • ΑΓαʔϏεͷੑ֨Λද͢ݴ༿ʹ • PaaSͰେ੒ޭͨ͠ྫ͕͋·Γͳ͍ͷͰɺϏδωεతʹ
 ྑ͍ҹ৅͕ͳ͍

Slide 15

Slide 15 text

ͦ΋ͦ΋Կނ੒ޭ͠ͳ͔ͬͨͷ͔Ծઆ • ϩοΫΠϯ • ϕϯμʔ͸ʮϩοΫΠϯͯ͠ͳ͍ʯͱ͍͏ɻ
 ʮΦʔϓϯͳٕज़͕ͦͷ··࢖͑ΔΑʂʯɹŋŋŋͦ͏͍͏໰୊͡Όͳ͍
 • ҙࣝվֵͷ೉͠͞ • ϓϩηε͸εςʔτϑϧʹʂ ઃఆ͸؀ڥม਺ʹʂϩά͸ඪ४ग़ྗʹʂ 
 ͜ΕͰΫϥ΢υωΠςΟϒΞϓϦέʔγϣϯͩʂɹŋŋŋ͑ʔΊΜͲ͍͘͞ • യવͱͨ͠ෆ҆

Slide 16

Slide 16 text

͜Ε͔ΒͷPaaS͸ Ͳ͏ͳΔͷ͔

Slide 17

Slide 17 text

ୈ1ੈ୅ͷPaaS • 2007೥ʙ2010͝Ζ·Ͱ • ϓϩϓϥΠΤλϦ • ܾΊଧͪͷݴޠɾϑϨʔϜϫʔΫɾDB

Slide 18

Slide 18 text

ୈ2ੈ୅ͷPaaS • 2011೥ʙ • ϓϩϓϥΠΤλϦ / Φʔϓϯ • ༷ʑͳݴޠɾϑϨʔϜϫʔΫɾDB • Ծ૝Խٕज़Λϑϧ׆༻

Slide 19

Slide 19 text

ୈ3ੈ୅ͷPaaS • 2014೥ʙ • ίϯςφωΠςΟϒ • Ͳͷ؀ڥͰ΋ɺಉ͡΋ͷ͕࢖͑Δ • ΑΓૣ͘ɺΑΓॊೈʹɺΑΓΦʔϓϯʹ

Slide 20

Slide 20 text

ୈ4ੈ୅ͷPaaS

Slide 21

Slide 21 text

• ߏ੒͍ͨ͠ΠϯϑϥΛίʔυͰදݱɻIaaSͱಉ౳ͷॊೈੑΛɺ ΑΓߴ଎ʹɺΑΓ؆୯ʹɺΑΓޮ཰Α࣮͘ݱग़དྷΔɻ • ͜Ε·ͰͷPaaS
 ʮΠϯϑϥ͸ҙࣝ͠ͳ͍͍ͯ͘ɻ
 ɹͱʹ͔͘Ξοϓϩʔυͯ͘͠Εɺ͋ͱ͸Կͱ͔͢Δʯ
 㱺HerokuͳͲͰ࣮ݱͨ͠ੈքɻ͘͢͝؆୯ʹ࢖͑Δɻ Infrastructure as CodeΛ ࣮ݱ͢Δ ϓϥοτϑΥʔϜ

Slide 22

Slide 22 text

• ͲͷΞϓϦΛԿݸ্ཱͪ͛ͯɺ
 Ͳ͏͍͏NWߏ੒ʹͯ͠
 ʓʓΛϚ΢ϯτͯ͠
 XXXͱ͍͏ίϯϑΟάΛೖΕͯŋŋŋ
 
 ͱ͍ͬͨߏ੒৘ใΛίʔυͰ؅ཧ
 σϓϩΠ͢Δͱج൫ଆ͕͏·͍͜ͱ
 ࣮ݱͯ͘͠ΕΔɻ
 ίϯςφٕज़΍SDNͳͲͷ߹Θٕͤ

Slide 23

Slide 23 text

Infrastructure as CodeΛ ࣮ݱ͢Δ ϓϥοτϑΥʔϜ • Google͕BorgͰ࣮ূࡁ • BorgΛࢀߟʹ࡞ΒΕ͍ͯΔKubernetesɺ
 KubernetesϕʔεͷOpenShift͸ɺঃʑʹ͜ͷੈքΛ
 ࣮ݱ͍ͯ͠Δ • Docker΋ɺόʔδϣϯΛ௥͏͝ͱʹ࣮૷ͭͭ͋͠Δ

Slide 24

Slide 24 text

• ෳࡶʹͳͬͯ͋ΔҙຯୀԽͯ͠ͳ͍ʁ • ෳࡶͳ͜ͱ͕ग़དྷΔϓϥοτϑΥʔϜΛϥοϓͯ͠
 ؆୯ʹ࢖͏ͷ͸Մೳ • ؆୯ͳ͜ͱ͔͠ग़དྷͳ͍ϓϥοτϑΥʔϜͰෳࡶͳ͜ͱΛ ͢Δͷ͸ࠔ೉ Infrastructure as CodeΛ ࣮ݱ͢Δ ϓϥοτϑΥʔϜ

Slide 25

Slide 25 text

• Herokuͷ12 Factor app͸ྑ͘ग़དྷͨߟ͑ • ग़དྷΔݶΓStatelessʹ࡞Δ͜ͱͰɺεέʔϥϒϧͰϝϯς
 ͠΍͍͢ɺΫϥ΢υωΠςΟϒͳΞϓϦέʔγϣϯ͕࡞ΕΔ • ͡Ό͋DB΍MQͳͲͷStatelessʹग़དྷͳ͍΋ͷ͸ʁ
 㱺 ʮΞλον͞ΕͨϦιʔεͱͯ͠ѻ͏ʯ
 㱺ӡ༻͸୭͕΍ͬͯ΋ྑ͍Μ͚ͩͲɺϦιʔεͱͯ͠෼཭ͯ͠
 ߟ͑Ε͹͍ΖΜͳέʔεʹରԠͰ͖ΔΑ Stateful applicationͷαϙʔτ

Slide 26

Slide 26 text

Container 2.0 • Mesosphere͕ݴ͍࢝Ίͨ • Stateful application޲͚ͷ
 εέδϡʔϥΛDC/OSͰ
 αϙʔτɻ྆ํΛಉ͡ج൫্Ͱ
 ࣮ݱͰ͖Δ

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

Stateful Sets (Pet Sets) • KubernetesͰ࣮૷͕ਐΜͰ͍Δ • k8s্ͰɺैདྷͷΞϓϦέʔγϣϯΛ
 αϙʔτ͢Δ࢓૊Έ • ӬଓԽϘϦϡʔϜ
 ݻఆ͞ΕͨHostname
 ໊લղܾ

Slide 29

Slide 29 text

Stateful Sets (Pet Sets) • εέʔϥϒϧͳΞʔΩςΫνϟΛ࡞Δ৔߹ɺϦιʔεΛϖοτ
 Ͱ͸ͳ͘ɺՈச(Cattle)ͷΑ͏ʹѻ͏ͷ͕͍͍ɻ • ͜Ε·ͰͷΫϥ΢υ͸ɺ͜ͷCattleΛڧ੍͖ͯͨ͠અ͕͋Δ • Ͱ΋શͯͷΞϓϦέʔγϣϯ͕௒ઈεέʔϧ͢Δඞཁ͋ΔΜ͚ͩͬʁ

Slide 30

Slide 30 text

Serverless ͓ۚग़ͯ͠໯͑Δ ྲྀߦΓͷϫʔυ

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

PaaS • ServerؚΊͨɺApplicationͷӡ༻Λݞ୅ΘΓ͢Δ Serverless • ServerΛͦ΋ͦ΋ҙࣝ͠ͳ͍

Slide 33

Slide 33 text

Serverless͕ͦ͜ະདྷʂ

Slide 34

Slide 34 text

ຊ౰ʹͦ͏ͳͷ͔ʁ

Slide 35

Slide 35 text

ઌʹݴ༿ͷ੔ཧ FaaS (Functions as a Service) γϯϓϧͳίʔυΛFaaSʹॻ͍͓ͯ͘ͱɺࢦఆͨ͠ΠϕϯτʹԠͯ͡ ίʔυ͕࣮ߦ͞ΕΔαʔϏεɻ AWS Lambda΍Azure Functionsɺ OpenWhiskͳͲ BaaS (Backend as a Service)ɺFunctional SaaS ೝূ΍ϓογϡ഑৴ͳͲɺϞόΠϧΞϓϦ΍SPAͰඞཁͳػೳΛαʔ Ϗεͱͯ͠ఏڙ͢ΔɻFirebase΍ɺαʔϏεऴྃͨ͠ParseͳͲ

Slide 36

Slide 36 text

ઌʹݴ༿ͷ੔ཧ FaaS (Functions as a Service) γϯϓϧͳίʔυΛFaaSʹॻ͍͓ͯ͘ͱɺࢦఆͨ͠ΠϕϯτʹԠͯ͡ ίʔυ͕࣮ߦ͞ΕΔαʔϏεɻ AWS Lambda΍Azure Functionsɺ OpenWhiskͳͲ BaaS (Backend as a Service)ɺFunctional SaaS ೝূ΍ϓογϡ഑৴ͳͲɺϞόΠϧΞϓϦ΍SPAͰඞཁͳػೳΛαʔ Ϗεͱͯ͠ఏڙ͢ΔɻFirebase΍ɺαʔϏεऴྃͨ͠ParseͳͲ 㱺 BaaS+PaaSͷ૊Έ߹Θͤ͸ҎલΑΓҰൠతʹߦΘΕ͍ͯΔ
 ͷͰɺ͔͜͜Βઌ͸FaaSʹ͍ͭͯݴٴ͠·͢

Slide 37

Slide 37 text

API Gateway ObjectStorage etc… Functions Πϕϯτ Πϕϯτ Πϕϯτ ࣮ߦ output etc… ΠϕϯτυϦϒϯ Πϕϯτड͚෇͚ͨͱ͖ͷ ॲཧ಺༰Λॻ͍͓ͯ͘ FaaSͷಈ͖

Slide 38

Slide 38 text

API Gateway ObjectStorage etc… Application output etc… ಉ͜͡ͱΛPaaSͰ΍Ζ͏ͱ͢Δͱɾɾɾ HTTPͳΓԿͳΓͰ
 ΠϕϯτΛड͚෇͚Δ ޱΛͭ͘Δ αʔόʔϓϩηε(Πϯελϯε) Λ্ཱͪ͛ͯ଴ػͤ͞Δ Πϕϯτड͚෇͚ͨͱ͖ͷ ॲཧ಺༰Λॻ͍͓ͯ͘

Slide 39

Slide 39 text

API Gateway ObjectStorage etc… Application output etc… ͜͏͍͏ͱ͖Ͳ͏͢Δʁ શવΠϕϯτ͕དྷͳ͍ͱ͖΋Πϯελϯε͸ ͣͬͱ্ཱ͓͔ͪ͛ͯͳ͚Ε͹͍͚ͳ͍

Slide 40

Slide 40 text

API Gateway ObjectStorage etc… Application output etc… ͜͏͍͏ͱ͖Ͳ͏͢Δʁ ಥવΠϕϯτ͕ٸ૿ͨ͠ͱ͖ʹ ΠϯελϯεΛεέʔϧͤ͞Δૢ࡞͕ඞཁ ɾ ɾ ɾ

Slide 41

Slide 41 text

PaaSʹग़དྷͳͯ͘FaaSʹग़དྷΔ͜ͱ • PaaSͰ͸ɺΠϕϯτ͕ى͖ͳ͍࣌Ͱ΋ৗʹϓϩηε্͕͕Δɻ· ͨɺಥવΠϕϯτ͕ٸ૿ͨ͠ͱ͖͸ɺϓϩηεΛ૿΍͢ͱ͍͏ૢ ࡞ΛࣗಈͳΓखಈͳΓͰߦΘͳͯ͘͸͍͚ͳ͍ɻ
 (ͦΕͰ΋ɺIaaS΍ΦϯϓϨϛεΑΓ͸͍ͩͿָ) • FaaS͸ࡉ͔ͳॲཧ୯ҐͰFunction͕࡞ΒΕɺΠϕϯτͷ౓ʹϓϩ ηε্͕͕Γɺॲཧ͕ऴΘΔͱϓϩηε΋ফ͑Δɻ
 Πϕϯτ͕ى͖ͳ͍ͱϦιʔε͸ফඅ͠ͳ͍ɻେྔͷΠϕϯτൃੜ ࣌΋ͦΕʹԠͯ͡ϓϩηε্͕͕Γɺফ͍͑ͯ͘

Slide 42

Slide 42 text

FaaS vs PaaS • FaaS͸PaaSʹ࢒͍ͬͯͨʮӡ༻ʯ͕ແ͘ͳ͍ͬͯΔ • ΑΓεέʔϥϒϧɺ͔ͭޮ཰ͷྑ͍࢓૊ΈΛ࡞ΕΔ • ػೳ୯ҐͰ෼͚͟ΔΛಘͳ͍
 㱺 εςʔτΛ࣋ͨͤΔ͜ͱ͕೉͍͠
 㱺 ݁Ռͱͯ͠εέʔϥϒϧʹͳΔ

Slide 43

Slide 43 text

FaaS is better than PaaS? • ͦΜͳ͜ͱ͸ͳ͍ • PaaSͷΑ͏ͳෳࡶͳॲཧΛ1FunctionͰߦΘͤΔ͜ͱ͸ग़དྷͳ͍ • WebαʔόʔͷΑ͏ͳίϯςϯπΛ഑৴͢ΔΑ͏ͳ
 ࢓૊ΈͰ΋ͳ͍ • PaaSͰಈ͔͢ΞϓϦ͸ɺϩʔΧϧͰ΋IaaSͰ΋ΦϯϓϨͰ΋
 ಈ͘Α͏ʹ࡞ΕΔɻFaaS͸FaaS༻ͷ଄Γʹͤ͟ΔΛಘͳ͍

Slide 44

Slide 44 text

PaaS ͱ FaaS Λਖ਼͘͠࢖͍෼͚Δߟ͑ํ Hub Glue

Slide 45

Slide 45 text

PaaS = Hub Application database monitoring message queue mail logging CI/CD

Slide 46

Slide 46 text

App database monitoring message queue mail logging CI/CD ΞϓϦέʔγϣϯ͕த৺(Hub)ͱͳΔɻ ΍Γ͍ͨ͜ͱ͸ΞϓϦʹॻ͘ PaaS͸ӡ༻ͷݞ୅ΘΓͱ ศརͳػೳΛఏڙ͢Δ

Slide 47

Slide 47 text

FaaS = Glue database mail CI/CD Object Storage API Gateway Function messaging Function Function

Slide 48

Slide 48 text

{} {} {} FaaS͸ɺ֤Ϋϥ΢υαʔϏεΛܨ͛ΔͨΊͷކ (Glue) ΍Γ͍ͨ͜ͱ͸ɺ֤αʔϏεΛܨ࣮͛ͯݱ͢Δ ֤FunctionͰ͸ෳࡶͳ͜ͱ͸ͤͣ͞ɺ γϯϓϧͳॲཧʹཹΊΔ

Slide 49

Slide 49 text

ʮ΋͋͠ͳͨͷPaaS͕ɺ0.5ඵ͚ͩಈ͘ΠϯελϯεΛ ɹɹ20msͰىಈͰ͖ΔͳΒɺͦΕ͸αʔόʔϨεͱݺͿʯ

Slide 50

Slide 50 text

• ΞϓϦέʔγϣϯͷ։ൃͱӡ༻Λศརʹ͢Δ΋ͷ͕PaaS • ͜Ε·Ͱͷߟ͑ํΛɺΫϥ΢υͰΑΓศརʹ • ͞·͟·ͳΫϥ΢υαʔϏεΛ׆༻͠ɺͪΐͬͱͨ͠ίʔυͰ
 ͋Ε͜Ε࣮ݱ͢Δͷ͕FaaS • Ϋϥ΢υ͋Γ͖ͷαʔϏεʢΨνͰϩοΫΠϯ͞ΕΔؾ͕ແ͍ͱ࢖͑ͳ͍ΑͶŋŋŋ • ͜Ε͚ͩΫϥ΢υαʔϏε͕ॆ࣮͍ͯ͠ΔΜ͔ͩΒ׆༻͠Α͏ʂ ͦ΋ͦ΋ͷߟ͑ํ͕ҧ͏ͷͰɺ৔߹ʹԠͯ͡࢖͍෼͚Α͏

Slide 51

Slide 51 text

ͪͳΈʹPaaSษڧձͷϞοτʔ

Slide 52

Slide 52 text

PaaSʹؔΘΔ͜ͱͳΒԿͰ΋OK ͭ·ΓServerlessωλ΋OK

Slide 53

Slide 53 text

࣍ճҎ߱ɺServerlessωλ΋େ׻ܴ

Slide 54

Slide 54 text

Questions?