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ʹ͓͚Δ Cloud NativeͷऔΓΈͱ νʔϜ༩͑ͨมԽ CloudNative Days Tokyo 2020
Slide 2
Slide 2 text
ࣗݾհ ● ࠓҪ൏ਓ (id:hayajo_77 / @hayajo) ● גࣜձࣾͯͳ ● MackerelνʔϜ ● SRE https://developer.hatenastaff.com/entry/2019/06/10/120000
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
Cloud Nativeͱ
Slide 8
Slide 8 text
“εέʔϥϒϧͳΞϓϦέʔγϣϯΛߏஙɾ ࣮ߦ͢ΔͨΊͷೳྗΛ৫ʹͨΒ͢” https://github.com/cncf/toc/blob/master/DEFINITION.md
Slide 9
Slide 9 text
Cloud NativeΛ࣮ݱ͢Δʹ
Slide 10
Slide 10 text
2ͭͷΞϓϩʔν͕ඞཁ ● εέʔϥϒϧͳΞϓϦέʔγϣϯͷߏங ○ ճ෮ੑɺཧྗɺՄ؍ଌੑͷ͋ΔγεςϜͷߏங ○ Cloud Native Trail Map, Cloud Native Landscape ● εέʔϥϒϧͳΞϓϦέʔγϣϯͷӡ༻ ○ ΞϓϦέʔγϣϯͷ։ൃɺϦϦʔεɺӡ༻ϑϩʔͷ࣮ફ ○ DevOpsϓϥΫςΟε
Slide 11
Slide 11 text
ࠓճͷ͓
Slide 12
Slide 12 text
Cloud NativeͷऔΓΈͱνʔϜʹ༩͑ͨӨڹ 1. ίϯςφσβΠϯύλʔϯʹΑΔઃܭ 2. ϞχλϦϯάαΠυΧʔͷ։ൃ 3. OpenTelemetryϥΠϒϥϦͷ։ൃ 4. CI/CDͷߏங 5. Ҡߦ࣌ͷΧφϦΞϦϦʔε 6. SLOΛఆٛ 7. ϚωʔδυαʔϏεͷҠߦ 8. Terraformͷ࠾༻ 9. োରԠԋश 10. ίϯςφνΣοΫϦετͷ࡞ ͦΕͧΕͷऔΓΈؔ࿈͍͋ͬͯ͠ΔͨΊɺհॱ࣮ࡍʹऔΓΜͩॱংΛө͍ͯ͠ΔͷͰ͋Γ·ͤΜɻ
Slide 13
Slide 13 text
1. ίϯςφσβΠϯύλʔϯʹΑΔઃܭ
Slide 14
Slide 14 text
1. ίϯςφσβΠϯύλʔϯʹΑΔઃܭ ~ͬͨ͜ͱ~ ● ίϯςφԽͨ͜͠ͱͰΞϓϦέʔγϣϯઃܭ͕มԽ ● ίϯςφσβΠϯύλʔϯʹΑΔઃܭΛߦ͏Α͏ʹͳͬͨ ○ αΠυΧʔɺΞϯόαμɺΞμϓλͳͲ ● ίϯςφ୯ҐͰؔ৺Λ͠ɺσβΠϯύλʔϯʹԊͬͨܗͰػೳ Ճػೳͷڞ௨Խɺૄ݁߹ԽΛਤͬͨ ○ ࢹػೳΛՃ͢ΔΤʔδΣϯτϝοηʔδΩϡʔͱΓͱ Γ͢ΔϓϩΩγͳͲ
Slide 15
Slide 15 text
1. ίϯςφσβΠϯύλʔϯʹΑΔઃܭ ~νʔϜʹ༩͑ͨӨڹ~ ● ʮߏஙʯʹ༩͑ͨӨڹ ○ ΞϓϦέʔγϣϯͷґଘػೳΛίϯςφʹΓग़͢͜ͱͰίʔ υΛγϯϓϧʹͰ͖ͨ ○ ґଘػೳΛ࠶ར༻Մೳͳίϯςφͱͯ͠ϞδϡʔϧԽͰ͖ͨ ● ʮӡ༻ʯʹ༩͑ͨӨڹ ○ ػೳ͝ͱʹϦιʔεΛͰ͖ɺΞϓϦέʔγϣϯಈ࡞ͷӨ ڹΛগͳ͘͢Δ͜ͱ͕Մೳͱͳͬͨ
Slide 16
Slide 16 text
2. ϞχλϦϯάαΠυΧʔͷ։ൃ
Slide 17
Slide 17 text
2. ϞχλϦϯάαΠυΧʔͷ։ൃ ~ͬͨ͜ͱ~ ● ίϯςφͰಈ࡞͢ΔΞϓϦέʔγϣϯΛࢹ͢Δඞཁ͕͋Δ ○ Ϧιʔεͷར༻ঢ়گ ○ ΞϓϦέʔγϣϯґଘ͢ΔαʔϏεͷϝτϦοΫ ● ઐ༻ͷϞχλϦϯάΤʔδΣϯτΛ։ൃ ● αΠυΧʔίϯςφͱͯ͠σϓϩΠ
Slide 18
Slide 18 text
2. ϞχλϦϯάαΠυΧʔͷ։ൃ ~νʔϜʹ༩͑ͨӨڹ~ ● ʮߏஙʯʹ༩͑ͨӨڹ ○ αΠυΧʔʹ͢Δ͜ͱͰΞϓϦέʔγϣϯʹखΛೖΕΔ͜ͱͳ͘ࢹ ػೳΛՃ ○ ӡ༻ΤϯδχΞʹΑͬͯσϓϩΠ͞Εͦͷઃఆʹด͍ͯͨ͡ࢹػೳ ͕ɺ։ൃΤϯδχΞͰ؆୯ʹՃՄೳʹͳͬͨ ● ʮӡ༻ʯʹ༩͑ͨӨڹ ○ ࢹઃఆϑΝΠϧΛશʹɺઃఆ͢Δඞཁ͕ͳ͘ͳͬͨ ○ σϓϩΠϑϩʔ͕ίϯςφͷσϓϩΠʹ౷Ұ͞Εͨ
Slide 19
Slide 19 text
3. OpenTelemetryϥΠϒϥϦͷ։ൃ
Slide 20
Slide 20 text
3. OpenTelemetryϥΠϒϥϦͷ։ൃ ~ͬͨ͜ͱ~ ● ϞχλϦϯάαΠυΧʔΞϓϦέʔγϣϯ֎෦ ͔Βͷܭଌ ● ΑΓৄ͍͠ܭଌΞϓϦέʔγϣϯ෦Ͱߦ͏ඞཁ͕͋Δ ○ ΞϓϦέʔγϣϯΛվम͢Δ͜ͱʹͳΔ
Slide 21
Slide 21 text
3. OpenTelemetryϥΠϒϥϦͷ։ൃ ~ͬͨ͜ͱ~ ● ʰmackerelexporter-goʱ ○ https://github.com/mackerelio-labs/mackerelexporter-go ● ΞϓϦέʔγϣϯ෦Ͱܭଌ͠ɺͦͷσʔλΛMackerelΤΫε ϙʔτ͢ΔGoϥΠϒϥϦ
Slide 22
Slide 22 text
3. OpenTelemetryϥΠϒϥϦͷ։ൃ ~νʔϜʹ༩͑ͨӨڹ~ ● ʮߏஙʯʹ༩͑ͨӨڹ ○ ಛఆͷؔͷ࣮ߦ࣌ؒͳͲɺΞϓϦέʔγϣϯಈ࡞ʹؔΘΔ (APMͷΑ͏ͳ)ϝτϦοΫͷऔಘ͕༰қʹͳͬͨ ● ʮӡ༻ʯʹ༩͑ͨӨڹ ○ ΞϓϦέʔγϣϯ෦ͷڍಈʹৄ͘͠ͳ͍ӡ༻ΤϯδχΞͰ ΞϓϦέʔγϣϯͷৄࡉͳϞχλϦϯά͕࣮͘͢͠ͳͬͨ
Slide 23
Slide 23 text
4. CI/CDͷߏங
Slide 24
Slide 24 text
4. CI/CDͷߏங ~ͬͨ͜ͱ~ ● ίϯςφӡ༻ʹ߹ΘͤͨCI/CDΛ࠶ߏங ○ ैདྷͷCI/CDπʔϧͷӡ༻ɺڞ௨ج൫ͷσϓϩΠπʔϧ͔Βͷ ٫తͱͯ͋ͬͨ͠ ● ίϯςφϦϙδτϦΛڥքʹBuildͱReleaseΛ͚ͯߟ͑Δ ○ ૄ݁߹ʹ͢Δ͜ͱͰॊೈੑ্͕͕Γπʔϧͷબࢶ͕͕Δ
Slide 25
Slide 25 text
4. CI/CDͷߏங ~ͬͨ͜ͱ~ ● Build Stage ○ Ռ (ΞʔςΟϑΝΫτ) Λ࡞͢Δεςʔδ ○ ςετɺίϯςφΠϝʔδͷϏϧυɺϦϙδτϦͷPUSH ○ GitHub Actions (or Jenkins) ● Release Stage ○ ՌΛϦϦʔε͢Δεςʔδ ○ PUSH͞ΕͨίϯςφΠϝʔδͷσϓϩΠ ○ CodePipeline + CodeDeploy
Slide 26
Slide 26 text
GitHub GHA or Jenkins Code Pipeline Code Deploy ECS ECR S3 Build Stage Release Stage 4. CI/CDͷߏங ~ͬͨ͜ͱ~ Test/Build Push Image Put Metadata Get Metadata Start Deployment Deploy Pull Image
Slide 27
Slide 27 text
4. CI/CDͷߏங ~νʔϜʹ༩͑ͨӨڹ~ ● ʮӡ༻ʯʹ༩͑ͨӨڹ ○ CI/CDπʔϧͷӡ༻ෛՙݮ ○ Blue/GreenσϓϩΠͷ࠾༻ ○ ؆୯ͳϩʔϧόοΫ ○ γϯϓϧͳϦϦʔεखॱͷ࣮ݱ
Slide 28
Slide 28 text
5. ҠߦظؒͷΧφϦΞϦϦʔε
Slide 29
Slide 29 text
5. ҠߦظؒͷΧφϦΞϦϦʔε ~ͬͨ͜ͱ~ ● طଘγεςϜ͔ΒECSஈ֊తʹτϥϑΟοΫΛྲྀ༷ͯ͠ࢠΛݟ ͭͭҠߦ͍ͨ͠ ● ALBͷWeightedRoutingΛར༻࣮ͯ͠ݱ ○ ҠߦରͷALBʹECS༻ͷλʔήοτάϧʔϓΛ࡞͠ɺECS λεΫWeightedRouting͢Δ ● σϓϩΠ࣌ʹCodePipelineͷLambdaͰઃఆ
Slide 30
Slide 30 text
5. ҠߦظؒͷΧφϦΞϦϦʔε ~ͬͨ͜ͱ~ Code Pipeline Code Deploy ECS Lambda ALB TG For EC2 TG For ECS Start Deployment Deploy Run Collect Task IPs Modify Listener Rule Register Task IPs Weighted Routing
Slide 31
Slide 31 text
5. ҠߦظؒͷΧφϦΞϦϦʔε ~νʔϜʹ༩͑ͨӨڹ~ ● ʮӡ༻ʯʹ༩͑ͨӨڹ ○ ECSҠߦظؒʹ͓͚ΔϦϦʔεͷϦεΫ͕ݮͬͨ ■ ෆ۩߹͕͋ͬͨ߹Ͱૣ͍ஈ֊Ͱؾͮ͘͜ͱ͕Ͱ͖ͨ ■ ΞϓϦέʔγϣϯઃఆΛΓସ͑Δඞཁͳ͘ɺ WeightedRoutingͷൺΛઃఆͯ͠σϓϩΠ͚ͩ͢͠Ͱ؆ ୯ʹݩͷঢ়گʹ͢͜ͱ͕Ͱ͖ͨ
Slide 32
Slide 32 text
6. SLOΛఆٛ
Slide 33
Slide 33 text
6. SLOΛఆٛ ~ͬͨ͜ͱ~ ● SLO(αʔϏεϨϕϧඪ)Λఆٛ ○ MackerelνʔϜͰSREΛ࣮ફ͓ͯ͠ΓɺνʔϜͰSLOΛܾΊ ͍ͯΔ ● νʔϜͰ߹ҙͷ্ͰɺఆྔతͳஅʹΑͬͯ։ൃɾӡ༻ΛਐΊΔ͜ͱ ͕Ͱ͖Δ ○ Cloud NativeͷҠߦγεςϜͷมߋ͕͏ ○ ࣮ӡ༻͍ͯ͠ΔαʔϏεΛ҆৺ͯ͠Cloud NativeʹҠߦ͍ͯ͘͠
Slide 34
Slide 34 text
6. SLOΛఆٛ ~νʔϜʹ༩͑ͨมԽ~ ● ʮӡ༻ʯʹ༩͑ͨӨڹ ○ Ҡߦ࣌ͷޭϨΠςϯγʹΑΔΓ͠அ ■ ΧφϦΞϦϦʔεͷൺΓ͠ͳͲ ○ ϞχλϦϯά͍ͨ͠ϝτϦοΫ(SLI)͕໌֬ʹͳͬͨ ■ ϞχλϦϯάαΠυΧʔOpenTelemetryͰՄࢹԽ ○ ࠓ·Ͱհͨ͠औΓΈ༰ͱSREͷݪଇ͕૬ޓʹ࡞༻ͯ͠ӡ༻ ΛճͤΔΑ͏ʹͳͬͨ
Slide 35
Slide 35 text
7. ϚωʔδυαʔϏεͷҠߦ
Slide 36
Slide 36 text
7. ϚωʔδυαʔϏεͷҠߦ ~ͬͨ͜ͱ~ ● γεςϜશମΛεέʔϥϒϧʹ͢ΔͨΊʹΞϓϦέʔγϣϯ͕ґ ଘ͢Δίϯϙʔωϯτεέʔϥϒϧʹ͢Δඞཁ͕͋Δ ● ࣗલͰߏஙɺӡ༻ཧ͍ͯͨ͠ίϯϙʔωϯτΛϚωʔδυαʔϏ εҠߦͨ͠
Slide 37
Slide 37 text
7. ϚωʔδυαʔϏεͷҠߦ ~ͬͨ͜ͱ~ ● ʮAWS Purpose-Built Databases WeekʯͰElastiCacheͷҠߦࣄ ྫΛհ ● ʰMackerelͷ࣌ܥྻσʔλϕʔεʹ͓͚ΔRedis Clusterͷར༻ ͱAmazon ElastiCacheͷҠߦʹ͍ͭͯʱ ● https://speakerdeck.com/astj/aws-purpose-built-databases-week
Slide 38
Slide 38 text
7. ϚωʔδυαʔϏεͷҠߦ ʙ νʔϜʹ༩͑ͨมԽ ʙ ● ʮߏஙʯʹ༩͑ͨӨڹ ○ ෳࡶͳϓϩϏδϣχϯάπʔϧɺσϓϩΠπʔϧ͔Βͷ٫ ○ CloudFormation, TerraformͳͲͷϚωʔδυαʔϏεͱੑͷߴ͍ πʔϧʹΑͬͯߏஙָ͕ʹͳͬͨ ● ʮӡ༻ʯʹ༩͑ͨӨڹ ○ εέʔϥϒϧͰߴՄ༻ͳγεςϜΛ࣮ݱ ○ ཧʹඞཁͳखॱೳྗ͕গͳ͘ͳͬͨ ○ ΩϟύγςΟϓϥϯχϯά͕Γ͘͢ͳͬͨ
Slide 39
Slide 39 text
8. Terraformͷ࠾༻
Slide 40
Slide 40 text
8. Terraformͷ࠾༻ ~ͬͨ͜ͱ~ ● ͜Ε·ͰෳͷπʔϧΛͬͯΠϯϑϥߏங͍ͯͨ͠ ○ CloudFormation, Chef, CapistranoͳͲ ● ϚωʔδυαʔϏεҠߦ͢Δ͜ͱͰIaC͍͕͢͠Ͱ͖ͨ ● ϚϧνΫϥυରԠΛߟྀͯ͠TerraformΛ࠾༻ͨ͠
Slide 41
Slide 41 text
8. Terraformͷ࠾༻ ~ͬͨ͜ͱ~ ● MackerelνʔϜͰͷTerraform׆༻ͷ༷ࢠʮHashiTalks: Japan 2020ʯͰհ ○ ʰTerraformʹΑΔϓϥΫςΟεͷͱվળʱ ○ https://speakerdeck.com/heleeen/our-best-practice
Slide 42
Slide 42 text
8. Terraformͷ࠾༻ ~νʔϜʹ༩͑ͨมԽ~ ● ʮߏஙʯʹ༩͑ͨӨڹ ○ σϓϩΠ·ΘΓϚωʔδυαʔϏεʹҠߦͨ͜͠ͱͰ։ൃΤϯδχ ΞʹΘ͔Γ͍͢ίʔυԽ͕ਐΜͩ ○ ෳͷڥͰಉ͡Α͏ʹ࡞͢ΔϦιʔεఆٛΛϞδϡʔϧͱͯ͠ڞ ௨Խ͢Δ͜ͱͰߏஙͷෛ୲͕ݮͬͨ ● ʮӡ༻ʯʹ༩͑ͨӨڹ ○ γεςϜߏΛϦϙδτϦཧͯ͠։ൃϑϩʔʹࡌͤΔ͜ͱͰɺ։ൃ ΤϯδχΞͰมߋ͘͢͠ͳͬͨ
Slide 43
Slide 43 text
9. োରԠԋश
Slide 44
Slide 44 text
9. োରԠԋश ~ͬͨ͜ͱ~ ● ίϯςφӡ༻ϚωʔδυαʔϏεͷҠߦʹΑΓɺγεςϜͷ ཧɾӡ༻༷มΘΓ͖ͯͨ͠ ● ։ൃΤϯδχΞΛަ͑ͯোԋशΛ࣮ࢪ͠ɺΞʔΩςΫνϟͱӡ༻ खॱɺোରԠखॱΛֶͿ͜ͱͰͦͷཧղΛଅਐͨ͠
Slide 45
Slide 45 text
9. োରԠԋश ~ͬͨ͜ͱ~ ● ͜Ε·ͰͷোରԠԋशͷऔΓΈͪ͜Βͷࢿྉࢀর ○ ʮϓϩμΫτΛ10ӡ༻͢Δ νʔϜΛͭ͘Δʯ ○ https://speakerdeck.com/daiksy/devsumi2020?slide=39
Slide 46
Slide 46 text
9. োରԠԋश ~νʔϜʹ༩͑ͨมԽ~ ● ʮӡ༻ʯʹ༩͑ͨӨڹ ○ ίϯςφԽϚωʔδυαʔϏεͷར༻ͰɺϦιʔεͷ࠶ߏங खॱಛఆͷϛυϧΣΞͷਂ͍ࣝͳͲɺҎલʹൺΔͱӡ ༻ʹඞཁͳखॱೳྗ͕গͳ͘ͳͬͨͱ࣮ײͰ͖ͨ ○ ଐਓੑ͕ഉআ͞ΕͯνʔϜʹ৽͘͠ՃΘͬͨϝϯόʔͷΦϯϘʔ σΟϯά͕εϜʔζʹͳͬͨ
Slide 47
Slide 47 text
10. ίϯςφνΣοΫϦετͷ࡞
Slide 48
Slide 48 text
10. ίϯςφνΣοΫϦετͷ࡞ ~ͬͨ͜ͱ~ ● ଞνʔϜͰίϯςφӡ༻ͷҠߦ͕૿͖͑ͯͨ ● ͯ͢ͷνʔϜʹίϯςφӡ༻ʹৄ͍͠ΤϯδχΞ͕͍ΔΘ͚Ͱ ͳ͍ ● ίϯςφӡ༻ͷUnknown unknownsΛͳͨ͘͢ΊɺଞνʔϜͷΤϯ δχΞͱڠྗͯ͠ίϯςφӡ༻ͷݟΛνΣοΫϦετͱͯ͠·ͱ Ίͨ
Slide 49
Slide 49 text
10. ίϯςφνΣοΫϦετͷ࡞ ~ͬͨ͜ͱ~
Slide 50
Slide 50 text
10. ίϯςφνΣοΫϦετͷ࡞ ~͜ͷऔΓΈͰظ͢ΔมԽ~ ● ৽نίϯςφӡ༻ʹ͚ͨॳಈָ͕ʹͳΔ ● طଘͷίϯςφӡ༻ʹ͓͚Δߟྀ࿙Ε࣮ݱϨϕϧΛ֬ೝͰ͖Δ ● ৫શମͰCloud NativeʹऔΓΉʹɺϊϋࣄྫΛࣾͰڞ ༗͢Δ͜ͱ͕ॏཁ
Slide 51
Slide 51 text
νʔϜ༩͑ͨมԽͷ·ͱΊ
Slide 52
Slide 52 text
ଐਓੑͷഉআ ● औΓΈΛਐΊΔ͜ͱͰ։ൃΤϯδχΞɺӡ༻ΤϯδχΞͦΕͧΕ ͷྖҬ͕ࣗવʹ͍ۙͮͯΦʔόʔϥοϓ͢Δ෦͕૿͖͑ͯͨ ○ ίϯςφσβΠϯύλʔϯʹΑΔઃܭՄ؍ଌੑͷͨΊͷϥΠϒ ϥϦͷ։ൃɺIaCͳͲɺίϯςφΛத৺ͱͨ͠Cloud Nativeπʔ ϧͰ͜ΕΛ࣮ݱ͘͢͠ͳ͍ͬͯΔ ● ։ൃ͕εέʔϥϒϧʹͳ͖͍ͬͯͯΔ
Slide 53
Slide 53 text
ߏஙɾӡ༻ෛՙͷݮ ● ϚωδϝϯταʔϏεͷҠߦCloud Nativeπʔϧͷ׆༻Ͱεέʔ ϥϒϧͳγεςϜͷߏங͕؆୯ʹͳͬͨ ● ίϯςφΛϕʔεͱͨ͠ճ෮ੑͷ͋ΔߴՄ༻ͳγεςϜϦϦʔε࡞ ۀͷվળʹΑΓɺӡ༻ෛՙ͕ݮͨ͠
Slide 54
Slide 54 text
Cloud NativeͱSREͷ૬ޓ࡞༻ ● SLOΛఆٛ͢Δ͜ͱͰఆྔతͳஅͰ҆৺ͯ͠Cloud NativeΛਐΊΔ ͜ͱ͕Ͱ͖Δ ● Cloud NativeΛਐΊΔ͜ͱͰՄ؍ଌੑ͕ߴ·ΓɺSLOͷఆٛΛ࢝Ί ͱͨ͠SREΛ͞Βʹਪਐ͠ɺνʔϜΛεέʔϥϒϧʹͰ͖Δ ● ͦΕͧΕ͕࡞༻͠߹͍ɺੵۃతʹมԽ͍ͯͨ͘͠Ίͷ͕Ͱ͖ͭ ͭ͋Δ
Slide 55
Slide 55 text
·ͱΊ
Slide 56
Slide 56 text
·ͱΊ ● Cloud Nativeͷ࣮ݱʹ2ͭͷΞϓϩʔν͕ඞཁ ○ εέʔϥϒϧͳΞϓϦέʔγϣϯͷߏங ○ εέʔϥϒϧͳΞϓϦέʔγϣϯͷӡ༻ ● ྆ํΛ܁Γฦ͠ܧଓͯ͠औΓΉ͜ͱͰνʔϜʹมԽ͕ੜ·ΕΔ ● มԽ͕ੵΈॏͳΔ͜ͱͰCloud NativeͳνʔϜʹͳΔ
Slide 57
Slide 57 text
curl -sIL mackerel.io | grep career