Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
MackerelΛΦϯϓϨϛε͔Β AWSʹҠ͔ͯ͠Βͷ 1ΛৼΓฦΔ Hatena Engineer Seminar #11 id:astj
Slide 2
Slide 2 text
id:astjʢ͋͞ͱ͐͡ʔʣ ͯͳ ΞϓϦέʔγϣϯΤϯδχΞ ৽ଔ (2014/04) Mackerel ։ൃνʔϜ (2016/08~) Mackerel ςοΫϦʔυ (2018/05~)
Slide 3
Slide 3 text
Mackerel
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
No content
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
• 2014ϦϦʔεͷʮαʔόʔࢹαʔϏεʯ • αʔόʔαΠυ: Scala / Go • ػցֶशύʔτʢ։ൃதʂʣ: Python • AWS Lambda : NodeJS
Slide 8
Slide 8 text
ຊͷத • ΦϯϓϨϛε͔ΒAWSʹҠߦͨ͜͠ͱ • Ҡߦͯ͠ಘΒΕͨ͜ͱɾมΘͬͨ͜ͱ
Slide 9
Slide 9 text
༧උࣝ / ͝հ
Slide 10
Slide 10 text
On-Premises DC Office AWS Account A (Main) AWS Account B AWS Account C Dedicated Hosting ͯͳͷΠϯϑϥߏ …
Slide 11
Slide 11 text
ͯͳͷΠϯϑϥߏ On-Premises DC Office AWS Account A AWS Account B AWS Account C Dedicated Hosting … ΦϯϓϨϛεͷDCͱAWSʢͳͲʣΛซ༻ ྺ࢙తܦҢͰڞ௨ͷAWSΞΧϯτ αʔϏεʹΑͬͯಠཱΞΧϯτ
Slide 12
Slide 12 text
Mackerelͷߏ RDBMS (Postgres) Redis Tsdb (nginx) (nginx) reverse proxy (nginx) (nginx) (nginx) app (Scala) (nginx) (nginx) Sub- systems
Slide 13
Slide 13 text
hatena.mackerel.host1.cpu.user 2018/02/01T21:15:00Z 44.00 2018/02/01T21:16:00Z 6.00 2018/02/05T21:17:00Z 8.00 hatena.mackerel.host1.cpu.user 2018/02/01T21:15:00Z 44.00 2018/02/01T21:16:00Z 6.00 2018/02/05T21:17:00Z 8.00 hatena.mackerel.host1.cpu.user 2018/02/01T21:15:00Z 44.00 2018/02/01T21:16:00Z 6.00 2018/02/05T21:17:00Z 8.00 hatena.mackerel.host1.cpu.user 2018/02/01T21:15:00Z 44.00 2018/02/01T21:16:00Z 6.00 2018/02/05T21:17:00Z 8.00 … … ࣌ܥྻσʔλ
Slide 14
Slide 14 text
࣌ܥྻσʔλϕʔε • ΦϯϓϨϛε࣌: Graphite • http://graphite.readthedocs.org/ • AWS Ҡߦޙ: ϓϩμΫτ • ίʔυωʔϜ "diamond"
Slide 15
Slide 15 text
ΦϯϓϨϛε͔ΒAWS
Slide 16
Slide 16 text
ॳظͷ Mackerel ͷߏ • ϩʔϯνॳΦϯϓϨϛε • جຊతʹXenͰԾԽͨ͠VMӡ༻ • TsdbRDBͰϋΠεϖοΫͳཧαʔόΛ ԾԽͤͣར༻ • ioDrive (~380k IOPS Ͱେ༰ྔͰߴ͍)
Slide 17
Slide 17 text
՝ײ • αʔϏεʹ͍՝͕ग़͖ͯͨ • Graphiteͷӡ༻͕͍ͨΜ • σΟεΫ͕ΓΓຒ·ΔɾԽߏͷӡ༻ • εέʔϧΞτʹཧαʔόͷௐୡ
Slide 18
Slide 18 text
=> AWS
Slide 19
Slide 19 text
ʮ࣍ੈMackerelϓϩδΣΫτʯ
Slide 20
Slide 20 text
AWSҠߦ • TsdbͷΩϟύγςΟ֬อͷॊೈԽ • ηΩϡϦςΟରࡦج൫ͷॆ࣮ • ܭը => Ҡߦ·Ͱ͓Αͦ1 • Tsdbͷݕূɾ։ൃʹ࣌ؒͱΛେׂ͖͍ͨ͘
Slide 21
Slide 21 text
TsdbͷAWSҠߦ • ߴεϖοΫཧαʔόಉ༷ͷӡ༻ݫ͍͠ • EBSͰٻΊΒΕͨiopsग़ͤͳ͍ • ΦϯϓϨϛεͷ࣌Ͱӡ༻ෛՙ͋ͬͨ
Slide 22
Slide 22 text
࣍ੈTsdb: diamond DynamoDBΛ࣠ʹͨ͠ϚωʔδυαʔϏε த৺ͷ࣌ܥྻσʔλϕʔεΛ։ൃ • https://blog.yuuk.io/entry/the-rebuild-of-tsdb-on-cloud • https://itchyny.hatenablog.com/entry/2017/11/06/090000 • https://astj.hatenablog.com/entry/2018/02/06/175902
Slide 23
Slide 23 text
http://blog.yuuk.io/entry/the-rebuild-of-tsdb-on-cloud
Slide 24
Slide 24 text
Ҡߦϓϩηε
Slide 25
Slide 25 text
"࣍ੈͰΓ͍ͨ͜ͱ" ແݶʹͰͯ͘Δ
Slide 26
Slide 26 text
·ͣEC2ʹશ෦ͤΔ • είʔϓΛߜΔ • ʢͱ͍͑TsdbdiamondʹҠߦ͢Δʣ • Γ͚Մೳͳ෦͞ΒʹΓ͚Δ • ϦϦʔεཻΛۃྗখ͘͢͞Δ • ιϑτΣΞ։ൃͱಉ༷ʢܧଓతσϦόϦʔʁʣɹ
Slide 27
Slide 27 text
࡞ઓ
Slide 28
Slide 28 text
On-Premises DC AWS nginx app db redis tsdb (Graphite) subsystem Πϝʔδਤ STEP0 (ॳظঢ়ଶ)
Slide 29
Slide 29 text
On-Premises DC AWS nginx app db redis tsdb (Graphite) subsystem tsdb (diamond) Πϝʔδਤ STEP1 (tsdb)
Slide 30
Slide 30 text
STEP1 • ࣌ܥྻσʔλϕʔεͷ৽چ྆ํͷॻ͖ࠐΈ • ৽چͷࠩҟΛࣄલʹ֬ೝ͢Δ • ͜ͷ͋ͱ͠Β͘৽چ྆ํʹॻ͖ଓ͚Δ • ສ͕Ұͷ࣌ͷΓ͠ʹඋ͑Δ
Slide 31
Slide 31 text
On-Premises DC AWS nginx app db redis tsdb (Graphite) subsystem tsdb (diamond) Πϝʔδਤ STEP1 (tsdb)
Slide 32
Slide 32 text
On-Premises DC AWS tsdb (Graphite) subsystem app db redis tsdb (diamond) Πϝʔδਤ HTTP STEP2-1 (app etc) nginx
Slide 33
Slide 33 text
On-Premises DC AWS tsdb (Graphite) subsystem nginx app db redis tsdb (diamond) Πϝʔδਤ HTTP STEP2-2 (app etc)
Slide 34
Slide 34 text
STEP2 • ΞϓϦέʔγϣϯͱಉظతʹ௨৴͢ΔՕॴʢେʣ • subsystemΦϯϓϨϛεͷ·· • HTTPܦ༝ͷඇಉظ௨৴ͳͷͰ༨༟͕͋Δ • diamondͷ͓൸࿐͜ͷλΠϛϯά
Slide 35
Slide 35 text
On-Premises DC AWS tsdb (Graphite) subsystem nginx app db redis tsdb (diamond) Πϝʔδਤ HTTP STEP2 (app etc)
Slide 36
Slide 36 text
On-Premises DC AWS tsdb (Graphite) nginx app db redis tsdb (diamond) subsystem Πϝʔδਤ STEP3 (subsystem)
Slide 37
Slide 37 text
STEP3 • HTTPܦ༝Ͱ௨৴͢ΔαϒγεςϜͷҠઃ • ֎ܗࢹͷΫϩʔϥΛؚΉͷͰग़ޱIP͕มߋ • ࣄલࠂɻ͝ڠྗ͋Γ͕ͱ͏͍͟͝·ͨ͠
Slide 38
Slide 38 text
On-Premises DC AWS tsdb (Graphite) nginx app db redis tsdb (diamond) subsystem Πϝʔδਤ STEP3 (subsystem)
Slide 39
Slide 39 text
On-Premises DC AWS nginx app db redis tsdb (diamond) subsystem Πϝʔδਤ STEP4 (DONE!)
Slide 40
Slide 40 text
Ҡߦྃ • ύϑΥʔϚϯεɺඅ༻ͳͲΓ͠ͳ͠ͷஅ • STEP2͔Β1ϲ݄ଓ͚ͨฒߦՔಇΛऴྃ
Slide 41
Slide 41 text
࣮ࡍͷҠߦ
Slide 42
Slide 42 text
STEP1 (tsdb) • ෛՙࢼݧͯ͠ϦϦʔεՄೳͷஅ • astjSTEP2͕৺ͩͬͨ • ৽ن։ൃ = વաڈͷՔಇ࣮ͳ͍ • ࢥͬͨΑ͏ʹύϑΥʔϚϯεग़Δͷ͔ʁ
Slide 43
Slide 43 text
STEP2 (app etc) • ແఀࢭͷΓସ͑Λ࣮ࢪ • ସ࣌ʹΠϯελϯεোͰҰ෦σʔλফࣦ • ޙௐࠪ༰ͱ࠶ൃࢭࡦΛެ։ • https://mackerel.io/ja/blog/entry/2017/08/15/113803
Slide 44
Slide 44 text
STEP2 (app etc) • ࣌ؒͷΈͱ͍͑σʔλফࣦ • Ϣʔβ͞Μʹ͝໎Λ͓͔͚ͯ͠͠·ͬͨ • Ұํɺdiamond ʹؔͯ͠ͳ͘Քಇ • ؼ͔ͯ͠Βײ֒ʹ;͚͍ͬͯͨ
Slide 45
Slide 45 text
STEP3 (subsystem) • ͕ͭͭͳ͘Γସ͑ • ʢastj͜ͷٳՋͰͨ͠…ʣ
Slide 46
Slide 46 text
Ҡߦྃ
Slide 47
Slide 47 text
Ҡߦྃʁ
Slide 48
Slide 48 text
Ҡߦྃʁ • ʮ·ͣEC2ʹͤͨʯஈ֊ • ϚωʔδυαʔϏε (ex. RDS) ͷҠߦ༨ • “࣍ੈMackerel”ͷεςοϓΞοϓɹ
Slide 49
Slide 49 text
RDSͷ࣮ྫ࣌ؒ͢ ଟͳ͍Ͱ͢
Slide 50
Slide 50 text
RDSҠߦ • EC2Ҡߦॳ PostgreSQL 9.3 (EC2) • ϚωʔδυαʔϏεԽͰ DB ӡ༻ίετΛԼ͛Δ • EC2Ҡߦ࣌ͷΑ͏ͳোΛආ͚Δ͜ͱʹܨ͕Δ • ݕ౼ࣄ߲: Aurora for PostgreSQL
Slide 51
Slide 51 text
RDSҠߦ • 9.3 (EC2) => 9.3 (RDS) => 9.6 (RDS) • 2ճʹ͚ͯҠߦ • ͦΕͧΕఀࢭϝϯςφϯεΛ࣮ࢪ • ͝ཧղ/͝ڠྗ͋Γ͕ͱ͏͍͟͝·ͨ͠
Slide 52
Slide 52 text
ҠߦશମΛৼΓฦΔ • Ҡߦखॱͷׂਖ਼ղ • ΦϖϨʔγϣϯͱͯ͠DBସ͕ϔϏʔ • σʔλফࣦͰ͝໎Λ͓͔͚͠·ͨ͠
Slide 53
Slide 53 text
Ҡߦ͔ͯ͠ΒͷมԽ
Slide 54
Slide 54 text
ΩϟύγςΟ֬อͷॊೈੑ • tsdbͷεέʔϥϏϦςΟͷݒ೦ͷղফ • େنͳεέʔϧΞτ/Πϯ • ؾܰʹԾϚγϯͷ࡞/ഇغ͕ߦ͑Δ • ΠϯϑϥΤϯδχΞͷʮ͓ئ͍ʯ͕ෆཁʹ • ΠϯϑϥͷݕূɾߏஙͷεϐʔυΞοϓ
Slide 55
Slide 55 text
ӡ༻ͷखؒͷݮগ • ཧαʔόΛҙࣝͨ͠ӡ༻͔Βͷղ์ • ϚωʔδυαʔϏεԽ • ετϨʔδͷऔΓճ͠ͷྑ͞ • EBS snapshot
Slide 56
Slide 56 text
ΞʔΩςΫνϟબఆͷࣗ༝্ • ӡ༻ମྗͷඞཁʢͰ͋Ζ͏ʣίϯϙʔωϯτΛ ϚωʔδυͰར༻ग़དྷΔ • Kinesis Data Streams, Lambda, DynamoDB, ... • ৽نߏஙՕॴͰࣗવͱ࠾༻ग़དྷΔ • ػցֶशػೳͰͷ AWS Batch, ...
Slide 57
Slide 57 text
ศར
Slide 58
Slide 58 text
ͱ͍͑
Slide 59
Slide 59 text
ཧڷʹདྷͨΘ͚Ͱͳ͍
Slide 60
Slide 60 text
• αʔόɾωοτϫʔΫোࣗମଘࡏ • Ҿ͖ଓ͖ؤு͍͖ͬͯ·͠ΐ͏ • ԾϚγϯԾϚγϯ • Ҿ͖ଓ͖ؤு͍͖ͬͯ·͠ΐ͏ • ΑΓநͷߴ͍Πϯϑϥʁ
Slide 61
Slide 61 text
• ϚωʔδυαʔϏεʹ͋Θͤͨઃܭɾӡ༻ • ٕज़બఆ • ʮ͑ͦ͏͚ͩͲϋϚΒͳ͍ʯ • AWS APIΛར༻ͨ͠ӡ༻ઃܭ
Slide 62
Slide 62 text
No content
Slide 63
Slide 63 text
·ͱΊ
Slide 64
Slide 64 text
AWSʹҠߦͨ͠ɹ • ΩϟύγςΟΛओͳཁ݅ͱͯ͠AWSʹҠߦ • ஈ֊Λ౿ΜͰҠߦͨ͠ • TsdbDynamoDBத৺ʹ • ͦͷଞҰ୴EC2্ʹ • ͦͷޙঃʑʹϚωʔδυԽ
Slide 65
Slide 65 text
AWSʹҠߦͯ͠ • TsdbͷΩϟύγςΟʹک͑Δੜ׆ʹผΕ • ϚωʔδυαʔϏεΛੵۃతʹऔΓೖΕΒΕΔΑ͏ʹ • ӡ༻ͷखؒΛݮΒ͢ • ։ൃΞʔΩςΫνϟબࢶΛ૿͢ • ϓϩμΫτͷมߋΛߴΊΒΕ͍ͯΔ
Slide 66
Slide 66 text
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