Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
サーバレスアーキテクチャはじめの一歩
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Koji Nakayama
April 22, 2017
Technology
1.6k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
サーバレスアーキテクチャはじめの一歩
https://jawsugosaka.doorkeeper.jp/events/59431
Koji Nakayama
April 22, 2017
More Decks by Koji Nakayama
See All by Koji Nakayama
Software Testing in AWS IoT with The Power of Python
knakayama
0
1.8k
The ~~Ten~~ Three Most Critical Security Risks in Serverless Architectures
knakayama
2
1.6k
サーバーレス x IoT 〜我々はどういった課題に直面してそれをどのように解決したのか〜
knakayama
0
1.5k
Bloxが切り開くECSの世界
knakayama
1
1.3k
AWS Serverless Application Modelのデプロイ戦略
knakayama
4
2.6k
github-classmethod-study-20170426
knakayama
1
4k
Other Decks in Technology
See All in Technology
Code for Security プロジェクト紹介 2026年10月
yu23ki14
0
110
僕のハーネスを紹介します
watany
3
660
USB PDを使ってスマホを労わりたい
raspython3
0
180
DBについての基礎説明(MySQL編) - コロプラ 2026年度 新卒研修
colopl
0
140
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
3
1.1k
AI コーディングと人間の認知スループット / CTO Night & Day 2026 Morning Session / AI Coding and Human Cognitive Throughput
prog893
5
1.3k
Running Kotlin + Quarkus with Lambda
nealle
1
4k
サブエージェントと Claude Mods で作る独自 Advisor ツールの話
kenichiodo
2
170
M5Stackで作る BLEマウス GPSログの世界
tomokusaba
PRO
0
440
専門領域のAIをどう評価するか
bengo4com
2
320
10年後、Engineering 行為を剥奪されるとして、わたしたちは、どう、何を創ればいいだろうか。 / If Engineering Is Taken Away in 10 Years, How and What Should We Create?
bitkey
PRO
1
210
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
1
490
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
529
40k
Mobile First: as difficult as doing things right
swwweet
225
10k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
450
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
300
Bash Introduction
62gerente
615
220k
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
740
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
570
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
600
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Transcript
ςЄϝϹφίЄκϓμώϰ ΅ͮΗ΄Ӟ䴿 JAWS-UGՂ᮷ ̿SERVERLESSᐦ ӗςЄϝϹφͽίϤϷΨ֢ͼΕΞ͜ӗ̀ 2017/04/22 Ӿઊ ଛလ 1
ᛔ૩奧Օ • Ӿઊ ଛလ • μ϶φϮϊϐϖ AWSԪ䮣᮱ ϊϷϲЄτϴ ЀίЄκϓμϕ •
AWSΨڥአͭ͵αЀϢ϶΄戔懯/䯤塈/π ЀςϸϓΰЀν • GitHub: knakayama • 奺䵉 • ηЀϤϹςЄϝ΄晁አ3ଙ • AWS 1ଙ 2
ίυδЀύ 1. Serverless͢扖氂Ρᙧว 2. Serverless;΅֜͡ 3. Serverless΄ڥᅩ 4. ServerlessΨඪ͞ΡϑЄϸ 5.
ᐒտ΅ኚ͚ͥ 6. Δ;Η 7. ݇ᘍϷЀμ 3
ဳᅩ • φ϶αϖ΅匍䦒ᅩ΄ఘ䁭Ψڹͭͼ͚Δͯ • Serverlessኴᵈ΄ίϐϤϔЄϕ΅͚΄ͽڥአͯΡ檭΅๋ෛ΄ ఘ䁭Ψ݇ᆙͯΡͩ; • AWSզक़΄扖(GCP;͡Azure;͡OpenWhisk;͡)΅Ꭳ憎͚͢ ΄ͽۆ䙄 4
1. Serverless͢扖氂Ρᙧว 5
τЀϤϸWeb DBίЄκϓμώϰ Ψᘍ͞ͼΕΡ 6
7
τЀϤϸ䯤౮ • ELBͽϝϐμεЀϖ΄EC2ϕ϶Ϣΰϐ μၞͯ • EC2ͽRDSίμψφ • RDSϔЄόכਂ 8
EC2Ψڥአͭ͵䁰ݳ΄抓氂 • ෭̸΄晁አ • 哶憙 • ϊϢϕγδί΄ίϐϤϔЄϕ • ᚈ୧䌏䖕 9
OSզӤ΄Ϲαϱ΅ڥአᘏ㯎ͽᓕቘ ͯΡᥝ͘͢Ρ 10
ͽͣΡΟΚΠ͵͚ͥ 11
Ͳ晁አ͢ᥝΡ΄͡ • ϳЄσ㭅㮔ΨͧΡ͵ΗςЄϠφΨ֢Ρ • ςЄϠφΨ֢Ρ͵ΗπЄϖΨ䨗ͥ • πЄϖΨ㵕ͯ͡͵ΗςЄϝ͢ᥝΡ • ςЄϝ͢ྋଉ㵕֢ͭ姆ͧΡ͵Η晁አ͢ᥝΡ 12
Θ;ςЄϠφ(πЄϖ) ᵞӾͭ͵͚ 13
ͩͩΔͽ΄Δ;Η • 晁አ΅ͽͣΡΟΚΠ͵͚ͥ • ΄ፓጱ΅ςЄϠφΨ֢ͼϳЄσ㭅㮔Ψ׀ͯΡͩ; • ͳ΄͵ΗςЄϠφ(πЄϖ)΄ΕᵞӾͭ͵͚ • Serverless͢ጭ䁰ͯΡᙧว΅͚ͩ͜͵Ԫఘ͘͢Ρ 14
2. Serverless;΅֜͡ 15
Serverless;΅֜͡ • Ӟᛱጱ΅Function as a Service(FaaS)ΨӾஞ;ͭ͵ίЄκϓμώϰ • AWSͽ΅Lambda • ͵Ͷ̵ͭLambdaͯΟֵΥ͚ίЄκϓμώϰΨͩ͜Ό䁰ݳΘ͘Ρ
(Lambdaless) • ͩ΄旽΅ۆ;䨀ซ • αϦЀϕϖϷϣЀ;͚͜ᇙ䖀͘͢Ρ • ֜Ο͡΄αϦЀϕΨॶ䱛;ͭͼϡόρ϶φαϐώጱݱ圵㳌ቘ͢䋚ᤈͫΡ 16
Lambda • πЄϖΨ䋚ᤈͽͣΡπЀϡϲЄϓΰЀνςЄϠφ • ςЄϝΚϤϺψφΨ樄咲ᘏ㯎ͽᓕቘͯΡᥝ͚͢ • Ϸμεφϕ/䋚ᤈ䦒樌䖕ͮ͵䕪ᰁ抓ᰂګ • ਞ͚ •
僻ාڥአ䩵Θ꧌䋚 • EC2΄䁰ݳ๋֗1䦒樌㶨֖ͽ抓ᰂ • 匍䦒ᅩͽلୗςϪЄϕͭͼ͚Ρ承΅Node.js/Python/Java/C# • ͵Ͷͭ㳨΄承Θ䋚ᤈݢᚆ 17
αϦЀϕϖϷϣЀҘ 18
S3 Event Notification • S3咲ኞͭ͵αϦЀϕ(Put/DeleteͿ) Ψॶ䱛ݱ圵㳌ቘΨ䋚ᤈͽͣΡ՛奲Ε 1. ᓕቘᘏ͢ίϐϤϺЄϖአϝξϐϕኮ ؟ΨPut 2.
S3 Event NotificationͽLambda᩸㵕 3. Lambdaͽኮ؟Ψےૡ̵ͭᤒᐏአϝξϐ ϕPut 4. ϳЄσ΅CloudFront奺ኧͽኮ؟Ψᤒᐏ 19
SNS Notification • SNSϕϡϐμ奺ኧͽLambda᩸㵕ݢᚆ 1. ͚ͭͣ㮔Ψ᩻晃ͭ͵΄ͽCloudWatch Alarm咲ᅉ 2. CloudWatch Alarm΄ίμτϴЀͽSNS
ϕϡϐμ᭗Ꭳ 3. ϕϡϐμΨςϣφμ϶αϣͭͼ͚Ρ LambdaΨ䋚ᤈ 4. Lambda͡ΟSlack᭗Ꭳ 20
Kinesis Firehose • Kinesis Firehose΄φϕϷЄϭॶ䱛ͽ Lambda᩸㵕ݢᚆ 1. ϤϺϔϲЄς͡ΟKinesis Firehoseφ ϕϷЄϭϔЄόಭف
2. φϕϷЄϭϔЄό͢ಭفͫΡ; Lambda᩸͢㵕ͫͼETL㳌ቘ䋚ෞ 3. ๋奰ጱےૡͫ͵ϔЄόΨS3Put 21
3. Serverless΄ڥᅩ 22
ضᑕ΄㾩ΨServerlessఽͮ ᗝͣ䟵͞ͼΕΡ 23
24
ServerlessίЄκϓμώϰ • CloudFrontͽϞφϦЄφϸЄϓΰЀν • Ϟφ䖕ͮͼS3͡API Gatewayϕ϶ Ϣΰϐμၞͯ • S3΄WebϨφϓΰЀνͽUIᤒᐏ •
API Gateway΄IntegrationͽLambda᩸㵕 • Lambda͡ΟDynamoDBput_item/ get_item • ϔЄόφϕί;ͭͼDynamoDB • Lambda on VPC + RDSͽΘOK 25
Serverless΄ڥᅩ • ϫϚЄυϖςЄϠφΨӾஞ;ͭ͵ίЄκϓμώϰ΄ͽ晁አᶎΨAWS͠Δ͡ͱͽ ͣΡ • ςЄϠφ(πЄϖ)΄樄咲ϷϊЄφΨᵞӾͽͣΡ • ᛔᆐ;听奾ݳ(ϫαμϺςЄϠφ)ίЄκϓμώϰΡ • 1ͺ΄Lambdaͽقͼ΄㳌ቘΨ䋚ෞͯΡ΄΅匍䋚ጱͮΙ͚΄ͽ̵ᛔᆐ;晒ڔᔉ
ଶͽړ櫝ͭͼ͚ͥ • ӞᛱጱEC2ΨӾஞ;ͭ͵ίЄκϓμώϰΞΠΘπφϕΨಪ͞ΟΡ • Lambda͢ϷμεφϕϦЄφ΄抓ᰂ֛ᔮ΄͢य़͚ͣ 26
4. ServerlessΨඪ͞ΡϑЄϸ 27
ServerlessίЄκϓμώϰ΄抓氂 • LambdaΨ㵕֢ͫͱΡ΄΅क़;ᶎׯ͚ͥͫ • ϫϚυϮЀϕπЀϊЄϸͽፗളπЄϖ䨗ͥ • ϺЄθϸͽπЄϖ䨗ͥ → ZipࢴΗΡ →
ίϐϤϺЄϖͯΡ • LambdaӞ㮆Ͷͧͽਠ奾ͯΡΞ͜䯤౮΅ΑΒ͚ • 愢හ΄AWSϷϊЄφΨڥአͯΡ΄͢୮͵Πڹ • ϓφϕΨͭ͵͚ • ϳϘϐϕϓφϕ • ϺЄθϸ厏हͽ΄ϓφϕ • ͩ΄旽ΨӤಋͥΚͼͥΡ՛奲Ε͢Α͚ͭ 28
ϢϹЄϭϼЄμ 29
ϢϹЄϭϼЄμ • ϔϤϺαϮЀϕϞϐξЄυ֢౮ϤϺψφ΄墋ᔰ۸ • ServerlessίЄκϓμώϰق֛΄πЄϖ۸ • CloudFormation • Terraform •
πЄϖ۸ΞΡڥᅩ • ٚ匍 • Git/GitHub/PR洑㵕樄咲 • CI/CDΨڥአͭ͵ϔϤϺαϞαϤ϶αЀ۸ 30
դᤒጱϢϹЄϭϼЄμ Serverless Framework AWS Serverless Application Model(AWS SAM) Apex 䋚ᤰ
Node.js ᎣΟΩ(Java?) Go ϫϸώμ϶γϖ Yes No No OSS Yes No Yes AWSϷϊЄφ΄֢౮ොဩ CloudFormation(Ӟ᮱ᶋ䌏䖕) CloudFormation Terraform CLI΄ํ僻 Yes(sls) No(AWS CLI?) Yes(apex) ͳ΄՜ Ϥ϶ναЀΞΡ䝭䔴 ϺЄθϸ䋚ᤈ΄ςϪЄϕ ग़䱛ᚆ ڥአᘏग़͚Ҙ AWS挘愚 Swagger & ChangeSetςϪЄϕ 㷗ੂ͜;ϢϹЄϭϼЄμ ͽ΅ͥϯϔϸ HookςϪЄϕ Go承΄ςϪЄϕܹ͚Ҙ Dry-runςϪЄϕ τЀϤϸ 31
ϓφϕϑЄϸ 32
ϳϘϐϕϓφϕ • Lambda΅क़᮱͡ΟჁͫ͵ϔЄόΨ㳌ቘͯΡ樛හ;͞Ρͩ;ΘͽͣΡ • AWS΄䁰ݳLambdaჁͫΡϔЄό΅㶨ΡJSON • ෬ਂϓφϕϯυϲЄϸΨֵ͵ϳϘϐϕϓφϕ͢ݢᚆ • ᇙਧ΄JSONΨჁͯ →
奾ຎ͢๗இͭ͵Θ΄͡嘦扯 • Node.js΄chai;͡ΞֵͥΥͼΡΓ͚ • http://qiita.com/horike37/items/15bf675f973d30bb1f5c • PythonͶ͵Οpytest • https://librabuch.jp/blog/2016/07/aws-lambda-environment/ 33
ϺЄθϸ厏हͽ΄ϓφϕ • ϓφϕΨͯΡ΄AWS厏हΨ͚ͷ͚ͷአͯΡ΄΅ᶎׯ • ϺЄθϸͽAWS;ݶᒵ΄䱛ᚆΨͯΡΘ΄Κ̵ϯϐμᔮ΄ϑЄϸΨڥአͯΡ ϑЄϸ ༷ᥝ Serverless Framework lambda-local
Lambda΄فڊێΨϺЄθϸͽٚ匍ݢᚆ DynamoDB Local DynamoDB;ݶᒵ΄䱛ᚆΨϺЄθϸͽٚ匍ݢᚆ AWS挘愚 mhart/kinesalite Kinesis΄فڊێΨϺЄθϸͽٚ匍ݢᚆ spulec/moto AWSςЄϠφ΄فڊێΨϺЄθϸͽٚ匍ݢᚆ atlassian/localstack 愢හ΄ϺЄθϸ䋚ᤈᔮςЄϠφΨΔ;Η͵ϢϸφόϐμϑЄϸ 34
5. ᐒտ΅ኚ͚ͥ 35
ᐒտ΅ኚ͚ͥ • Lambda΅ͳΠګ夹͘͢Ρ • ๋य़䋚ᤈ䦒樌5ړ • ๋य़φϕϹЄυ512MB(/tmp) • ෬ਂ΄ದ悬;ϫϐώ͚ͭ䁰ݳΘ͘Ρ •
Ruby on Rails;͡ • قͼ΄EC2Ψᗝͣ䟵͞ΡΘ΄ͽ΅͚ • 䁰ݳΞͼπЀϓϗ(ECS)ςЄϠφΘ䭥懵ͯΡ • 晒晒ಅͽڥአͯΡͩ; 36
Serverless͢ϜϫΠΚ͚ͯϳЄφξЄφ • ϷίϸόαϭϢήαϸ㳌ቘ • S3΄Event NotificationͽLambda᩸㵕 → ኮ؟㳌ቘ • ϷίϸόαϭφϕϷЄϭ㳌ቘ
• Kinesis → LambdaͽETL → S3ΚDynamoDB • APIϝϐμεЀϖ • API Gateway;΄Integration → Lambda → ϔЄόφϕί • SNSϕϡϐμ;΄昧൭ • AWSςЄϠφ樌΄Ϝϣ;ΡSNSϕϡϐμ → Lambda᩸㵕 → ձ΄㳌ቘ https://www.slideshare.net/keisuke69/aws-lambda-amazon-api-gateway-deep-dive 37
6. Δ;Η 38
Δ;Η • AWSΨڥአͯΡΟServerlessίЄκϓμώϰΨֵͼΕΞ͜ • 僻ቘίЄκϓμώϰق֛ΨServerless۸͚ͭͯͤ • ᥝկጱ櫞ͭͳ͜ͽ͘ΆᔰፗEC2/ECSΨ䭥懵ͯΡ • ΔͰ΅φϯЄϸφόЄϕ͡ΟতΗΡ 39
͠ΥΠ 40
7. ݇ᘍϷЀμ 41
Serverless;΅֜͡ • https://rebuild.fm/160/ • https://martinfowler.com/articles/serverless.html • http://dev.classmethod.jp/cloud/aws/serverless- meetup-20160802/ 42
ServerlessίЄκϓμώϰ • https://speakerdeck.com/ikait/serverless-architecture-supports- nikkeis-paper-viewer 43
ServerlessΨඪ͞ΡϑЄϸ • https://github.com/serverless/serverless • https://github.com/awslabs/serverless-application-model • https://github.com/apex/apex • https://speakerdeck.com/horike37/serverless-framework- workshop
• https://medium.com/vandium-software/unit-testing-aws- lambda-functions-in-node-js-7ad6c8f5000 44
ᐒտ΅ኚ͚ͥ • http://docs.aws.amazon.com/lambda/latest/dg/limits.html • https://www.slideshare.net/keisuke69/aws-lambda-amazon-api- gateway-deep-dive 45