Slide 1

Slide 1 text

αʔόϨεΞʔΩςΫνϟͷ Ξϯνύλʔϯͱ׆༻ํ๏

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

͜ΜͳΜॻ͍ͯ·͢

Slide 4

Slide 4 text

ࠓ೔࿩͢͜ͱ • αʔόϨεΞʔΩςΫνϟͷΞϯνύλʔϯͱ ղܾํ๏ • ৬ۀฑAWSͷαʔϏεத৺Ͱ͕͢ɺ
 ॴʑAWSʹґଘͯ͠ͳ͍Tips΋͋Γ·͢

Slide 5

Slide 5 text

ࠓ೔࿩͞ͳ͍͜ͱ • αʔόϨεΞʔΩςΫνϟͬͯͳʹʁ

Slide 6

Slide 6 text

ର৅ • αʔόϨεͬͯݴ༿͸஌ͬͯΔ͚Ͳɾɾ • ͱΓ࣮͋͑ͣ૷ͯ͠Έ͚ͨͲɾɾ • Έ͍ͨͳਓΛର৅ʹ͍ͯ͠·͢ • ώϯτΛ࣋ͪؼͬͯ΋Β͑Ε͹ͱࢥ͍·͢

Slide 7

Slide 7 text

ຊ୊

Slide 8

Slide 8 text

1. ʮSDKΛ࢖ΘͣσʔλΛ౤͛Δʯ • SDKΛ࢖ΘͣʹΫϥΠΞϯτ͔ΒAWSαʔϏεʹϦΫΤετ Λ౤͛Δ AWS Lambda Amazon API Gateway mobile client Amazon DynamoDB

Slide 9

Slide 9 text

• Ϋϥ΢υͱ͍ͬͯ΋෺ཧͰಈ͍͍ͯΔ • ࢭ·Βͳ͍γεςϜ͸ଘࡏ͠ͳ͍ • SDK͸Ϋϥ΢υ͕ࢭ·ΔલఏͰϦτϥΠॲཧͱ͔͕૊Έࠐ·Ε͍ͯΔɻՄೳͳݶΓSDKΛ࢖͏ • SDKΛ࢖Θͳ͍৔߹͸ɺ૬ख͕ड͚औΕͳ͔ͬͨ৔߹Λ૝ఆͯ͠ϦτϥΠ͢Δ
 ॲཧΛೖΕΑ͏ɻϦτϥΠʹΑΓޙʹ੒ޭ͢ΔՄೳੑ͕ߴ͍ • ϦτϥΠॲཧͷਪ঑͸ɺΫϥΠΞϯτଆ͸ʮExponential Backoffʯ͕ਪ঑ɻ
 Lambdaʹؔͯ͠͸ʮDead Letter QueueʯΛར༻͢Δ • Exponential Backoff • σʔλૹ৴ॲཧ͕ࣦഊͯ͠࠶ૹ৴͢Δͱ͖ʹɺࣦഊճ਺͕૿͑Δʹ࿈Εͯ
 ࠶ૹ৴͢Δ·Ͱͷ଴ͪ࣌ؒΛࢦ਺ؔ਺తʹ૿΍͢࢓૊Έ
 ʢྫɿ̍ඵޙɺ̎ඵޙɺ̐ඵޙɺ̔ඵޙɺɺɺʣ • ௕ظো֐ൃੜ࣌ʹγεςϜ΁ͷෆඞཁͳෛ୲Λܰݮ • Dead Letter Queue • ࣮ߦࣦഊ࣌ (3ճϦτϥΠࣦഊ࣌) ʹSQS͔SNSʹ౤͛ΕΔػೳ • SQSʹಥͬࠐΜͩޙʹΰχϣΰχϣ͢Δ SDK͸͔͍͜͠ɻՄೳͳݶΓSDKΛ

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

