Slide 1

Slide 1 text

͸ͯͳͷΠϯϑϥετϥΫνϟ ઃܭߏ૝ ϖύϘɾ͸ͯͳٕज़େձ ~ Πϯϑϥٕज़ج൫ ~ @෱Ԭɹɹɹɹɹid:masayoshi

Slide 2

Slide 2 text

ΞδΣϯμ • ࣗݾ঺հ • ͸͡Ίʹ • ͸ͯͳγεςϜ • ͳͥ෼ղͱ࠶ߏஙΛϏδϣϯʹͨ͠ͷ͔? • ࣾ಺ߏ੒؅ཧπʔϧ • ෼ղͱ࠶ߏஙྫͷ঺հ • ΞʔΩςΫνϟͷ෼ղͱ࠶ߏங • ػೳͷ෼ղͱ࠶ߏங

Slide 3

Slide 3 text

ࣗݾ঺հ • id:masayoshi • twitter: yoyogidesaiz • WebΦϖϨʔγϣϯΤϯδχΞ 2016೥ೖࣾ • ओʹωοτϫʔΫɺԾ૝αʔόج൫ํ໘ͷ୲౰

Slide 4

Slide 4 text

͸͡Ίʹ • ෼ղͱ࠶ߏஙʹΑ࣮ͬͯݱ͢ΔΠϯϑϥج൫ߏ૝Λ࿩͠·͢ • y_uukiͷൃදΑΓ΋͏Ұา۩ମతͳ಺༰Λ࿩͠·͢ • ͜͜Ͱ͍͏Πϯϑϥج൫͸ʮ͸ͯͳͷʯΠϯϑϥج൫Ͱ͢ • ࣄۀ಺༰,ن໛ʹΑͬͯΠϯϑϥج൫͸େ͖͘ҟͳΓ·͢ • ͥͻϖύϘɾ͸ͯͳͰͷҧ͍Λתೳ͍ͯͩ͘͠͞ʂ • SREຊ౳ΛಡΉͱGoogleͷΠϯϑϥج൫ʹ৮ΕΔ͜ͱ΋ ग़དྷΔͰ͠ΐ͏ ※1 https://landing.google.com/sre/book.html ※1

Slide 5

Slide 5 text

͸ͯͳγεςϜ

Slide 6

Slide 6 text

͸ͯͳγεςϜ • ෼ղͱ࠶ߏங • Repairable Infrastructure • ؍ଌͱ࣮ݧ • Experimental Infrastructure • ࠓճ͸ͪ͜Β͸ѻ͍·ͤΜ

Slide 7

Slide 7 text

ͳͥզʑ͸෼ղͱ࠶ߏஙΛϏδϣϯʹͨ͠ͷ͔?

Slide 8

Slide 8 text

10೥ͷॏΈ • ઌఔͷฐࣾy_uukiͷʮ͸ͯͳγεςϜߏ૝ʯ • 10೥΋ͭʹ͸? • ࣾ಺αʔόߏ੒؅ཧπʔϧ • ࣮ࡍʹ10೥ࢧ͑ͨ͸ͯͳͷΠϯϑϥج൫ͷத਻ • 2007೥ࠒ͔Β։ൃελʔτͨ͠ • վળ͠ͳ͕Βདྷ͕ͨ৭ʑͭΒ͘ͳ͖ͬͯͨ

Slide 9

Slide 9 text

ͪͳΈʹ2007೥͝Ζ(10೥લ)͸͜Μͳ࣌୅ʂʂ • CentOS5͕ϦϦʔε͞ΕΔ • Linux Kernel 2.60.20 ͕ϦϦʔε͞ΕKVM͕౷߹͞Εͨ • 2006೥ʹAWS S3, EC2͕αʔϏεఏڙ։࢝ • ౦ژϦʔδϣϯ͸2011೥։ઃ • iPhoneॳ୅͕ൃച • Android౥ࡌͷܞଳి࿩ൃച͕2008೥

Slide 10

Slide 10 text

2007೥ʹ࡞੒͞Εͨࣾ಺αʔόߏ੒؅ཧπʔϧ • ϋΠύʔόΠβʔܕͷԾ૝Ϛγϯલఏͷߏ੒ • σʔληϯλΛલఏʹͨ͠ઃܭ • ϥοΫྻͱ͔ిѹͱ͔ • αʔϏεͱϩʔϧͷ૊Έ߹ΘͤʹΑΔαʔό؅ཧ • Hatena-Blog—DB, Hatena-Blog—Proxy • αʔϏε,ϩʔϧʹج͍ͮͨDNSϨίʔυͷੜ੒ • db.hatena-blog.service.hosts 192.168.0.1 • ωοτϫʔΫʹԠͨ͡IPΞυϨεͷ෷͍ग़͠ • εςʔλε৘ใͷ؅ཧ(working, standby, maintenance,…) • ؂ࢹઃఆͷࣗಈઃఆ • αʔόຖʹϝτϦοΫΛRRDToolʹΑΔՄࢹԽ ·ͩ·ͩػೳ͸͋Δͧ!!!

