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
370
EKS を使ってる人から見た App Runner
shogomuranushi
7
2.6k
Suggested Topicの質問に可能な限り答えてみた
shogomuranushi
0
1.2k
顧客のアプリケーションコードが動くマルチテナント環境における課題とEKSにたどり着くまで
shogomuranushi
0
1.8k
ちょいテク100本ノック。できるまで帰しません 。今から使えるちょいテク集
shogomuranushi
1
3.4k
after of Infrastructure-as-Code-is-very-tired
shogomuranushi
16
3.5k
Featured
See All Featured
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
730
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
A Tale of Four Properties
chriscoyier
163
24k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
530
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Raft: Consensus for Rubyists
vanstee
142
7.8k
Scaling GitHub
holman
464
140k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
800
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
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ͰؤுΓ·ͬͯ͘Δײͱ
ಉ͡Ͱɺཁ͍ॴͰ͢ɻ • ΈΜͳͰϋϚͬͯϕετϓϥΫςΟεΛ࡞͍͖ͬͯ·͠ΐ͏
Ҏ্