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
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.5k
github-classmethod-study-20170426
knakayama
1
3.9k
Other Decks in Technology
See All in Technology
AIに「使われる」時代のSaaS戦略 〜既存WebAPIのMCPサーバー化における開発ノウハウ〜
ekispert_api
0
300
クラウド上のデータ復旧で見落としがちな制約: 医療系 SaaS の BCP 設計から得た教訓
kakehashi
PRO
0
2.9k
Amazon EVS で VCF 9.0 / 9.1 のサポート開始まとめ
mtoyoda
0
280
インフラ寄りSREでも 開発に踏み出せる〜境界を越えてユーザー体験に向き合いたい〜
sansantech
PRO
2
3.1k
“全部コピーしない”ファイルデータの活用 : — FSx for ONTAP × S3 Tables × Icebergで作るメタデータカタログ
yoshiki0705
0
600
ZOZOTOWNの進化と信頼性を両立する負荷試験
zozotech
PRO
1
150
地域 SRE コミュニティ最前線 / SRE NEXT 2026 Discussion Night Track C
muziyoshiz
0
180
『AIに負けない』より『AIと遊ぶ』」〜ワクワクが最強のテスト・QA学習戦略_公開用
odan611
2
540
AWS Summit の片隅で、体育座りしながらコミュニティがにぎわう理由を考えた
k_adachi_01
2
360
依頼文化をやめる日 EM視点で語るPlatform EngineeringとInclusive SRE / Discussing Platform Engineering and Inclusive SRE from an EM's Perspective
shin1988
4
4.7k
完全自律ロボットを作りたくて、先に開発を自律させた話(ROS Japan UG #63 LT)
rryz09
0
430
GuardrailからGovernanceへ~AIエージェント運用の次の課題~
sbspsy
1
240
Featured
See All Featured
Design in an AI World
tapps
1
260
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
150
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
460
Designing for Timeless Needs
cassininazir
1
280
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
170
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
220
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
220
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
180
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
260
Practical Orchestrator
shlominoach
191
11k
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