Slide 11

Slide 11 text

طଘͷࣾ಺αʔόߏ੒؅ཧπʔϧͷྑ͔ͬͨ఺ • αʔϏεɾϩʔϧͱεςʔλεʹج͍༷ͮͨʑͳػೳ • DNSͷϨίʔυੜ੒ • σϓϩΠઌαʔόͷಛఆ • ؂ࢹઃఆͷࣗಈԽɺ؂ࢹͷ௨஌on,off • ͸ͯͳͷΠϯϑϥج൫Λ10೥ࢧ͑ͨ • վमΛॏͶͯෛ࠴΋ଟ͍͕͔ͬ͠Γࢧ͑ͨ

Slide 12

Slide 12 text

طଘͷࣾ಺αʔόߏ੒؅ཧπʔϧͷ໰୊఺ • ઐଐͷϝϯςφʔෆࡏ໰୊ • ࣾ಺πʔϧͷϝϯςφϯε͸์ஔ͞Ε͕ͪ • ߏ੒؅ཧπʔϧͰ͔͗͢Δ໰୊ • શ෦͕ґଘ͍ͯͯ͠มߋͷίετ͕ߴ͍ • ྑ͍OSS͕ग़ͨͱ͖ʹ͚ͦͩ͜Ҡߦ͢Δͷ͕೉͍͠ • ωοτϫʔΫଆͷػೳͳͲΛ੝ΓࠐΈ͗ͨ͢

Slide 13

Slide 13 text

ݱࡏͷࣾ಺αʔόߏ੒؅ཧπʔϧࣄ৘ • MackerelΛαʔό؂ࢹαʔϏεͱͯ͠ϦϦʔε • ߏ੒؅ཧπʔϧͷྑ͍ͱ͜ΖΛ࢒͠ɺࣾ಺ࣄ৘Λഉআ • αʔϏεʹͳΕ͹ϝϯςφʔ΋ͭ͘ʂʂ • ʮࣾ಺੡ͷΞϓϦέʔγϣϯΛOSSʹ͢Δʯͱࣅͨٞ࿦ • ͱ͸͍͑ࣾ಺ࣄ৘΋Πϯϑϥج൫Ͱ͸Χόʔ͢Δඞཁ͕͋Δ • MackerelΛ࢖͍ͭͭɺطଘͷߏ੒؅ཧπʔϧ΋ซ༻ • ࣾ಺ࣄ৘ΛΧόʔ͢Δɺ࣍ͷ10೥Λࢧ͑Δ৽نΠϯϑ ϥج൫ͷ੔උ͕ඞཁ

Slide 14

Slide 14 text

কདྷͷΠϯϑϥج൫ʹٻΊΒΕΔ͜ͱ • ઐଐͷϝϯςφϯε୲౰͕͚ͭΒΕͳ͍͜ͱ΋͋Δ • 10೥ઌΛݟӽͨ͠׬ᘳͳઃܭ͸΄΅ෆՄೳ • 3೥ఔ౓ͰϦϓϨʔε͢Δඞཁ͕͋Δ • શػೳΛશͯΛϦϓϨʔε͢Δඞཁ͸ͳ͍ Ұ෦ػೳΛ3೥ఔ౓ͰϦϓϨʔεՄೳͳΠϯϑϥج൫ Repairable Infrastructure

Slide 15

Slide 15 text

Repairable Infrastructure ~ ෼ղͱ࠶ߏங ~

Slide 16

Slide 16 text

Repairable InfrastructureΛ໨ࢦͨ͢Ίʹ • ෼ղͱ࠶ߏஙΛ͠ɺRepairable InfrastructureΛ໨ࢦ͢ • ΞʔΩςΫνϟͷ෼ղͱ࠶ߏங • ػೳͷ෼ղͱ࠶ߏங

Slide 17

Slide 17 text

ΞʔΩςΫνϟͷ෼ղͱ࠶ߏங ~ ෼ղͱ࠶ߏங ~

Slide 18

Slide 18 text

ΞʔΩςΫνϟͷ෼ղͱ࠶ߏங • ࠓ·Ͱͷ֊૚ߏ଄ΛҰճ෼ղ͠ɺ࠶ߏங • ໌֬ͳ୯ޠ͕ͳ͍ͱ͜Ζ͸৽ͨʹఆٛ • ࠶ఆٛྫΛ2ͭ঺հ

Slide 19

Slide 19 text