Lambdaͷํ͕͓ߴ͍৔߹΋͋Δ • 256MBͷϝϞϦͰ1,500ສճ࣮ߦ͠ຖճͷ࣮ߦ͕࣌ؒ200ϛϦඵͩͬͨ৔߹ͷར ༻ྉ͸ɺ໿$11 • ্͕Ծʹຖ೔࣮ߦ͢ΔΑ͏ͳॲཧͷ৔߹ɺ$11*30೔Ͱ$330 • ༻్ʹΑͬͯ͸Lambdaͷํ͕ߴ͘ͳΔ৔߹΋͋Δ • Ͱ΋EC2ͷӡ༻͕ແ͘ͳΔͷͰอकͷରԠ޻਺͕ݮΔ͠ɺϝϦοτ΋େ͍ʹ͋Δ ʢ͠ɺ΍ͬͯΈ͍ͨ͡ΌΜʣ • ॲཧྔ͕ଟ͍৔߹͸ܰ͘ݟੵΖ͏ • ͋ͱɺଟ਺ͷLambdaΛ࢖ͬͯ΋͍͍͕Lambdaͷಉ࣮࣌ߦ਺੍ݶʢ100/secʣ͸ ΞΧ΢ϯτ୯ҐͳͷͰɺ্ݶʹ஫ҙ

Slide 12

Slide 12 text

3. ʮॏ͍ͨόον΋LambdaͰʯ AWS Lambda Amazon CloudWatch

Slide 13

Slide 13 text

Lambda͸ॲཧ࣌ؒʹݶΓ͕͋Δ • Lambda = ࠷௕5෼͔ؒ͠ॲཧͰ͖ͳ͍ • 5෼Ҏ্͔͔Δ৔߹͸ผͷLambdaʹॲཧΛྲྀ͢ • SQS΍DynamoDBɺs3ͳͲΛؒʹڬΈLambda ͷॲཧΛ෼͚Δ • StepFunction΋׆༻͠Α͏

Slide 14

Slide 14 text

4. ʮAPI GatewayͰॏ͍ͨॲཧʯ AWS Lambda Amazon API Gateway mobile client

Slide 15

Slide 15 text

API Gateway͸Timeout͢Δ • API GatewayͷλΠϜΞ΢τ͸30ඵ • 30ඵҎ಺ʹAPI GatewayʹॲཧΛฦ͢ඞཁ͋Γ • ·ͣɺϑϩϯτͷLambdaͰϨεϙϯεฦ͠ɺ ඇಉظʹޙଓͷLambdaͰॲཧΛܧଓͤ͞Δ • ॲཧ׬ྃޙʹSNSͳͲͰ௨஌͢Δ

Slide 16

Slide 16 text

5. ʮ1LambdaͰଟ਺ͷॲཧʯ AWS Lambda

Slide 17

Slide 17 text

ՄࢹԽੑ͕௿͘ɺಉ࣮࣌ߦ΍
 ϦτϥΠॲཧͰ໰୊ग़Δ͔΋ • ಉ࣮࣌ߦ਺͕100ͳͷͰɺ1Lambdaͷॲཧ͕࣌ؒ௕͍ͱಉ࣮࣌ߦ਺Ͱ಄ଧͪ͢Δ͔΋ɻ
 1ϑΝϯΫγϣϯͷ࣮ߦ࣌ؒ͸ՄೳͳݶΓ୹͘͢Δ͜ͱ
 ʢಉ࣮࣌ߦ਺ͷ্ݶ؇࿨Մೳ͕ͩɺ࣮੷͕গͳ͍৔߹͸௨Βͳ͍͜ͱ΋͋Δͦ͏ʣ • Lambda͕ࣦഊͨ͠ࡍʹ߹ܭ3ճϦτϥΠॲཧ͞Εͯ͠·͏ͨΊɺ్த·Ͱͷॲཧ͕ෳ਺ճ࣮ ߦ͞Εͯ͠·͏͜ͱ΋͋Δɻ࣮֬ʹ1ճ͚࣮ͩߦ͍ͨ͠৔߹͸ʮcontext.done()ʯ͢Δɻ • όονॲཧͰ͍͏ͱ͜ΖͷϦϥϯͱ͔ɺτϥϯβΫγϣϯɾϩʔϧόοΫͱ͔ແ͍ͷͰႈ౳ ੑ͕อͨΕͨɺෳ਺ճ࣮ߦͯ͠΋͍͍ॲཧͰ࡞Βͳ͍ͱγϯυΠ͔΋ʢ΂͖࿦͗͢Δ͚Ͳʣ • StepFunctionΛ࢖͑͹ॲཧϑϩʔ΋ՄࢹԽग़དྷͯɺ؅ཧ͕ḿΔͷͰ1Lambdaʹ߆Δඞཁͳ͍ • ͨͩɺ࠶ૹ΍ׂΓࠐΈͳͲΛߟྀ͓͔ͯ͠ͳ͍ͱޙͰϝϯς͠ʹ͍͘͜ͱ΋ɻ
 ͜ͷลͷϕετϓϥΫςΟε͸·ͩ·ͩ͜Ε͔Βɻ

