Slide 1

Slide 1 text

࣌ܥྻσʔλϕʔεͱ͍͏֓೦ ΛΫϥ΢υͷٕͰ࠶ߏங͢Δ ͸ͯͳ id:y_uuki AWS Summit Tokyo 2017

Slide 2

Slide 2 text

id:y_uuki / @y_uuk1 TSUBOUCHI Yuuki https://yuuk.io/ גࣜձࣾ͸ͯͳ WebΦϖϨʔγϣϯΤϯδχΞ / γχΞΤϯδχΞ MackerelΞʔΩςΫνϟ࡮৽ϓϩδΣΫτϦʔμʔ

Slide 3

Slide 3 text

write datapoints Kinesis Streams Lambda read datapoints ElastiCache DynamoDB Lambda TTL expired flush write Web App (Golang) S3 read read read αʔό؂ࢹαʔϏεMackerelʹ͓͚Δ ࣍ੈ୅ͷ࣌ܥྻσʔλϕʔεΞʔΩςΫνϟ ͷઃܭͱ࣮૷

Slide 4

Slide 4 text

ΰʔϧ •Write-Intensive ApplicationΛAWS্ͰΞʔΩ ςΫνϟઃܭ͢ΔࣄྫΛ঺հ • ൺֱత୯७ͳσʔλΛอ࣋͢Δ࣌ܥྻσʔλϕʔε ͸Α͍ϞσϧέʔεͱͳΔ͸ͣ • ίετ࠷దԽͷͨΊʹɺࢀরہॴੑΛར༻ͨ͠֊૚ܕ σʔλετΞΞʔΩςΫνϟͷఏҊ

Slide 5

Slide 5 text

ΰʔϧઃఆͷഎܠ • AWS SummitͳͷͰɺAWSΛ༻͍ͯΑΓྑ͍γεςϜ Λߏங͢ΔͨΊͷώϯτΛ఻͍͑ͨ • ͦͷͨΊʹɺ࣌ܥྻσʔλϕʔεͦͷ΋ͷΑΓ΋ɺ൚ ༻తͳΞʔΩςΫνϟઃܭͷͨΊͷٞ࿦ͷ౔୆ͱͳΔ ΋ͷΛఏҊ͍ͨ͠

Slide 6

Slide 6 text

Mackerel https://mackerel.io/

Slide 7

Slide 7 text

αʔόͷϝτϦοΫՄ ࢹԽ

Slide 8

Slide 8 text

https://speakerdeck.com/sugiyama88/mackerel-meetup-number-8

Slide 9

Slide 9 text

ߴ଎ͳ਺ઍݸͷܥྻͷදࣔ

Slide 10

Slide 10 text

1෼ղ૾౓σʔλΛ௕ظؒอ࣋ https://mackerel.io/ja/docs/entry/overview ྫ͑͹1೥

Slide 11

Slide 11 text

1෼ҎԼͷղ૾౓ͷରԠ https://mackerel.io/ja/docs/entry/overview ྫ͑͹15ඵ

Slide 12

Slide 12 text

੒௕͚ͭͮ͠ΔαʔϏεͷεέʔ ϥϏϦςΟͷ֬อ σʔλྔͱI/O͕ܹ૿͢Δػೳͷ ࣮ݱ

Slide 13

Slide 13 text

MackerelΞʔΩςΫνϟ ࣌ܥྻ σʔλϕʔε .BDLFSFM "QQ 4DBMB "HFOU ϝτϦοΫ ౤ߘ read/write datapoints 6TFS άϥϑදࣔ

Slide 14

Slide 14 text

࣌ܥྻσʔλϕʔεͱ͸ • ࣌ܥྻσʔλΛѻ͏͜ͱʹಛԽͨ͠σʔλϕʔε • αʔόϞχλϦϯάɺIoTͳͲͷ༻్ʹ࢖ΘΕΔ • ༗໊ͳ࣮૷͸Graphite/InfluxDB/OpenTSDBͳͲ • ஍ຯʹΈ͑ͯҙ֎ͱଟ͘ͷ࣮૷͕ଘࡏ͢Δʢৄࡉޙड़) • ֶज़ݚڀ࿦จͷର৅ʹ΋ͳΔ෼໺