શମͷ࿦ཧϨΠϠʔߏ੒(چ) DataCenter or Cloud Container or Serverless Infrastructure Application 4FSWJDF" 4FSWJDF# 4FSWJDF$ *OGSBTUSVDUVSF $MPVE )PVTJOH • σʔληϯλ͔ΒΫϥ΢υͳͲେ͖ͳ؀ڥͷมԽ • αʔϏε਺͕૿͑Δͱ”ྫ֎ͳΠϯϑϥ”͕૿͍͑ͯ͘ • InfrastructureͰ࣮૷͢ΔͱαʔϏε͕૿͑Δͨͼʹվम͕ࠔ೉ • Applicationͱ͍͏ͷ΋Կ͔ҧ͏…

Slide 20

Slide 20 text

શମͷ࿦ཧϨΠϠʔߏ੒(৽) Resource Domestic Infrastructure Service Adapter Service Application 4FSWJDF" 4FSWJDF# 4FSWJDF$ *OGSBTUSVDUVSF $MPVE )PVTJOH 4FSWJDF"PS# 4FSWJDF$ • Service Adapter ͰαʔϏεࠩҟΛٵऩ • Domestic Infrastructure Ͱࣾ಺ࣄ৘Λٵऩ • Resource ͸AWSɺΦϯϓϨ؀ڥɺαʔόϨεͷϦιʔεͳͲ

Slide 21

Slide 21 text

Service Adapter LayerΛઃ͚ͨཧ༝ • Πϯϑϥج൫ΛRepairableʹ͢ΔͨΊ • ಛఆαʔϏεͷҝ΁ͷ֦ுΛ܁Γฦ͢ • αʔϏεͷมԽʹΠϯϑϥج൫͕௥͍͚ͭͳ͍ • ΞϓϦέʔγϣϯ΋RepairableʹͳΔ • ୲౰ྖҬͷ໌֬Խ • ΞϓϦέʔγϣϯΤϯδχΞ͕Πϯϑϥࣾ಺ࣄ৘ͷ೺Ѳ͸ࠔ೉ • ΠϯϑϥΤϯδχΞ͕֤αʔϏεͷίʔυঢ়گ೺Ѳ͸ࠔ೉ • Service Adapter͸྆ऀ͕৮Δ

Slide 22

Slide 22 text

%FCJBO %FCJBO αʔό಺ͷϨΠϠʔߏ੒ • γεςϜ(OS)ʹΠϯετʔϧ͞Ε͍ͯΔ΋ͷΛར༻͢Δ • OSͷมߋͷࡍͷӨڹ͕େ͖͍ => RepairableͰ͸ͳ͍ 1FSM 1FSM "11 "11 APP Layer OS Layer

Slide 23

Slide 23 text

%FCJBO %FCJBO $POUBJOFS DISPPU $POUBJOFS DISPPU αʔό಺ͷϨΠϠʔߏ੒ • APP͕͔ͭ͏lib, ϛυϧ΢ΣΞ, ࣮ߦ؀ڥΛՄೳͳݶΓ෼཭ • OSͷมߋ͕͠қ͍ => Repairable ! System Library Layer Local Library Layer 1FSM 1FSM 1FSM 1FSM "11 "11 APP Layer OS Layer

Slide 24

Slide 24 text

αʔό಺ͷϨΠϠʔߏ੒ • localͱsystemͷ෼཭Λ࣮ݱ͢ΔγεςϜ • rbenv, plenv, pyenv, mysqlenv,….. • chroot • ίϯςφٕज़ • ্هͷதͰ΋chroot͕γϯϓϧ͔ͭ൚༻ੑ͕ߴ͍ • docker͸ศར͕ͩɺ͜ͷͨΊ͚ͩʹ࢖͏ͷ͸ॏ͍ • ίϯςφٕज़ͷҰ෦(namespace)ͱchrootͷ૊Έ߹Θͤ • => drootͷ։ൃ • ͜Ε͸ػೳͷ෼ղͱ࠶ߏஙͱ͍͑Δ

Slide 25

Slide 25 text

ΞʔΩςΫνϟͷ෼ղͱ࠶ߏங • ͜ͷΑ͏ͳײ͡ͰΞʔΩςΫνϟΛ࠶ఆ͍ٛͯ͘͠ • ෼ղͱ࠶ߏங͸ιϑτ΢ΣΞ΍ωοτϫʔΫΛࢀߟʹ

Slide 26

Slide 26 text

ػೳͷ෼ղͱ࠶ߏங ~ ෼ղͱ࠶ߏங ~

Slide 27

Slide 27 text