Slide 18

Slide 18 text

6. ʮ؂ࢹΛ͠ͳ͍ʯ Amazon CloudWatch

Slide 19

Slide 19 text

؂ࢹ͸ઈର͠·͠ΐ͏ • ඞͣ੒ޭ͍ͯ͠Δอূ͸ͳ͍ • ඞͣॲཧ͠ͳ͍ͱ͍͚ͳ͍΋ͷ͸ΩονϦ؂ࢹ͠·͠ΐ ͏ʢLambda͸Α͘؂ࢹͷߟྀ͔Β࿙ΕΔʣ • Lambdaͷ৔߹͸ʮErrorsʢྫ֎ൃੜʣʯΛ؂ࢹͯ͠Ξ ϥʔτΛ্͛Δ • ϩά͸CloudWatch Logsʹ͋ΔͷͰɺCWLogsͷϝτ ϦοΫϑΟϧλͰΞϥʔτ্͛Δ

Slide 20

Slide 20 text

7. όοΫΤϯυʹDynamoDB AWS Lambda Amazon API Gateway mobile client Amazon DynamoDB

Slide 21

Slide 21 text

ΩϟύγςΟ؅ཧ͕ඞཁ • DynamoDB͸1ඵ͋ͨΓͷಡΈॻ͖ྔʢΩϟύγ ςΟʣΛࣄલʹઃఆ͢Δ • ΩϟύγςΟΛ௒͑ͨ৔߹͸ॲཧ͖͠ΕͣΤϥʔ ͱͳΔʢεύΠΫͳͲʹ஫ҙʣ • ϩετͯ͠͸͍͚ͳ͍σʔλͷ৔߹͸ॻ͖ࠐΈࣦ ഊ࣌ʹSQSʹ֨ೲ͠ɺ࣌ؒΛஔ͍ͯϦτϥΠ͢Δ ͳͲΛݕ౼͢Δඞཁ͕͋Δ

Slide 22

Slide 22 text

8. ௚઀Kinesis Amazon Kinesis mobile client

Slide 23

Slide 23 text

γϟʔυͷ؅ཧ͕ඞཁ • 1γϟʔυʹ1ඵ͋ͨΓ࠷େ1,000݅ͷPUT • ΩϟύγςΟΛ௒͑ͨ৔߹͸ॲཧ͖͠ΕͣΤϥʔͱͳΔʢε ύΠΫͳͲʹ஫ҙʣ • ϩετͯ͠͸͍͚ͳ͍σʔλͷ৔߹͸ΫϥΠΞϯτଆͰϦ τϥΠػߏΛઃ͚Δ • γϟʔυΛ෼ׂ͢Δ͜ͱͰॲཧྔ͸૿΍ͤΔ • ͕ɺpartition-keyͰద੾ʹ෼ࢄ͠ͳ͍ͱยํʹدΔ

Slide 24

Slide 24 text

9. LambdaͷόοΫΤϯυʹRDS AWS Lambda Amazon API Gateway mobile client Amazon RDS

Slide 25

Slide 25 text