Slide 15

Slide 15 text

http://blog.yuuk.io/entry/high-performance-graphite

Slide 16

Slide 16 text

http://blog.yuuk.io/entry/high-performance-graphite Graphite http://graphite.readthedocs.io/en/latest/

Slide 17

Slide 17 text

ݱঢ়ͷ໰୊఺

Slide 18

Slide 18 text

Graphiteͷ໰୊఺ᶃ • ෛՙ෼ࢄͷͨΊͷӡ༻ίετ͕ߴ͍ • γϟʔυ૿ݮ࣌ʹσʔλ࠶഑ஔ͕ඞཁ • ෼ࢄ͕Ή͔͍ͣͨ͠ΊεέʔϧΞοϓΛબ୒ • σʔλอ࣋ظؒΛ૿΍͢ͱۚમίετ͕ܹ૿ • NANDϑϥογϡϝϞϦͷͨΊ༰ྔ୯Ձ͕େ͖͍ • ࢀরස౓ͷ௿͍σʔλ͚ͩ௿଎ͳσΟεΫʹஔ͖͍͕ͨ ϥ΢ϯυϩϏϯσʔλϕʔεͷੑ্࣭೉͍͠

Slide 19

Slide 19 text

Graphiteͷ໰୊఺ᶄ • σʔλϩετ଱ੑ͕௿͍ • ΞϓϦέʔγϣϯ͔Β͸ඇಉظͰϝϞϦ্ͷΩϡʔʹ ॻ͖ࠐΉͨΊɺαʔόμ΢ϯ͢Δͱσʔλϩετ • ະདྷͷྖҬΛϑΝΠϧ࡞੒࣌ʹ֬อ͢ΔͷͰɺσΟεΫ ࢖༻ޮ཰͕௿͍ • ಛʹίϯςφͷΑ͏ͳ࢖͍ࣺͯͷϗετ͕େྔʹ࡞Β ΕΔͱແବ͕૿͑Δ

Slide 20

Slide 20 text

Graphiteͷ໰୊఺ᶄ • σʔλϩετ଱ੑ͕௿͍ (௿durability) • ΞϓϦέʔγϣϯ͔Β͸ඇಉظͰϝϞϦ্ͷΩϡʔʹ ॻ͖ࠐΉͨΊɺαʔόμ΢ϯ͢Δͱσʔλϩετ • ະདྷʹॻ͖ࠐΉͰ͋Ζ͏ྖҬΛϑΝΠϧ࡞੒࣌ʹ֬อ͢ ΔͷͰɺσΟεΫ࢖༻ޮ཰͕ѱ͍ • ಛʹίϯςφͷΑ͏ͳ࢖͍ࣺͯͷϗετ͕େྔʹ࡞Β ΕΔͱແବ͕ଟ͍ ΞʔΩςΫνϟ ࡮৽͕ඞཁ

Slide 21

Slide 21 text

࣌ܥྻσʔλϕʔεͷ طଘOSS࣮૷ͷௐࠪ

Slide 22

Slide 22 text

Andreas Bader, Oliver Kopp, Michael Falkenthal. “Survey and Comparison of Open Source time Series Databases”. In proceedings of BTW 2017.

Slide 23

Slide 23 text

https://docs.google.com/spreadsheets/d/1sMQe9oOKhMhIVw9WmuCEWdPtAoccJ4a-IuZv4fXDHxM/pubhtml Open Source Time Series DB Comparison

Slide 24

Slide 24 text

࣌ܥྻσʔλϕʔεͷఆٛ • ҎԼͷੑ࣭Λຬͨ͢DBMSͷ͜ͱ • λΠϜελϯϓɺ஋ɺଐੑʢϝτϦοΫ໊ͳͲʣͰߏ ੒͞ΕΔσʔλͷߦΛ֨ೲͰ͖Δ • ࣌ܥྻͱͯ͠άϧʔϓԽ͞Εͨෳ਺ͷߦΛ֨ೲͰ͖Δ • σʔλߦʹରͯ͠ΫΤϦΛൃߦͰ͖Δ • λΠϜελϯϓ·ͨ͸࣌ؒൣғΛΫΤϦʹؚΊΒΕΔ

