Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
次世代PaaSとServerless 未来はどこにある?
Search
Kazuto Kusama
May 11, 2017
Technology
3
1.6k
次世代PaaSとServerless 未来はどこにある?
2016年10月の第34回PaaS勉強会で発表した資料です
Kazuto Kusama
May 11, 2017
Tweet
Share
More Decks by Kazuto Kusama
See All by Kazuto Kusama
トラシューアニマルになろう ~開発者だからこそできる、安定したサービス作りの秘訣~
jacopen
3
2.5k
あなたの興味は信頼性?それとも生産性? SREとしてのキャリアに悩むみなさまに伝えたい選択肢
jacopen
6
5.4k
PaaSの歴史と、 アプリケーションプラットフォームのこれから
jacopen
7
2.1k
AI x インシデント管理で拡げるサービスオーナーシップ
jacopen
0
160
間違いだらけのポストモーテム - ホントに役立つレビューはこうだ!
jacopen
7
1.5k
2024/10 PagerDuty機能アップデート
jacopen
1
59
ゲームから学ぶ、いちばん速いインシデント対応
jacopen
1
110
PEK2024 Recap
jacopen
2
180
クラウドネイティブの本質から考える、生産性と信頼性の両立
jacopen
3
940
Other Decks in Technology
See All in Technology
LINEギフトにおけるバックエンド開発
lycorptech_jp
PRO
0
240
RemoveだらけのPHPUnit 12に備えよう
cocoeyes02
0
260
Windows の新しい管理者保護モード
murachiakira
0
200
Active Directory攻防
cryptopeg
PRO
8
5.3k
AWSではじめる Web APIテスト実践ガイド / A practical guide to testing Web APIs on AWS
yokawasa
7
620
Visualize, Visualize, Visualize and rclone
tomoaki0705
9
81k
システム・ML活用を広げるdbtのデータモデリング / Expanding System & ML Use with dbt Modeling
i125
1
320
プロダクトエンジニア 360°フィードバックを実施した話
hacomono
PRO
0
140
EDRの検知の仕組みと検知回避について
chayakonanaika
11
4.6k
ESXi で仮想化した ARM 環境で LLM を動作させてみるぞ
unnowataru
0
160
データエンジニアリング領域におけるDuckDBのユースケース
chanyou0311
8
2.1k
CDKでカスタムランタイムを作成して、Lambdaをnode.js23+TypeScriptで動かしてみた
smt7174
2
110
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
Building a Scalable Design System with Sketch
lauravandoore
461
33k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.5k
Designing for Performance
lara
604
68k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
133
33k
Visualization
eitanlees
146
15k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Documentation Writing (for coders)
carmenintech
67
4.6k
Transcript
࣍ੈPaaSͱ Serverless ະདྷͲ͜ʹ͋Δʁ
Kazuto Kusama @jacopen
͜ͷൃදݸਓͷݟղͰ͋Γɺ ॴଐ͢Δ৫ͷެࣜݟղͰ͋Γ·ͤΜ ҙ
࠷ۙPaaSͬͯͲ͏Ͱ͔͢ʁ Γ্͕ͬͯΔʁ
ࣄ࣮: “PaaS”ͱ͍͏͚ͩͰ͓ۚΛग़ͯ͠ ͑Δ࣌ͱͬ͘ʹऴΘͬͨ 㱺όζϫʔυͱͯ͠Φϫίϯ
ϋΠϓɾαΠΫϧ https://www.gartner.co.jp/research/methodologies/research_hype.php
ϋΠϓɾαΠΫϧ https://www.gartner.co.jp/research/methodologies/research_hype.php ͓͔ͶͨͬΓ ϘʔφελΠϜ PaaSଟ͜ͷΜ
ʮPaaSͰṶ͔͍ͬͯΔձࣾʯ ͱݴΘΕͯࢥ͍ු͔Δձ͕ࣾগͳ͍ ͳͥʁ 㱺Ϗδωεͱͯ͠ͷকདྷੑ͕ෆ͔֬
͔֬Β͍͠ະདྷ
͜Ε͔ΒPaaSͱ͍͏ݴ༿ ΘΕͳ͘ͳ͍ͬͯ͘ ͔֬Β͍͠ະདྷ
“Cloud Native Platform”
“Container Platform”
“Container as a Service”
ԿނʮPaaS͔ʯ • PaaSͱ͍͏ݴ༿ͷ͔ΓͮΒ͞ • ΑΓαʔϏεͷੑ֨Λද͢ݴ༿ʹ • PaaSͰେޭͨ͠ྫ͕͋·Γͳ͍ͷͰɺϏδωεతʹ ྑ͍ҹ͕ͳ͍
ͦͦԿނޭ͠ͳ͔ͬͨͷ͔Ծઆ • ϩοΫΠϯ • ϕϯμʔʮϩοΫΠϯͯ͠ͳ͍ʯͱ͍͏ɻ ʮΦʔϓϯͳٕज़͕ͦͷ··͑ΔΑʂʯɹŋŋŋͦ͏͍͏͡Όͳ͍ • ҙࣝվֵͷ͠͞ • ϓϩηεεςʔτϑϧʹʂ
ઃఆڥมʹʂϩάඪ४ग़ྗʹʂ ͜ΕͰΫϥυωΠςΟϒΞϓϦέʔγϣϯͩʂɹŋŋŋ͑ʔΊΜͲ͍͘͞ • യવͱͨ͠ෆ҆
͜Ε͔ΒͷPaaS Ͳ͏ͳΔͷ͔
ୈ1ੈͷPaaS • 2007ʙ2010͝Ζ·Ͱ • ϓϩϓϥΠΤλϦ • ܾΊଧͪͷݴޠɾϑϨʔϜϫʔΫɾDB
ୈ2ੈͷPaaS • 2011ʙ • ϓϩϓϥΠΤλϦ / Φʔϓϯ • ༷ʑͳݴޠɾϑϨʔϜϫʔΫɾDB •
ԾԽٕज़Λϑϧ׆༻
ୈ3ੈͷPaaS • 2014ʙ • ίϯςφωΠςΟϒ • ͲͷڥͰɺಉ͡ͷ͕͑Δ • ΑΓૣ͘ɺΑΓॊೈʹɺΑΓΦʔϓϯʹ
ୈ4ੈͷPaaS
• ߏ͍ͨ͠ΠϯϑϥΛίʔυͰදݱɻIaaSͱಉͷॊೈੑΛɺ ΑΓߴʹɺΑΓ؆୯ʹɺΑΓޮΑ࣮͘ݱग़དྷΔɻ • ͜Ε·ͰͷPaaS ʮΠϯϑϥҙࣝ͠ͳ͍͍ͯ͘ɻ ɹͱʹ͔͘Ξοϓϩʔυͯ͘͠Εɺ͋ͱԿͱ͔͢Δʯ 㱺HerokuͳͲͰ࣮ݱͨ͠ੈքɻ͘͢͝؆୯ʹ͑Δɻ Infrastructure as
CodeΛ ࣮ݱ͢Δ ϓϥοτϑΥʔϜ
• ͲͷΞϓϦΛԿݸ্ཱͪ͛ͯɺ Ͳ͏͍͏NWߏʹͯ͠ ʓʓΛϚϯτͯ͠ XXXͱ͍͏ίϯϑΟάΛೖΕͯŋŋŋ ͱ͍ͬͨߏใΛίʔυͰཧ σϓϩΠ͢Δͱج൫ଆ͕͏·͍͜ͱ ࣮ݱͯ͘͠ΕΔɻ ίϯςφٕज़SDNͳͲͷ߹Θٕͤ
Infrastructure as CodeΛ ࣮ݱ͢Δ ϓϥοτϑΥʔϜ • Google͕BorgͰ࣮ূࡁ • BorgΛࢀߟʹ࡞ΒΕ͍ͯΔKubernetesɺ KubernetesϕʔεͷOpenShiftɺঃʑʹ͜ͷੈքΛ
࣮ݱ͍ͯ͠Δ • DockerɺόʔδϣϯΛ͏͝ͱʹ࣮ͭͭ͋͠Δ
• ෳࡶʹͳͬͯ͋ΔҙຯୀԽͯ͠ͳ͍ʁ • ෳࡶͳ͜ͱ͕ग़དྷΔϓϥοτϑΥʔϜΛϥοϓͯ͠ ؆୯ʹ͏ͷՄೳ • ؆୯ͳ͜ͱ͔͠ग़དྷͳ͍ϓϥοτϑΥʔϜͰෳࡶͳ͜ͱΛ ͢Δͷࠔ Infrastructure as
CodeΛ ࣮ݱ͢Δ ϓϥοτϑΥʔϜ
• Herokuͷ12 Factor appྑ͘ग़དྷͨߟ͑ • ग़དྷΔݶΓStatelessʹ࡞Δ͜ͱͰɺεέʔϥϒϧͰϝϯς ͍͢͠ɺΫϥυωΠςΟϒͳΞϓϦέʔγϣϯ͕࡞ΕΔ • ͡Ό͋DBMQͳͲͷStatelessʹग़དྷͳ͍ͷʁ 㱺
ʮΞλον͞ΕͨϦιʔεͱͯ͠ѻ͏ʯ 㱺ӡ༻୭͕ͬͯྑ͍Μ͚ͩͲɺϦιʔεͱͯͯ͠͠ ߟ͑Ε͍ΖΜͳέʔεʹରԠͰ͖ΔΑ Stateful applicationͷαϙʔτ
Container 2.0 • Mesosphere͕ݴ͍࢝Ίͨ • Stateful application͚ͷ εέδϡʔϥΛDC/OSͰ αϙʔτɻ྆ํΛಉ͡ج൫্Ͱ ࣮ݱͰ͖Δ
None
Stateful Sets (Pet Sets) • KubernetesͰ࣮͕ਐΜͰ͍Δ • k8s্ͰɺैདྷͷΞϓϦέʔγϣϯΛ αϙʔτ͢ΔΈ •
ӬଓԽϘϦϡʔϜ ݻఆ͞ΕͨHostname ໊લղܾ
Stateful Sets (Pet Sets) • εέʔϥϒϧͳΞʔΩςΫνϟΛ࡞Δ߹ɺϦιʔεΛϖοτ Ͱͳ͘ɺՈச(Cattle)ͷΑ͏ʹѻ͏ͷ͕͍͍ɻ • ͜Ε·ͰͷΫϥυɺ͜ͷCattleΛڧ੍͖ͯͨ͠અ͕͋Δ •
ͰશͯͷΞϓϦέʔγϣϯ͕ઈεέʔϧ͢Δඞཁ͋ΔΜ͚ͩͬʁ
Serverless ͓ۚग़ͯ͑͠Δ ྲྀߦΓͷϫʔυ
None
PaaS • ServerؚΊͨɺApplicationͷӡ༻ΛݞΘΓ͢Δ Serverless • ServerΛͦͦҙࣝ͠ͳ͍
Serverless͕ͦ͜ະདྷʂ
ຊʹͦ͏ͳͷ͔ʁ
ઌʹݴ༿ͷཧ FaaS (Functions as a Service) γϯϓϧͳίʔυΛFaaSʹॻ͍͓ͯ͘ͱɺࢦఆͨ͠ΠϕϯτʹԠͯ͡ ίʔυ͕࣮ߦ͞ΕΔαʔϏεɻ AWS LambdaAzure
Functionsɺ OpenWhiskͳͲ BaaS (Backend as a Service)ɺFunctional SaaS ೝূϓογϡ৴ͳͲɺϞόΠϧΞϓϦSPAͰඞཁͳػೳΛαʔ Ϗεͱͯ͠ఏڙ͢ΔɻFirebaseɺαʔϏεऴྃͨ͠ParseͳͲ
ઌʹݴ༿ͷཧ FaaS (Functions as a Service) γϯϓϧͳίʔυΛFaaSʹॻ͍͓ͯ͘ͱɺࢦఆͨ͠ΠϕϯτʹԠͯ͡ ίʔυ͕࣮ߦ͞ΕΔαʔϏεɻ AWS LambdaAzure
Functionsɺ OpenWhiskͳͲ BaaS (Backend as a Service)ɺFunctional SaaS ೝূϓογϡ৴ͳͲɺϞόΠϧΞϓϦSPAͰඞཁͳػೳΛαʔ Ϗεͱͯ͠ఏڙ͢ΔɻFirebaseɺαʔϏεऴྃͨ͠ParseͳͲ 㱺 BaaS+PaaSͷΈ߹ΘͤҎલΑΓҰൠతʹߦΘΕ͍ͯΔ ͷͰɺ͔͜͜ΒઌFaaSʹ͍ͭͯݴٴ͠·͢
API Gateway ObjectStorage etc… Functions Πϕϯτ Πϕϯτ Πϕϯτ ࣮ߦ output
etc… ΠϕϯτυϦϒϯ Πϕϯτड͚͚ͨͱ͖ͷ ॲཧ༰Λॻ͍͓ͯ͘ FaaSͷಈ͖
API Gateway ObjectStorage etc… Application output etc… ಉ͜͡ͱΛPaaSͰΖ͏ͱ͢Δͱɾɾɾ HTTPͳΓԿͳΓͰ ΠϕϯτΛड͚͚Δ
ޱΛͭ͘Δ αʔόʔϓϩηε(Πϯελϯε) Λ্ཱͪ͛ͯػͤ͞Δ Πϕϯτड͚͚ͨͱ͖ͷ ॲཧ༰Λॻ͍͓ͯ͘
API Gateway ObjectStorage etc… Application output etc… ͜͏͍͏ͱ͖Ͳ͏͢Δʁ શવΠϕϯτ͕དྷͳ͍ͱ͖Πϯελϯε ͣͬͱ্ཱ͓͔ͪ͛ͯͳ͚Ε͍͚ͳ͍
API Gateway ObjectStorage etc… Application output etc… ͜͏͍͏ͱ͖Ͳ͏͢Δʁ ಥવΠϕϯτ͕ٸ૿ͨ͠ͱ͖ʹ ΠϯελϯεΛεέʔϧͤ͞Δૢ࡞͕ඞཁ
ɾ ɾ ɾ
PaaSʹग़དྷͳͯ͘FaaSʹग़དྷΔ͜ͱ • PaaSͰɺΠϕϯτ͕ى͖ͳ͍࣌Ͱৗʹϓϩηε্͕͕Δɻ· ͨɺಥવΠϕϯτ͕ٸ૿ͨ͠ͱ͖ɺϓϩηεΛ૿͢ͱ͍͏ૢ ࡞ΛࣗಈͳΓखಈͳΓͰߦΘͳ͍͚ͯ͘ͳ͍ɻ (ͦΕͰɺIaaSΦϯϓϨϛεΑΓ͍ͩͿָ) • FaaSࡉ͔ͳॲཧ୯ҐͰFunction͕࡞ΒΕɺΠϕϯτͷʹϓϩ ηε্͕͕Γɺॲཧ͕ऴΘΔͱϓϩηεফ͑Δɻ Πϕϯτ͕ى͖ͳ͍ͱϦιʔεফඅ͠ͳ͍ɻେྔͷΠϕϯτൃੜ
࣌ͦΕʹԠͯ͡ϓϩηε্͕͕Γɺফ͍͑ͯ͘
FaaS vs PaaS • FaaSPaaSʹ͍ͬͯͨʮӡ༻ʯ͕ແ͘ͳ͍ͬͯΔ • ΑΓεέʔϥϒϧɺ͔ͭޮͷྑ͍ΈΛ࡞ΕΔ • ػೳ୯ҐͰ͚͟ΔΛಘͳ͍ 㱺
εςʔτΛ࣋ͨͤΔ͜ͱ͕͍͠ 㱺 ݁Ռͱͯ͠εέʔϥϒϧʹͳΔ
FaaS is better than PaaS? • ͦΜͳ͜ͱͳ͍ • PaaSͷΑ͏ͳෳࡶͳॲཧΛ1FunctionͰߦΘͤΔ͜ͱग़དྷͳ͍ •
WebαʔόʔͷΑ͏ͳίϯςϯπΛ৴͢ΔΑ͏ͳ ΈͰͳ͍ • PaaSͰಈ͔͢ΞϓϦɺϩʔΧϧͰIaaSͰΦϯϓϨͰ ಈ͘Α͏ʹ࡞ΕΔɻFaaSFaaS༻ͷΓʹͤ͟ΔΛಘͳ͍
PaaS ͱ FaaS Λਖ਼͍͚͘͠Δߟ͑ํ Hub Glue
PaaS = Hub Application database monitoring message queue mail logging
CI/CD
App database monitoring message queue mail logging CI/CD ΞϓϦέʔγϣϯ͕த৺(Hub)ͱͳΔɻ Γ͍ͨ͜ͱΞϓϦʹॻ͘
PaaSӡ༻ͷݞΘΓͱ ศརͳػೳΛఏڙ͢Δ
FaaS = Glue database mail CI/CD Object Storage API Gateway
Function messaging Function Function
{} {} {} FaaSɺ֤ΫϥυαʔϏεΛܨ͛ΔͨΊͷކ (Glue) Γ͍ͨ͜ͱɺ֤αʔϏεΛܨ࣮͛ͯݱ͢Δ ֤FunctionͰෳࡶͳ͜ͱͤͣ͞ɺ γϯϓϧͳॲཧʹཹΊΔ
ʮ͋͠ͳͨͷPaaS͕ɺ0.5ඵ͚ͩಈ͘ΠϯελϯεΛ ɹɹ20msͰىಈͰ͖ΔͳΒɺͦΕαʔόʔϨεͱݺͿʯ
• ΞϓϦέʔγϣϯͷ։ൃͱӡ༻Λศརʹ͢Δͷ͕PaaS • ͜Ε·Ͱͷߟ͑ํΛɺΫϥυͰΑΓศརʹ • ͞·͟·ͳΫϥυαʔϏεΛ׆༻͠ɺͪΐͬͱͨ͠ίʔυͰ ͋Ε͜Ε࣮ݱ͢Δͷ͕FaaS • Ϋϥυ͋Γ͖ͷαʔϏεʢΨνͰϩοΫΠϯ͞ΕΔؾ͕ແ͍ͱ͑ͳ͍ΑͶŋŋŋ •
͜Ε͚ͩΫϥυαʔϏε͕ॆ࣮͍ͯ͠ΔΜ͔ͩΒ׆༻͠Α͏ʂ ͦͦͷߟ͑ํ͕ҧ͏ͷͰɺ߹ʹԠ͍͚ͯ͡Α͏
ͪͳΈʹPaaSษڧձͷϞοτʔ
PaaSʹؔΘΔ͜ͱͳΒԿͰOK ͭ·ΓServerlessωλOK
࣍ճҎ߱ɺServerlessωλେܴ
Questions?