RDS΁ͷ઀ଓͷಓ͸ࠔ೉ • Lambda͔ΒVPC಺ʢPrivate SubnetʣͷRDSʹ઀ଓ͢Δʹ͸VPC in LambdaΛ࢖͏ඞཁ͕͋ΓɺLambdaͷى ಈ͕஗͘ͳΔʢENIͷੜ੒͕஗͍ʣ • VPC in Lambda͸LambdaΛ࣮ߦ͢Δ͝ͱʹENIΛ࢖༻͢ΔͨΊɺSubnet͸େ͖֬͘อ͠ͳ͍ͱSubnetͷIPΛ ࢖͍੾ͬͯENI͕ੜ੒ग़དྷͣʹΤϥʔ͕ൃੜ͢Δ • Lambda in Public͸RDSʹରͯ͠ɺSecurityGroupͷϑϧ։์ʢ΋͘͠͸Ұ࣌తʹࣗIPΛ։์ʣ͕ඞཁʹͳΔ ͕ɺDBͷಛੑΛ౿·͑ΔͱηΩϡϦςΟ্ɺϑϧ։์΍Public SubnetʹRDSΛ഑ஔ͢Δͷ͸ݱ࣮తͰ͸ͳ͍ • Lambda͔ΒRDS΁ͷDBίωΫγϣϯ͸ϦΫΤετ୯ҐʹͳΔͨΊɺಉ࣌઀ଓ͕଱͑ΒΕͳ͍Մೳੑ΋ • σʔλετΞͷమଇ͸DynamoDBɻ
 DBͷ໰୊ͰͲ͏ͯ͠΋VPCΛར༻͍ͨ͠ʢPrivateʹ഑ஔ͍ͨ͠ʣ৔߹͸ɺDynamoDB StreamsʢDynamoDB Streams=>Lambda=>SQS=>RDSʣΛར༻ͨ͠ඇಉظ൓өΛݕ౼͢Δ

Slide 26

Slide 26 text

10. ੜͷAWSαʔϏεͰड͚Δ Amazon Kinesis mobile client mobile client Amazon DynamoDB

Slide 27

Slide 27 text

API GatewayΛڬΉͱ޾ͤʹͳΔ ʢ͔΋ʁʣ • ੜͷAWSαʔϏεʢKinesis΍DynamoDBͳͲʣͰड͚ΔͱɺҎԼͷΑ͏ͳ໰୊͕ • ଞʹྑ͍αʔϏε͕ग़ͨΒΞϓϦଆʢσόΠεଆʣͳͲͷมߋ͕ඞཁ • Πϯϑϥଆ͔Βͨ͠ΒΞϓϦଆʢσόΠεଆʣʹɺԿ࢖ͬͯΔ͔ͱ͔αʔϏε Λҙࣝͯ͠΄͘͠ͳ͍ • API GatewayΛؒʹڬΈRESTͰड͚ΔΑ͏ʹ͢ΔͱɺΠϯϑϥʢAWSαʔϏε ଆʣ͸ந৅Խ͞ΕΔ • ந৅Խ͓ͯ͘͠ͱɺΑΓྑ͍αʔϏε͕ग़ͨ࣌ʹΞϓϦଆʢσόΠεଆʣʹґ ଘͤͣʹॊೈʹมߋ͕Մೳ • Ұ൪࢝ΊʹSDKΛ࢖͑ɻͬͯݴ͚ͬͨͲɺԿΛॏࢹ͢Δ͔ʁͰબ୒Λ

Slide 28

Slide 28 text

࠷ޙʹ • ϋϚΓͲ͜Ζ͸৭ʑ͋Δ • ࢖͍ํʹΑͬͯ͸ੌ͘ྑ͍݁ՌʹͳΔ͚Ͳɺ
 ࢖͍ํ͕ѱ͚Ε͹ΠϚΠνʹͳΔʢσʔλϩετ͢Δͱ͔ʣ • શ෦αʔόϨεʹ͢Δඞཁ͸ͳ͍ • RDBʹྑ͍ػೳ͕͋ΔͷʹKVSͰؤுΓ·ͬͯ͘Δײͱ
 ಉ͡Ͱɺཁ͸࢖͍ॴͰ͢ɻ • ΈΜͳͰϋϚͬͯϕετϓϥΫςΟεΛ࡞͍͖ͬͯ·͠ΐ͏

Slide 29

Slide 29 text

Ҏ্