Slide 25

Slide 25 text

࣌ܥྻσʔλϕʔεͷ֓೦ • ࣌ܥྻσʔλϕʔεͷఆٛΛຬͨ͢΋ͷ • ࣌ܥྻσʔλϕʔε΁ͷΑ͋͘Δػೳཁٻ • ෼ࢄ/ΫϥελϦϯά • Function • Rollup Aggregation / λά • σʔλղ૾౓ • ΠϯλϑΣʔε

Slide 26

Slide 26 text

࣌ܥྻDBͷ෼ྨ TSDB on DBMS TSDB standalone OpenTSDB InfluxDB KairosDB Blueflood Graphite DalmatinerDB Beringei

Slide 27

Slide 27 text

࣌ܥྻDBͷ෼ྨ TSDB on DBMS TSDB standalone OpenTSDB InfluxDB KairosDB Blueflood Graphite DalmatinerDB Beringei HBase Cassandra Elasticsearch Riak Core …

Slide 28

Slide 28 text

طଘͷ࣌ܥྻDBͷσϝϦοτ TSDB on DBMS TSDB standalone ෼ࢄγεςϜͱͯ͠ͷ ӡ༻ίετ͕ߴ͍ ෼ࢄγεςϜͱͯ͠ͷ ৴པੑΛଌΔͨΊͷ ࣮੷͕গͳ͍

Slide 29

Slide 29 text

طଘͷ࣌ܥྻDBͷσϝϦοτ TSDB on DBMS TSDB standalone Rollup AggregationʹରԠ͍ͯ͠ͳ͍ ΠϯλϑΣʔε͕େ͖͘มΘΔͷͰมߋίετ MackerelͷϫʔΫϩʔυͰΠϯϑϥίετ Λ཈͑ΒΕΔ͔Θ͔Βͳ͍

Slide 30

Slide 30 text

http://developer.hatenastaff.com/entry/2015/12/25/140233

Slide 31

Slide 31 text

ٕज़બ୒ͷϙΠϯτ • ಛʹσʔλϕʔε͸҆ఆ͢Δ͔Ͳ͏͔͕ॏཁ • ͋·Γ࢖ΘΕ͍ͯͳ͍OSSͷ࠾༻͸ආ͚͍ͨ • σʔλϕʔεܥͷOSS͸ݕূɾӡ༻ίετ͕ඇৗʹେ͖͍ • طଘͷ࣌ܥྻσʔλϕʔε͸ಋೖ·Ͱָ͕ͳ୅ΘΓʹɺॊ ೈੑ͕௿͍ • Πϯϑϥίετ͕ଟগ૿͑ͨͱͯ͠΋ɺࠓޙͷػೳ֦ॆ ΍ڝ߹༏ҐੑΛ֬อ͍ͨ͠

Slide 32

Slide 32 text

AWSϚωʔδυαʔϏε ͷ࠾༻

Slide 33

Slide 33 text

AWSϚωʔδυαʔϏε্ʹ ಠࣗͷ࣌ܥྻDBΞϓϦέʔγϣϯ Λ࣮૷

Slide 34

Slide 34 text

ͳͥAWS͔ • Amazon DynamoDBɺAmazon S3ɺAmazon Kinesis ͱ͍ͬͨϑϧϚωʔδυͳσʔλετΞ͕͋Δ • ੑೳΛ͓ۚʹ׵ࢉͯ͠ܭࢉ͠΍͍͢ • GCPɺAzureͳͲ͸ࣾ಺࣮੷͕ͳ͍ • Mackerelͷ੒௕଎౓΍ࠓޙ΍Γ͍ͨ͜ͱΛؑΈͯɺ͋ Δఔ౓ͷϩοΫΠϯΛड͚ೖΕΔ͜ͱʹܾఆ

Slide 35

Slide 35 text

