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
What is Serverless. Why is Serverless.
Search
堀家隆宏
January 24, 2019
Programming
130
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
What is Serverless. Why is Serverless.
堀家隆宏
January 24, 2019
More Decks by 堀家隆宏
See All by 堀家隆宏
オープンソースコミュニティで加速するサーバーレスの未来/serverless will be
horike37
4
780
auth0-meetup.pdf
horike37
1
290
What’s happening with Serverless Framework, and it lives with AWS SAM.
horike37
0
150
aws-with-functional-saas
horike37
2
220
serverless-with-oss
horike37
0
180
slsconftokyo
horike37
0
5.9k
slsconfworkshop
horike37
3
3k
Test Driven Development For Lambda
horike37
2
410
serverless-kyoto
horike37
1
190
Other Decks in Programming
See All in Programming
React本体のコードリーディング
high_g_engineer
1
160
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
390
Japan Community Day at Kubecon + CloudNativeCon Japan 2026: Learning Container Privilege Control by Building My Own Low-Level Container Runtime
ternbusty
1
170
Flow は今どうなっているか
mizdra
PRO
0
750
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
150
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
430
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
710
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
270
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
110
Introducing Stack Pull Request in GitHub
kkamegawa
0
110
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
450
MySQLとPostgreSQLって何が違うの?
akagami
0
140
Featured
See All Featured
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
How GitHub (no longer) Works
holman
316
150k
Optimising Largest Contentful Paint
csswizardry
37
3.9k
Fireside Chat
paigeccino
42
4k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.5k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.5k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Transcript
What is Serverless Why is Serverless
ࣗݾհ ງՈོ • Serverless Operations LLC • Serverless Framework Core
mainainer • Serverless Step Functions, Serverless Atom Dashbord ։ൃऀ • Serverless Champion powerd by Serverless.inc
ServerlessͱԿ͔ ͦͷຊ࣭ʹ͍ͭͯ ղઆ͍͖ͯ͠·͢
• ٛͳҙຯͰ͍͏ͱαʔόʔίϯςφͷཧ͕ෆཁͳαʔϏεΛར༻ͨ͠ ΓɺͦΕΒΛ׆༻ͯ͠ΞϓϦέʔγϣϯΛͭͬͨ͘Γ͢Δߟ͑ํͱੈք؍ • ͜͜Ͱ͍͏ServerlessͱɺAWS LambdaͷΑ͏ͳFunction as a Serviceͱ ϚωʔδυαʔϏεͰߏ͞ΕͨγεςϜΞϓϦέʔγϣϯΛҙຯ͢Δ
ServerlessͱԿ͔ʁ 2014ʹAWS Lambda͕ొ͠ɺΫϥυͷΞʔΩςΫςΟϯάͷ෯͕ େ͖͕ͬͨ͘ɻ·ͨɺAPI GatewayKinesis, AWS IoTͳͲͷొʹΑΓ Ϋϥυͷ֎෦ͱͷσʔλ࿈ܞ͕༰қʹͳͬͨ
• αʔόίϯςφͳͲͷΠϯϑϥετϥΫνϟΛཧ͢Δ࡞ۀ͔Β։์͞Ε Δ • ίετͷ࠷దԽɻଟ͘ͷ߹҆͘ͳΔ • Ϋϥυͷ੍Լʹ͓͍ͯແݶͷεέʔϥϏϦςΟΛੜΉɻجຊతʹࣄલ ͷΩϟύγςΟ༧ෆཁ Serverlessͷ͍ΘΏΔϝϦοτ Ϋϥυʹ͜ΕΒΛΞτιʔε͢Δ͜ͱͰӡ༻ͰָΛ͢Δ
Serverless Overview
• AWS Lambda, Azure Functions, Google Cloud Functionsͱ͍ͬͨΞϓϦέʔ γϣϯίʔυΛ࣮ߦͯ͘͠ΕΔαʔϏε •
ঢ়ଶͷมԽʹΑΓΠϕϯτ͕ൃੜ͢Δ͜ͱͰίʔυ͕࣮ߦ͞ΕΔ • ಉ࣮࣌ߦͷ੍Լʹ͓͍ͯແݶʹεέʔϦϯά͢Δ(εέʔϦϯάͷࣄલ ༧ଌ͕ෆཁ) • ՝͕ۚίʔυͷ࣮ߦ࣌ؒ୯Ґ(ଟ͘ͷέʔεͰ҆͘ͳΔ) • ϛυϧΣΞͷΞοϓσʔτෆཁ(αʔόཧ͔Βͷ։์) Function as a Service
• DynamoDB, API gateway, Auth0, Stripeͱ͍ͬͨػೳͷΈΛఏڙͯ͘͠ΕΔ αʔϏε • ServerlessͷੈքͰ͜ΕΒΛFaaSΛؔͱݺͿ͜ͱͱରൺͯ͠ϛυϧΣ ΞͱݺΜͰΔ
Functional SaaS / BaaS
FaaSʹΑΔίʔυͷ࣮ߦڥͱ Functional SaaSʹΑΔػೳͷఏڙ γϯϓϧʹߟ͑Δͱ͜ͷ2ͭͷཁૉͰ ServerlessΞʔΩςΫνϟΓཱͭ
FaaSͷಛੑ
ΠϕϯτυϦϒϯͰ͋Γ ඇৗறܕͰ͋Δ͜ͱΛ೦಄ʹஔ͍ͨ ϓϩάϥϛϯάϞσϧͱͳΔ
• FaaSͷલஈʹ͋ΔαʔϏε্Ͱͷঢ়ଶͷมԽʹΑΓίʔυ͕࣮ߦ͞ΕΔ • PublisherͱSubscriberͱ͍͏ؔੑ • αʔόʔ্ͷมߋΛϙʔϦϯάͯ͠ݕ͢Δͷͱਅٯͷߟ͑ ΠϕϯτυϦϒϯͱ putObject Event trigger
• Πϕϯτ͕ൃੜͯ͠ίʔυ͕࣮ߦ͞ΕΔͱ͖ͷΈϓϩηε͕ଘࡏ͢Δ • ಥવϓϩηε͕མͪΔͱ͍͏͜ͱͳ͍ͨΊɺͦͷҙຯͰݎकͳγεςϜ ʹͰ͖Δ ඇৗறܕͱ
• Πϕϯτ͕ൃੜͨ࣌͠ͷΈϓϩηεΛىಈͤ͞Εྑ͍ͷͰৗʹϓϩηεΛ ্ཱ͓ͪ͛ͯ͘ඞཁ͕ͳ͍ɻΠϕϯτυϦϒϯ͔ͩΒͦ͜ඇৗறͳϓϩηε ͷΈ͕Γཱͭ • ϓϩηε͕ৗʹଘࡏ͍ͯ͠ΔΘ͚Ͱͳ͍ͨΊɺFunctionͰσʔλͷอ࣋ Λલఏͱ࣮ͨ͠Ͱ͖ͳ͍ɻͭ·ΓࣗવͱεςʔτϨεͳঢ়ଶͱͳΔɻ݁ ՌɺεςʔτΛ࣋ͨͳ͍͜ͱͰεέʔϥϏϦςΟΛ࣮ݱͰ͖Δ • Πϕϯτ͕ൃੜͨ࣌͠ͷΈϓϩηεΛىಈͤ͞Εྑ͍ͷͰɺ࣮ߦ࣌ؒʹͷ
Έ՝ۚ͢Εྑ͍ͱ͍͏࠷దԽ͕Γཱͭ ΠϕϯτυϦϒϯͱඇৗற͕ ͨΒ͢ϝϦοτ ͜ΕΒͷ੍݅ʹΑΓFaaSͷϝϦοτ͕ ࠷େݶ׆͔ͤΔΈʹͳ͍ͬͯΔ
Functional SaaSͷಛੑ
ެࣜͷυΩϡϝϯτΛಡΜͰਖ਼͘͠ ཧղͷ্ͰɺదࡐదॴͰར༻͠ɺͦ ͷ੍݅ԼͰ࠷େݶͷੑೳΛҾ͖ ग़ͯ͠Δ͜ͱ͕େࣄ
Kinesis Stream • େྔͷσʔλετϦʔϜΛϦΞϧλΠϜͰऩूͯ͠ɺॲཧΛͤ͞ΔͨΊͷα ʔϏε • ͨ͘͞ΜͷIoTσόΠεͷόοΫΤϯυͷड͚ޱͱͯ͠ར༻͞ΕΔέʔε͕ଟ ͍ • ड͚औͬͨσʔλBatch
sizeͷ୯ҐͰLambda͕ड͚औΓɺޙଓͷॲཧΛ࣮ ࢪ͢ΔɻKinesisͰγʔέϯεׂ͕ΓৼΒΕΔ͜ͱͰॱংอূ͋Δɻྻ ʹσʔλΛॲཧ͍ͤͨ࣌͞ʹKinesisΛڬΉ
DynamoDB • ϚωʔδυܕͷNo SQLσʔλϕʔεɻେྔͷϫʔΫϩʔυͷσʔλΛӬଓ Խͤ͞Δͷʹ͍͍ͯΔ • Partition KeyʹΑΔશҰகͱIndexʹΑΔ୳ࡧ͕Մೳ • ύϑΥʔϚϯεΛ࠷େʹͯ͠εϧʔϓοτίετΛ࠷খʹ͢ΔͨΊʹϓϥΫ
ςΟεʹԊͬͨςʔϒϧઃܭ͕ඞཁͱͳΔ ɹɾΩʔͷϋογϡͰPartition͕ࢄ -> ۉʹͳΔΑ͏ͳΩʔઃܭ ɹɾεΩʔϚϨεDBɻεΩʔϚ͝ͱʹςʔϒϧΛ͚Δͱ͍͏ൃ͕ ɹɹͦͦͳ͍ɻΩϟύγςΟཧͷͨΊʹςʔϒϧΞϓϦέʔγϣϯ ɹɹͰ1ͭʹ͢Δ͜ͱ͕ཧཧ
API Gateway • ։ൃऀ͕ API Λ࡞ɺɺอकɺࢹɺอޢͰ͖ΔαʔϏε • SPAͰWebΞϓϦέʔγϣϯΛ։ൃ͢Δ߹ͷόοΫΤϯυAPIͱͯ͠Θ ΕΔέʔε͕Α͋͘Δ •
جຊతʹ֎෦͔ΒͷೖྗͷೖΓޱͱͯ͠ɺ1ର1ͷؔੑͰσʔλΛѻ͏ɻ ೖྗνΣοΫͷલॲཧ͚ͩΛ࣮ࢪͯ͠ɺޙSNSDynamoDBʹܨ͙͜ͱ ͰޙଓͷॲཧΛ࣮ࢪͤ͞Δ
ΞʔΫςΫνϟͱͯ͠ͷಛੑ
ΠϕϯτυϦϒϯΞʔΩςΫνϟ Service Function Service Function Function Event Event ΠϕϯτυϦϒϯͳϓϩάϥϛϯάϞσϧͱͳΔ͜ͱʹΑΓ ࣗવͱΠϕϯτ͕चͭͳ͗ʹൖ͍ͯ͘͠ΞʔΩςΫνϟͱͳΔ
Service Service
AWSͷαʔϏεʹஔ͖͑Δͱ ͜Μͳײ͡ API Gateway Lambda SNS DynamoDB
ΠϕϯτυϦϒϯΞʔΩςΫνϟ Publisher Subscriber Event • جຊతʹPublisherͱSubscriberؒͰϝοηʔδΛૹड৴͢Δؔੑ • Publisher͕ࣗૹ৴͢ΔΠϕϯτͷ͜ͱ͔͠Βͳ͍ • Subscriber͕ࣗͲͷΠϕϯτΛड͚औΔ͔͔͠Βͳ͍
• ͜ΕʹΑΓγϯϓϧʹૄͷؔੑΛอͭ
ΠϕϯτυϦϒϯΞʔΩςΫνϟ Կ͕خ͍͠ͷ͔
ΠϕϯτͷSubscriberͱPublisherͷؔੑΛมߋ͢Δ͜ͱͰ γϯϓϧʹػೳՃมߋ͕࣮ݱͰ͖Δ Service Function Service Function Function Event Event ৽ػೳ
Կ͕خ͍͠ͷ͔ ৽ػೳ
Service Function Function Event Function Function Service Service Function Service
جຊతʹґଘؔૄͰ͋ΓͭͭҰํʹू͞ΕΔͨΊɺ σʔλͷྲྀΕͷݟ௨͕͠ඇৗʹྑ͘ͳΔ Կ͕خ͍͠ͷ͔
֤αʔϏεͷ੍݅ԼͰ࣮Λߦ ͏͜ͱͰࣗવͱϚΠΫϩαʔϏεΞ ʔΫςΫνϟͷϝϦοτΛڗडͰ͖ ΔΑ͏ʹͳΔ
·ͱΊ
·ͱΊ • ServerlessΞʔΩςΫνϟ୯७ʹFaaSͱFunctional SaaSͷΈ߹ΘͤͰ ͳΓ͍ͨͬͯΔ • FaaSͱFunctional SaaSͷ੍ࣄ߲Λਖ਼͘͠ཧղͯ͠దࡐదॴͰ͏ɻ੍ ੍ݶͰͳ͍ɻͦͷ੍ʹै͏͜ͱͰ࠷େݶͷੑೳΛൃشͰ͖Δͱ͍͏͜ ͱ
• ServerlessΞʔΩςΫνϟෳࡶͰͳ͍ɻΉ͠Ζมߋʹڧ͘σʔλͷྲྀΕ ͕͔Γ͘͢ͳΔɻϚΠΫϩαʔϏεͷϝϦοτΛਖ਼͘͠ڗडͰ͖Δ
Thank You