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
サーバレスアーキテクチャのアンチパターンと活用方法_20170126
Search
shogomuranushi
January 26, 2017
1.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
サーバレスアーキテクチャのアンチパターンと活用方法_20170126
shogomuranushi
January 26, 2017
More Decks by shogomuranushi
See All by shogomuranushi
ノーコード x ChatBotで遊んでたら ReActを実装しそうだった話
shogomuranushi
0
1.4k
ChatGPT関連情報の追い方、個人・業務での使い方、サービスへの組み込み方、 ABEJAでの取り組み4例、ここ2週間のトピックなど行けるところまで
shogomuranushi
5
2.1k
FPが教える iDeCo のすごさ
shogomuranushi
0
200
AWS Control Tower導入してハッピーになりました
shogomuranushi
0
360
EKS を使ってる人から見た App Runner
shogomuranushi
7
2.6k
Suggested Topicの質問に可能な限り答えてみた
shogomuranushi
0
1.2k
顧客のアプリケーションコードが動くマルチテナント環境における課題とEKSにたどり着くまで
shogomuranushi
0
1.8k
ちょいテク100本ノック。できるまで帰しません 。今から使えるちょいテク集
shogomuranushi
1
3.3k
after of Infrastructure-as-Code-is-very-tired
shogomuranushi
16
3.5k
Featured
See All Featured
First, design no harm
axbom
PRO
2
1.3k
The agentic SEO stack - context over prompts
schlessera
0
940
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
420
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Navigating Weather and Climate Data
rabernat
0
520
Building a Scalable Design System with Sketch
lauravandoore
464
34k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Evolving SEO for Evolving Search Engines
ryanjones
0
290
Faster Mobile Websites
deanohume
310
32k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
Marketing to machines
jonoalderson
1
5.8k
Transcript
αʔόϨεΞʔΩςΫνϟͷ Ξϯνύλʔϯͱ׆༻ํ๏
None
͜ΜͳΜॻ͍ͯ·͢
ࠓ͢͜ͱ • αʔόϨεΞʔΩςΫνϟͷΞϯνύλʔϯͱ ղܾํ๏ • ৬ۀฑAWSͷαʔϏεத৺Ͱ͕͢ɺ ॴʑAWSʹґଘͯ͠ͳ͍Tips͋Γ·͢
ࠓ͞ͳ͍͜ͱ • αʔόϨεΞʔΩςΫνϟͬͯͳʹʁ
ର • αʔόϨεͬͯݴ༿ͬͯΔ͚Ͳɾɾ • ͱΓ࣮͋͑ͣͯ͠Έ͚ͨͲɾɾ • Έ͍ͨͳਓΛରʹ͍ͯ͠·͢ • ώϯτΛ࣋ͪؼͬͯΒ͑Εͱࢥ͍·͢
ຊ
1. ʮSDKΛΘͣσʔλΛ͛Δʯ • SDKΛΘͣʹΫϥΠΞϯτ͔ΒAWSαʔϏεʹϦΫΤετ Λ͛Δ AWS Lambda Amazon API Gateway
mobile client Amazon DynamoDB
• Ϋϥυͱ͍ͬͯཧͰಈ͍͍ͯΔ • ࢭ·Βͳ͍γεςϜଘࡏ͠ͳ͍ • SDKΫϥυ͕ࢭ·ΔલఏͰϦτϥΠॲཧͱ͔͕Έࠐ·Ε͍ͯΔɻՄೳͳݶΓSDKΛ͏ • SDKΛΘͳ͍߹ɺ૬ख͕ड͚औΕͳ͔ͬͨ߹Λఆͯ͠ϦτϥΠ͢Δ ॲཧΛೖΕΑ͏ɻϦτϥΠʹΑΓޙʹޭ͢ΔՄೳੑ͕ߴ͍ •
ϦτϥΠॲཧͷਪɺΫϥΠΞϯτଆʮExponential Backoffʯ͕ਪɻ Lambdaʹؔͯ͠ʮDead Letter QueueʯΛར༻͢Δ • Exponential Backoff • σʔλૹ৴ॲཧ͕ࣦഊͯ͠࠶ૹ৴͢Δͱ͖ʹɺࣦഊճ͕૿͑Δʹ࿈Εͯ ࠶ૹ৴͢Δ·Ͱͷͪ࣌ؒΛࢦؔతʹ૿͢Έ ʢྫɿ̍ඵޙɺ̎ඵޙɺ̐ඵޙɺ̔ඵޙɺɺɺʣ • ظোൃੜ࣌ʹγεςϜͷෆඞཁͳෛ୲Λܰݮ • Dead Letter Queue • ࣮ߦࣦഊ࣌ (3ճϦτϥΠࣦഊ࣌) ʹSQS͔SNSʹ͛ΕΔػೳ • SQSʹಥͬࠐΜͩޙʹΰχϣΰχϣ͢Δ SDK͔͍͜͠ɻՄೳͳݶΓSDKΛ
2. ʮͱΓ͋͑ͣLambda FirstͰʯ multimedia Amazon SQS Amazon SNS AWS IoT
AWS Lambda Amazon API Gateway mobile client AWS Lambda AWS Lambda AWS Lambda AWS Lambda AWS Lambda
Lambdaͷํ͕͓ߴ͍߹͋Δ • 256MBͷϝϞϦͰ1,500ສճ࣮ߦ͠ຖճͷ࣮ߦ͕࣌ؒ200ϛϦඵͩͬͨ߹ͷར ༻ྉɺ$11 • ্͕Ծʹຖ࣮ߦ͢ΔΑ͏ͳॲཧͷ߹ɺ$11*30Ͱ$330 • ༻్ʹΑͬͯLambdaͷํ͕ߴ͘ͳΔ߹͋Δ • ͰEC2ͷӡ༻͕ແ͘ͳΔͷͰอकͷରԠ͕ݮΔ͠ɺϝϦοτେ͍ʹ͋Δ
ʢ͠ɺͬͯΈ͍ͨ͡ΌΜʣ • ॲཧྔ͕ଟ͍߹ܰ͘ݟੵΖ͏ • ͋ͱɺଟͷLambdaΛ͍͍͕ͬͯLambdaͷಉ࣮࣌ߦ੍ݶʢ100/secʣ ΞΧϯτ୯ҐͳͷͰɺ্ݶʹҙ
3. ʮॏ͍ͨόονLambdaͰʯ AWS Lambda Amazon CloudWatch
Lambdaॲཧ࣌ؒʹݶΓ͕͋Δ • Lambda = ࠷5͔ؒ͠ॲཧͰ͖ͳ͍ • 5Ҏ্͔͔Δ߹ผͷLambdaʹॲཧΛྲྀ͢ • SQSDynamoDBɺs3ͳͲΛؒʹڬΈLambda ͷॲཧΛ͚Δ
• StepFunction׆༻͠Α͏
4. ʮAPI GatewayͰॏ͍ͨॲཧʯ AWS Lambda Amazon API Gateway mobile client
API GatewayTimeout͢Δ • API GatewayͷλΠϜΞτ30ඵ • 30ඵҎʹAPI GatewayʹॲཧΛฦ͢ඞཁ͋Γ • ·ͣɺϑϩϯτͷLambdaͰϨεϙϯεฦ͠ɺ
ඇಉظʹޙଓͷLambdaͰॲཧΛܧଓͤ͞Δ • ॲཧྃޙʹSNSͳͲͰ௨͢Δ
5. ʮ1LambdaͰଟͷॲཧʯ AWS Lambda
ՄࢹԽੑ͕͘ɺಉ࣮࣌ߦ ϦτϥΠॲཧͰग़Δ͔ • ಉ࣮࣌ߦ͕100ͳͷͰɺ1Lambdaͷॲཧ͕͍࣌ؒͱಉ࣮࣌ߦͰ಄ଧͪ͢Δ͔ɻ 1ϑΝϯΫγϣϯͷ࣮ߦ࣌ؒՄೳͳݶΓ͘͢Δ͜ͱ ʢಉ࣮࣌ߦͷ্ݶ؇Մೳ͕ͩɺ࣮͕গͳ͍߹௨Βͳ͍͜ͱ͋Δͦ͏ʣ • Lambda͕ࣦഊͨ͠ࡍʹ߹ܭ3ճϦτϥΠॲཧ͞Εͯ͠·͏ͨΊɺ్த·Ͱͷॲཧ͕ෳճ࣮ ߦ͞Εͯ͠·͏͜ͱ͋Δɻ࣮֬ʹ1ճ͚࣮ͩߦ͍ͨ͠߹ʮcontext.done()ʯ͢Δɻ •
όονॲཧͰ͍͏ͱ͜ΖͷϦϥϯͱ͔ɺτϥϯβΫγϣϯɾϩʔϧόοΫͱ͔ແ͍ͷͰႈ ੑ͕อͨΕͨɺෳճ࣮ߦ͍͍ͯ͠ॲཧͰ࡞Βͳ͍ͱγϯυΠ͔ʢ͖͗͢Δ͚Ͳʣ • StepFunctionΛ͑ॲཧϑϩʔՄࢹԽग़དྷͯɺཧ͕ḿΔͷͰ1Lambdaʹ߆Δඞཁͳ͍ • ͨͩɺ࠶ૹׂΓࠐΈͳͲΛߟྀ͓͔ͯ͠ͳ͍ͱޙͰϝϯς͠ʹ͍͘͜ͱɻ ͜ͷลͷϕετϓϥΫςΟε·ͩ·ͩ͜Ε͔Βɻ
6. ʮࢹΛ͠ͳ͍ʯ Amazon CloudWatch
ࢹઈର͠·͠ΐ͏ • ඞͣޭ͍ͯ͠Δอূͳ͍ • ඞͣॲཧ͠ͳ͍ͱ͍͚ͳ͍ͷΩονϦࢹ͠·͠ΐ ͏ʢLambdaΑ͘ࢹͷߟྀ͔Β࿙ΕΔʣ • Lambdaͷ߹ʮErrorsʢྫ֎ൃੜʣʯΛࢹͯ͠Ξ ϥʔτΛ্͛Δ •
ϩάCloudWatch Logsʹ͋ΔͷͰɺCWLogsͷϝτ ϦοΫϑΟϧλͰΞϥʔτ্͛Δ
7. όοΫΤϯυʹDynamoDB AWS Lambda Amazon API Gateway mobile client Amazon
DynamoDB
ΩϟύγςΟཧ͕ඞཁ • DynamoDB1ඵ͋ͨΓͷಡΈॻ͖ྔʢΩϟύγ ςΟʣΛࣄલʹઃఆ͢Δ • ΩϟύγςΟΛ͑ͨ߹ॲཧ͖͠ΕͣΤϥʔ ͱͳΔʢεύΠΫͳͲʹҙʣ • ϩετ͍͚ͯ͠ͳ͍σʔλͷ߹ॻ͖ࠐΈࣦ ഊ࣌ʹSQSʹ֨ೲ͠ɺ࣌ؒΛஔ͍ͯϦτϥΠ͢Δ
ͳͲΛݕ౼͢Δඞཁ͕͋Δ
8. Kinesis Amazon Kinesis mobile client
γϟʔυͷཧ͕ඞཁ • 1γϟʔυʹ1ඵ͋ͨΓ࠷େ1,000݅ͷPUT • ΩϟύγςΟΛ͑ͨ߹ॲཧ͖͠ΕͣΤϥʔͱͳΔʢε ύΠΫͳͲʹҙʣ • ϩετ͍͚ͯ͠ͳ͍σʔλͷ߹ΫϥΠΞϯτଆͰϦ τϥΠػߏΛઃ͚Δ •
γϟʔυΛׂ͢Δ͜ͱͰॲཧྔ૿ͤΔ • ͕ɺpartition-keyͰదʹࢄ͠ͳ͍ͱยํʹدΔ
9. LambdaͷόοΫΤϯυʹRDS AWS Lambda Amazon API Gateway mobile client Amazon
RDS
RDSͷଓͷಓࠔ • Lambda͔ΒVPCʢPrivate SubnetʣͷRDSʹଓ͢ΔʹVPC in LambdaΛ͏ඞཁ͕͋ΓɺLambdaͷى ಈ͕͘ͳΔʢENIͷੜ͕͍ʣ • VPC in
LambdaLambdaΛ࣮ߦ͢Δ͝ͱʹENIΛ༻͢ΔͨΊɺSubnetେ͖֬͘อ͠ͳ͍ͱSubnetͷIPΛ ͍ͬͯENI͕ੜग़དྷͣʹΤϥʔ͕ൃੜ͢Δ • Lambda in PublicRDSʹରͯ͠ɺSecurityGroupͷϑϧ։์ʢ͘͠Ұ࣌తʹࣗIPΛ։์ʣ͕ඞཁʹͳΔ ͕ɺDBͷಛੑΛ౿·͑ΔͱηΩϡϦςΟ্ɺϑϧ։์Public SubnetʹRDSΛஔ͢Δͷݱ࣮తͰͳ͍ • Lambda͔ΒRDSͷDBίωΫγϣϯϦΫΤετ୯ҐʹͳΔͨΊɺಉ࣌ଓ͕͑ΒΕͳ͍Մೳੑ • σʔλετΞͷమଇDynamoDBɻ DBͷͰͲ͏ͯ͠VPCΛར༻͍ͨ͠ʢPrivateʹஔ͍ͨ͠ʣ߹ɺDynamoDB StreamsʢDynamoDB Streams=>Lambda=>SQS=>RDSʣΛར༻ͨ͠ඇಉظөΛݕ౼͢Δ
10. ੜͷAWSαʔϏεͰड͚Δ Amazon Kinesis mobile client mobile client Amazon DynamoDB
API GatewayΛڬΉͱͤʹͳΔ ʢ͔ʁʣ • ੜͷAWSαʔϏεʢKinesisDynamoDBͳͲʣͰड͚ΔͱɺҎԼͷΑ͏ͳ͕ • ଞʹྑ͍αʔϏε͕ग़ͨΒΞϓϦଆʢσόΠεଆʣͳͲͷมߋ͕ඞཁ • Πϯϑϥଆ͔Βͨ͠ΒΞϓϦଆʢσόΠεଆʣʹɺԿͬͯΔ͔ͱ͔αʔϏε Λҙࣝͯ͠΄͘͠ͳ͍
• API GatewayΛؒʹڬΈRESTͰड͚ΔΑ͏ʹ͢ΔͱɺΠϯϑϥʢAWSαʔϏε ଆʣநԽ͞ΕΔ • நԽ͓ͯ͘͠ͱɺΑΓྑ͍αʔϏε͕ग़ͨ࣌ʹΞϓϦଆʢσόΠεଆʣʹґ ଘͤͣʹॊೈʹมߋ͕Մೳ • Ұ൪࢝ΊʹSDKΛ͑ɻͬͯݴ͚ͬͨͲɺԿΛॏࢹ͢Δ͔ʁͰબΛ
࠷ޙʹ • ϋϚΓͲ͜Ζ৭ʑ͋Δ • ͍ํʹΑͬͯੌ͘ྑ͍݁ՌʹͳΔ͚Ͳɺ ͍ํ͕ѱ͚ΕΠϚΠνʹͳΔʢσʔλϩετ͢Δͱ͔ʣ • શ෦αʔόϨεʹ͢Δඞཁͳ͍ • RDBʹྑ͍ػೳ͕͋ΔͷʹKVSͰؤுΓ·ͬͯ͘Δײͱ
ಉ͡Ͱɺཁ͍ॴͰ͢ɻ • ΈΜͳͰϋϚͬͯϕετϓϥΫςΟεΛ࡞͍͖ͬͯ·͠ΐ͏
Ҏ্