ͳͥಠ࣮ࣗ૷͔ • MackerelͷཁٻΛຬ࣮ͨ͢૷͕ͳ͍ • ΋͘͠͸ཁٻΛຬ͔ͨ͢Ͳ͏͔Λݕূ͕ऴΘΔ·Ͱ ʹ͕͔͔࣌ؒΔ • AWSϚωʔδυαʔϏε࠾༻ʹΑΓσʔλϕʔεͷ ݕূ/ӡ༻ίετΛ࡟ݮͰ͖ΔͷͰɺͦͷ͔ΘΓͷ։ ൃ޻਺Λ֬อͰ͖Δ

Slide 36

Slide 36 text

ݱঢ়ͷ՝୊ (࠶ܝ) • ෛՙ෼ࢄͷӡ༻ίετͷ௿ݮ • σʔλอ࣋ظؒͷԆ௕ • σʔλϩετ଱ੑͷ޲্ • σΟεΫ࢖༻ޮ཰ͷ޲্

Slide 37

Slide 37 text

ෛՙ෼ࢄͷӡ༻ίετᶃ • Amazon DynamoDB/Amazon S3ͳͲͷϑϧϚωʔ δυαʔϏεͷར༻ʹΑΓɺӡ༻ίετΛ࡟ݮ • γϟʔσΟϯάͷͨΊͷΩʔͷઃܭΛؒҧ͑ͳ͚Ε ͹ɺ͓ۚΛ෷ͬͨ෼͚ͩI/Oεϧʔϓοτ͕εέʔϧ • αʔό௥Ճɾ࡟ݮ࡞ۀ͕ෆཁ

Slide 38

Slide 38 text

ෛՙ෼ࢄͷӡ༻ίετᶄ • ͱ͜Ζ͕DynamoDBͷσΟεΫI/Oίετ͕ߴ͍ • ࠓͷMackerelͷI/OΛ޻෉ͳ͠ͰDynamoDBʹ޲͚ΔͱΠ ϯϑϥίετ͕ܹ૿͢Δ • ݸʑͷσʔλϙΠϯτΛผʑʹॻ͖ࠐΉͷͰ͸ͳ͘·ͱΊ ͯॻ͖ࠐΈɺI/OίετΛԼ͛Δඞཁ͕͋Δ • ࠷ऴతʹ͸ɺલஈʹAmazon ElastiCache(Redis)Λ഑ஔ ͠ɺόοϑΝ૚ͱΈͨͯͯར༻͢Δ͜ͱʹͳͬͨ

Slide 39

Slide 39 text

σʔλอ࣋ظؒͷԆ௕ᶃ • DynamoDBͷσΟεΫ༰ྔ୯Ձ͸ײ֮తʹ͸͍҆ • ͔͠͠ɺS3ͷίετ͸ελϯμʔυετϨʔδͰ΋ DynamoDBͷ1/10ఔ౓ • ͜͜ͰίετΛු͔͓͚ͤͯ͹ɺଞͷػೳ֦ॆʹίετΛ ͋ͯΒΕΔͨΊɺͳΔ΂͘S3Λ࢖͍͍ͨ • S3ʹஔ͍͓͚ͯ͹ɺσʔλղੳܥͷAWSαʔϏεͱ࿈ܞ͠ ΍͍͢ͱ͍͏ͷ΋͋Δ

Slide 40

Slide 40 text

σʔλอ࣋ظؒͷԆ௕ᶄ • Mackerelͷ৔߹ɺݹ͍ߴղ૾౓σʔλ͸΄ͱΜͲࢀর ͞Εͳ͍ (ࢀরہॴੑ) • ࢀরճ਺͕গͳ͍σʔλͷදࣔ͸ɺଟগϨεϙϯε͕ ஗ͯ͘΋Α͍ • ͜ͷੑ࣭Λར༻͠ɺϗοτσʔλΛDynamoDBɺίʔ ϧυσʔλΛS3ʹ഑ஔ͢Δ͜ͱͰίετ࠷దԽ͢Δ

Slide 41

Slide 41 text