ػೳͷ෼ղͱ࠶ߏங • ػೳͷ෼ղͱ࠶ߏங • ࠶ߏஙͨ͠ΞʔΩςΫνϟͷద߹͢ΔΑ͏ʹ෼ղ͠࠶ߏங • ద߹͢ΔOSS, ϚωʔδυαʔϏεΛ୳͢ • ػೳ͕଍Γͳ͚Ε͹ + αͰ࣮૷͢Δ • ࣮૷ͷࡍʹ͸Repairable͔Ͳ͏͔ߟྀ࣮ͯ͠૷͢Δ • ࠶ͼ෼ղͱ࠶ߏங͕Ͱ͖Δ΋ͷ͔ • ґଘϞδϡʔϧͷଟ͞ɺ࣮૷͕େม͞ͳͲ • কདྷద߹ͨ͠OSS͕ग़͖ͯͨͱ͖ʹҠߦͰ͖Δ͔

Slide 28

Slide 28 text

ػೳͷ෼ղͱ࠶ߏஙྫ • droot • ฐࣾy_uukiͷൃදͰ͋ͬͨͷͰলུ • IP Drawer • IP෷͍ग़͠ػೳͷ࣮૷

Slide 29

Slide 29 text

IP෷͍ग़͠ػೳ͕ཉ͔ͬͨ͠ཧ༝ • Ծ૝αʔό࡞੒࣌ͷIPΞυϨεܾఆ • DHCPαʔόΛαʔϏεͷՄ༻ੑͰӡ༻ͨ͘͠ͳ͍ • ΦϯϓϨ͸Ծ૝αʔό࡞੒࣌ʹݻఆʹ͍ͨ͠ • EC2͸VPCͷDHCPͰ΍Γ͍ͨ • VIPͷܾఆ͸ਓ͕΍Γ͍ͨͷͰਓʹ΋෷͍ग़ͯ͠ཉ͍͠ • طଘͷߏ੒؅ཧπʔϧ͔ΒIP෷͍ग़͠ػೳΛ෼཭͍ͨ͠ • ෼ղͱ࠶ߏங • ඞཁͳͷ͸ओʹIPΞυϨεͷ෷͍ग़͠ • DHCPαʔόͰREST APIରԠ͍ͯ͠Δͷ͕Kea͙Β͍ͩͬͨ • IP෷͍ग़ͯ͠ཉ͍͙͠Β͍ͩͬͨͷͰͰ͔ͦ͏ͩͬͨ • golangͱRedisͰαΫοͱΞϧόΠτʹ࡞ͬͯ΋Βͬͨ

Slide 30

Slide 30 text

࣮ࡍͷ࣮૷ • IPΞυϨεͷ෷͍ग़͠͸RESTͰߦΘΕΔ • DHCPϓϩτίϧͷ࣮૷͸΍Βͳ͔ͬͨ • DHCP͔ΒͷҠߦָ͕ͩ͠ฒߦӡ༻ՄೳͰ࢖༻Λ΍ΊΔ͜ͱ΋೉͘͠ͳ͍ ਓ *1%SBXFS 71$ %)$1 αʔό αʔό IP෷͍ग़͠ IP෷͍ग़͠ IPϦϦʔεࡁΈ IPϦϦʔεࡁΈ IPϦϦʔεࡁΈ IP෷͍ग़͠ DHCPͰઃఆ͍ͨ͠ IPݻఆͰઃఆ͍ͨ͠ IPखಈͰઃఆ͍ͨ͠

Slide 31

Slide 31 text

ػೳͷ෼ղͱ࠶ߏங • ࠶ߏங͠ͳ͍Ͱద߹͢ΔͳΒͦΕΛར༻͢Δ • μϝͦ͏ͳΒࣾ಺ࣄ৘Λߟྀ͠ɺബ͍࣮૷Λ͢Δ • Domestic Infrastructure Layer͸ബ͘ • ద߹͢Δ΋ͷ͸ੵۃతʹ Resource LayerͰ • ୤ग़ɺϑϧεΫϥονͷେม͞Λߟྀ࣮͠૷ΛબͿ

Slide 32

Slide 32 text

·ͱΊ • ϏδϣϯΛࣔ͢͜ͱʹΑΓઓུతʹվળΛ͢Δ • ݱࡏ͸෼ղͱ࠶ߏஙʹΑΓΞʔΩςΫνϟͳͲΛఆٛ • ΞʔΩςΫνϟʹैͬͯػೳͷ෼ղͱ࠶ߏங • ػೳͷ੾Γग़͠Λ͢Δ͔ͳͲͷ൑அج४ʹ • ࠓޙ͸؍ଌͱ࣮ݧ΋ճͯ͠ߦ͖͍ͨ • MackerelΛ࠷େݶར༻ͨ͠؍ଌ • ࣮ݧͱϑΟʔυόοΫ੍ޚ