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
サーバレスアーキテクチャはじめの一歩
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.5k
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.7k
The ~~Ten~~ Three Most Critical Security Risks in Serverless Architectures
knakayama
2
1.5k
サーバーレス x IoT 〜我々はどういった課題に直面してそれをどのように解決したのか〜
knakayama
0
1.4k
Bloxが切り開くECSの世界
knakayama
1
1.3k
AWS Serverless Application Modelのデプロイ戦略
knakayama
4
2.5k
github-classmethod-study-20170426
knakayama
1
3.9k
Other Decks in Technology
See All in Technology
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
3k
2026年6月23日 Syncable Tech + Start Python Club にて
hamukazu
0
140
脱SaaS!FDEを支えるプロビジョニングと分離設計
knih
0
250
LayerX コーポレートエンジニアリング室におけるサプライチェーンセキュリティへの取り組み / Supply Chain Security at LayerX Corporate Engineering
yuyatakeyama
2
700
いまさら聞けない「仕様駆動開発入門」 〜AI活用時代の開発プロセスを考える〜
findy_eventslides
2
160
徹底討論!ECS vs EKS!
daitak
3
1.1k
SONiCのLinuxベースを活かしたZabbix監視
sonic
0
240
When Platform Engineering Meets GenAI
sucitw
0
140
FPC(フレキシブル)基板にZephyr実装してみた。
iotengineer22
0
130
水を運ぶ人としてのリーダーシップ
izumii19
2
170
GitHub Copilot 最新アップデート – 「一歩先」の実践活用術
moulongzhang
5
1.5k
AIのReact習熟度を測る
uhyo
2
660
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Typedesign – Prime Four
hannesfritz
42
3.1k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
GitHub's CSS Performance
jonrohan
1033
470k
For a Future-Friendly Web
brad_frost
183
10k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
How to build a perfect <img>
jonoalderson
1
5.7k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
Utilizing Notion as your number one productivity tool
mfonobong
4
320
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