͜ͷ࣌఺Ͱ ֊૚ܕσʔλετΞΞʔΩςΫνϟ ʹͳΔ͜ͱ͕ܾఆ

Slide 42

Slide 42 text

σʔλϩετ଱ੑͷ޲্ • σΟεΫॻ͖ࠐΈ͢ΔϝοηʔδΩϡʔΛ࠾༻ • OSSͰ͋Ε͹Kafka΍RabbitMQͳͲ • AWSͰ͸ɺAmazon Kinesis Streams • ௚ۙͷ24࣌ؒ෼ͷϨίʔυΛσΟεΫʹอଘ • AWS LambdaʹϨίʔυΛ౉͢͜ͱ͕؆୯

Slide 43

Slide 43 text

σΟεΫ࢖༻ޮ཰ͷ޲্ • σʔλߏ଄(ޙड़)͕શ͘ҟͳΔͨΊɺະདྷͷྖҬΛ֬ อ͢Δ͜ͱ͸͠ͳ͍ͷͰɺແବ͕ͳ͍ • ଞͷOSSͷ࣌ܥྻDB͕࣮૷͍ͯ͠ΔΑ͏ͳѹॖอଘ ͸΍Βͳ͍ • S3Λར༻͢Δ͜ͱͰσΟεΫ࢖༻ίετΛԼ͍͛ͯ ΔͷͰѹॖอଘ͸΍Βͳͯ͘Α͍ͱ൑அ

Slide 44

Slide 44 text

ݱঢ়ͷ՝୊ͱղܾ ·ͱΊ ✓ ෛՙ෼ࢄͷӡ༻ίετͷ௿ݮ ➡ ElastiCacheͱDynamoDBʹΑΓεέʔϥ ϏϦςΟͱӡ༻ޮ཰Λ֬อ ✓ σʔλอ࣋ظؒͷԆ௕ ➡ S3ʹΑΓ༰ྔ୯Ձͷ௿͍ετϨʔδ

Slide 45

Slide 45 text

ݱঢ়ͷ՝୊ͱղܾ ·ͱΊ ✓ σʔλϩετ଱ੑͷ޲্ ➡ Kinesis StreamsΛલஈʹ഑ஔ ✓ σΟεΫ࢖༻ޮ཰ͷ޲্ ➡ σΟεΫ࢖༻ޮ཰Λҙࣝͨ͠σʔλߏ଄ͱ S3ͷར༻

Slide 46

Slide 46 text

࣌ܥྻσʔλΛಡΈग़͢෦෼Λ Microservicesͱͯ͠։ൃ

Slide 47

Slide 47 text

Microservicesͷ։ൃ • Graphiteޓ׵ͷΠϯλϑΣʔεΛ࣮૷͠ɺΠϯλϑΣʔ εมߋίετΛ࠷খԽ • MackerelͰ͸ຊମΞϓϦέʔγϣϯ͸ScalaɺαςϥΠτ ͷΞϓϦέʔγϣϯ͸GoͳͷͰɺࠓճ΋GoΛ࠾༻ • ੑೳ޲্ͷͨΊʹσʔλετΞ΁ฒߦͯ͠ΫΤϦൃߦ͢ Δ͜ͱ͕༧૝Ͱ͖ͨͷͰɺܰྔεϨουΛ΋ͭGo͸Α͍ બ୒

Slide 48

Slide 48 text

৽࣌ܥྻσʔλϕʔε ΞʔΩςΫνϟͷઃܭ

Slide 49

Slide 49 text

৽࣌ܥྻDBΞʔΩςΫνϟ֓ཁ • ۚમίετ࠷దԽͷͨΊʹࢀরہॴੑΛར༻ • ϗοτσʔλΛDynamoDBɺίʔϧυσʔλΛS3ʹ഑ஔ • writeόοϑΝͱͯ͠Amazon ElastiCache(Redis)Λར༻ • DynamoDBͷTTLػೳʹΑΓγʔϜϨεʹσʔλҠಈ • ॻ͖ࠐΈΛAmazon Kinesis StreamsͰड৴͠ɺσʔλϩ ετ଱ੑͱ଱ো֐ੑͷ޲্ • Graphiteޓ׵ΠϯλϑΣʔεͰ֤ετϨʔδ͔Βσʔλऔ ಘ͢ΔWebΞϓϦέʔγϣϯΛ࣮૷

Slide 50

Slide 50 text

σʔλετΞؒͷγʔϜϨεͳσʔλҠಈ • ෳ਺ͷσʔλετΞΛ૊Έ߹ΘͤΔ৔߹ɺσʔλΛγ ϯϓϧͳख๏ͰҠಈͤ͞Δ͜ͱ͕೉͍͠ • 2017೥2݄ʹDynamoDB͕TTLαϙʔτ • ΞΠςϜ୯ҐͰTTLΛઃఆՄೳ • DynamoDB TriggersʹΑΓɺTTLΠϕϯτΛܖػʹ LambdaΛىಈ • DynamoDB͔ΒS3΁ͷݹ͍σʔλͷҠಈ͕༰қʹ

Slide 51

Slide 51 text

Mackerel ࣌ܥྻσʔλ֓؍ ࣌ܥྻ σʔλϕʔε .BDLFSFM "QQ 4DBMB "HFOU ϝτϦοΫ ౤ߘ read/write datapoints 6TFS άϥϑදࣔ

Slide 52

Slide 52 text

write datapoints Kinesis Streams Lambda read datapoints ElastiCache DynamoDB Lambda TTL expired flush write Web App (Golang) S3 read read read

Slide 53

Slide 53 text

write datapoints Kinesis Streams Lambda read datapoints ElastiCache DynamoDB Lambda TTL expired flush write Web App (Golang) S3 read read read

Slide 54

Slide 54 text

write datapoints Kinesis Streams Lambda read datapoints ElastiCache DynamoDB Lambda TTL expired flush write Web App (Golang) S3 read read read ֊૚ܕσʔλετΞ Buffer Hot Data Cold Data

Slide 55

Slide 55 text

write datapoints Kinesis Streams Lambda read datapoints ElastiCache DynamoDB Lambda TTL expired flush write Web App (Golang) S3 read read read ίϯϙʔωϯτؒ ͷ઀ଓ

Slide 56

Slide 56 text

write datapoints Kinesis Streams Lambda read datapoints ElastiCache DynamoDB Lambda TTL expired flush write Web App (Golang) S3 read read read 3छྨͷσʔλϕʔε͔Β σʔλΛಡΈग़͢ WebΞϓϦέʔγϣϯ

Slide 57

Slide 57 text

write datapoints Kinesis Streams Lambda read datapoints ElastiCache DynamoDB Lambda TTL expired flush write Web App (Golang) S3 read read read DynamoDB TTLʹΑΔ γʔϜϨεͳσʔλҠಈ

Slide 58

Slide 58 text

৽࣌ܥྻσʔλϕʔε ΞʔΩςΫνϟͷ࣮૷

Slide 59

Slide 59 text

ΞʔΩςΫνϟͷ࣮૷ • σʔλߏ଄ • RedisͰͷόοϑΝϦϯά • Graphiteޓ׵ΞϓϦέʔγϣϯͷI/OଟॏԽ ※࣮૷͸࣌ܥྻσʔλϕʔεݻ༗ͷ࿩ʹͳΔ

Slide 60

Slide 60 text

σʔλߏ଄ ϝτϦοΫ໊ [ ɹ… ] : {timestamp, value} Key Value ※࣮ࡍʹ͸ɺ֤ετϨʔδ͝ͱʹ޻෉͕͋Δ

Slide 61

Slide 61 text

σʔλߏ଄ ϝτϦοΫ໊ [ ɹ… ] Key Value άϥϑදࣔͰ͸࣌ܥྻʹฒΜͩσʔλϙΠϯ τΛҰ੪ʹಡΈऔΔ

Slide 62

Slide 62 text

RedisͰͷόοϑΝϦϯά • cronͷΑ͏ͳόονॲཧʹΑΔϑϥογϡ͸ͨ͘͠ͳ͍ • Redis্ͷಉҰϝτϦοΫͷσʔλϙΠϯτ਺͕ҰఆҎ্ʹͳ ΔͱDynamoDBͷରԠ͢ΔϨίʔυʹϑϥογϡॻ͖ࠐΈ • ʮ࣌ܥྻʯσʔλͳͷͰɺಉ࣌ʹಉ͡ܥྻͷσʔλϙΠϯτ͸ ౸ண͠ͳ͍ͨΊɺόοϑΝͯ͠଴ͭඞཁ͕͋Δ • Lambda Function্ͰσʔλϙΠϯτ͕౸ண͢ΔͨͼʹɺϙΠ ϯτ਺͕ҰఆҎ্͔Ͳ͏͔൑ఆ͠ɺDynamoDB΁ϑϥογϡ

Slide 63

Slide 63 text

RedisͰͷόοϑΝϦϯά ϝτϦοΫ໊ [ ɹ… ] Redis DynamoDB ϝτϦοΫ໊ [ ɹ… ] Flush >= Nݸ

Slide 64

Slide 64 text

Graphiteޓ׵ΞϓϦέʔγϣϯͷI/OଟॏԽ • I/OଟॏԽʹΑΔಡΈग़͠࠷దԽ͸ੑೳ؍఺Ͱඞਢ • 1ͭͷϝτϦοΫॲཧʹରͯ͠goroutineΛׂΓ౰ͯ • ElastiCache/DynamoDB/S3ͷ֤σʔλετΞͷॲཧʹର ͯ͠goroutineΛׂΓ౰ͯ • ֤σʔλετΞ಺ͷ1Ϩίʔυʹରͯ͠goroutineׂΓ౰ͯ • ͨͩ͠DynamoDBʹ͍ͭͯ͸BatchGetItem APIΛར༻

Slide 65

Slide 65 text

Graphiteޓ׵ΞϓϦέʔγϣϯͷI/OଟॏԽ ElastiCache DynamoDB S3 . . . . . . . . . . . . ϝτϦοΫ goroutine Ϩίʔυ

Slide 66

Slide 66 text

ίʔυωʔϜ Diamond ݱࡏ։ൃத

Slide 67

Slide 67 text

·ͱΊ • Write-Intensive ApplicationͷAWSʹ͓͚ΔઃܭࣄྫΛ঺հ • Amazon ElastiCacheɺAmazon DynamoDBɺAmazon S3 Λ૊Έ߹Θͤͨ֊૚ܕσʔλετΞΞʔΩςΫνϟͷఏҊ • Amazon Kinesis StreamsɺAWS LambdaΛކͱͯ͠ίϯ ϙʔωϯτؒΛ઀ଓ • Amazon DynamoDB TTLʹΑΔγʔϜϨεͳσʔλ഑ஔ

Slide 68

Slide 68 text

ҰൠԽͷͨΊͷٞ࿦ • ඞͣ3֊૚ʹ͢Δඞཁ͸ͳ͍ • σΟεΫ࢖༻͕গͳ͚Ε͹ ElastiCache + DynamoDB • I/O͕গͳ͚Ε͹ DynamoDB + S3 • readϨΠςϯγΛؾʹ͠ͳ͚Ε͹ɺRedis + S3 • 3֊૚͋Ε͹ଟ͘ͷঢ়گͰίετΛ࠷దԽͰ͖Δ

Slide 69

Slide 69 text

DiamonDB https://github.com/yuuki/diamondb ※ݸਓ։ൃͷOSSϓϩμΫτͰ͋Γ MackerelͰ։ൃதͷ΋ͷͱ͸ίʔυϕʔε͕ҟͳΓ·͢

Slide 70

Slide 70 text

࣌ܥྻσʔλϕʔεͱ͍͏֓೦ ΛΫϥ΢υͷٕͰ࠶ߏங͢Δ ͸ͯͳ id:y_uuki AWS Summit Tokyo 2017

Slide 71

Slide 71 text

Mackerelలࣔϒʔε΁ ͥͻ͓ӽ͠Լ͍͞