Slide 1

Slide 1 text

SREతνʔϜ։ൃTips΍ϕετϓϥΫςΟεͬ Ά͍Կ͔ 1 SRE Lounge #7ొஃࢿྉ ϝϧΧϦSRE: k-oguma (ktykogm)

Slide 2

Slide 2 text

ϝϧΧϦSREͷ୲౰ൣғ 2 ࠓ೔ͷτϐοΫ 01 SREsΛߟ͑Δ 02 Toilͷଊ͑ํ (ݾΛ஌Δ) 03 ઓུతSRE૊৫࿦ 04 SREۀ຿Ͱ΋औΓೖΕͨํ͕ྑ͍จԽ 05 GitΛ࢖ͬͨ։ൃͱCodeReview࠶ߟ 06 ·ͱΊ 07

Slide 3

Slide 3 text

whoami 3 id $(whoami) % uid=501(k-oguma) gid=20(sre-staff) 701(com.mercari) %

Slide 4

Slide 4 text

history 4 history % 1 Work as a system engineer and PMO assistant 2 Infra engineer at DC enterprise 3 Infra engineer at Game development 4 SRE at Mercari, Inc.

Slide 5

Slide 5 text

history 5 աڈʹ͸ ࢲ΋͋Δఔ౓ͷظؒɺҰਓͰ༷ʑͳࣄΛ΍ͬͯ ͖ͯɺ૑ۀ࣌ͷࣾ಺ج൫ߏங͔ΒαʔϏεͷϩʔ ϯνɺ্ͦͯ͠৔΋ܦݧ͍͖ͤͯͨͩ͞·ͨ͠ɻ

Slide 6

Slide 6 text

history 6 ݱ৬Ͱ͸ ৗʹΧΠθϯΛߟ͑ٞ࿦ΛΑ͘͢ΔจԽʹଟ͘ ͷֶͼΛಘ͍ͯ·͢ɻ

Slide 7

Slide 7 text

7 ຊ೔͸ɺͦ͏͍ͬͨܦݧͷڞ༗΋͍͖͍ͯͨ͠ ͱࢥ͍·͢ɻ ·ͨɺࠓ·Ͱ׆ಈ͖ͯͨ͠தͰɺSREͱͯ͠ͷ νʔϜ։ൃTips΍ϕετϓϥΫςΟεͬΆ͍෺Λ ͍͔ͭ͘͝঺հ͍ͨ͠ͱࢥ͍·͢ɻ

Slide 8

Slide 8 text

8 ͝஫ҙ " ͜ͷࢿྉ಺༰͸ࢲࣗ਎ͷݟղͰ͋Γɺඞͣ͠΋ϝϧΧϦSRE ͷཱ৔ɺઓུɺҙݟΛ୅ද͢Δ΋ͷͰ͸͋Γ·ͤΜ " ͋͘·ͰϕετϓϥΫςΟεతͳҐஔ෇͚Ͱ͢ " ֤اۀɺ֤νʔϜʹ߹ͬͨ΍Γํ͕͋Δͱࢥ͍·͢ͷͰࢀ ߟఔ౓ʹͲ͏ͧɻ " ༻๏༻ྔΛकͬͯਖ਼͓͘͠࢖͍͍ͩ͘͞

Slide 9

Slide 9 text

ϝϧΧϦSREͷ୲౰ൣғ 9

Slide 10

Slide 10 text

ϝϧΧϦSREͷ୲౰ൣғ 10 ·ͣɺϝϧΧϦͷSREͰ͸ݱࡏͲͷΑ͏ͳ͜ͱ Λ୲౰͍ͯ͠Δͷ͔ɺ֓ཁΛ঺հ͠·͢ɻ

Slide 11

Slide 11 text

ϝϧΧϦSREͷ୲౰ൣғ 11 • Monolithic architectureͷߏங΍ӡ༻อक(Devops)ɺ৴པੑͷ޲্ • ର৅Region = JP / US / UK • ͘͞ΒΠϯλʔωοτ, AWS, GCP • Microservices ʹ͍ͭͯ͸ɺޙ௥͍ͷ։࢝଴ͪɺΩϟονΞοϓظؒ • ࠓޙɺ֤υϝΠϯνʔϜʹ഑ଐ༧ఆɻৄࡉ͸ޙ΄Ͳɻ • Data platform։ൃɺDevOps of Data (ETL) • Security ରԠ • Middleware, Tool։ൃ

Slide 12

Slide 12 text

ϝϧΧϦSREͷ୲౰ൣғ 12 • Middleware, Tool։ൃ • Productͷػೳ։ൃ • e.g. cache control, DBIपΓͷߋ৽, maintenance mode࡞੒, etc • BI systemӡ༻ • ։ൃऀ͔ΒͷReviewґཔͷରԠͳͲ • Πϯϑϥઃܭ • Search Ops • ML Ops • On-Call • etc

Slide 13

Slide 13 text

ϝϧΧϦSREͷ୲౰ 13 ৴པੑʹؔΘΔ͜ͱ͸ɺجຊతʹରԠ

Slide 14

Slide 14 text

ϝϧΧϦSREͷ୲౰ൣғ 14 DevOps of Data: BIͷͨΊͷETL(Extract, Transform and Load)ର Ԡࣄྫɻ TBӽ͑ͷMySQL ڊେςʔϒϧΛ 1೔Ͱ BigQuery΁LOAD͢Δ PascalʙPuree + ngx_lua + Fluentd + BigQueryͰͭ͘ΔϝϧΧϦͷϩά෼ੳج൫ʙ

Slide 15

Slide 15 text

ϝϧΧϦSREͷ୲౰ൣғ 15 SRE͕੹೚Λ࣋ͬͯؔ༩͢ΔࣄͰɺຊ൪DB΁ͷෛՙ͕ߴ· ΔࣄΛ։ൃऀͱڞʹ཈͑Δಇ͖Λ͍ͯ͠·͢ɻ ͦ͏͢ΔࣄͰSite͚ͩͰ͸ͳ͘ɺ͓٬͞·͔ΒಘΒΕΔ৴པ ੑΛ্͛ΔΑ͏ʹ͍ͯ͠·͢ɻ

Slide 16

Slide 16 text

SREsΛߟ͑Δ 16

Slide 17

Slide 17 text

͜ͷষ͔ΒελʔτΞοϓͷ૑ۀ͔࣌Β༷ʑͳա౉ظͰSREͱ ͯ͠Ͳ͏ཱͪճΔͷ͕ྑ͍͔ɺͱ͍ͬͨ಺༰Λϕʔεʹ࿩Λਐ Ί·͢ɻ େखͷํ΋৽ͨͳ૊৫ͷ্ཱͪ͛ɺνʔϜ࠶ฤ੒ɺͦͯࣾ͠಺ ϕϯνϟʔ্ཱͪ͛౳ʹஔ͖׵͑ͯΈ͍ͯͩ͘͞ɻ 17

Slide 18

Slide 18 text

SREsΛߟ͑Δ 18 SREsͷϙδγϣϯ ϕʔεʹ͸DevͱOpsͷ ୤αΠϩԽΛ໨ࢦ͢ DevOpsͷ఩ֶ αΠϩԽͱ͸ɺ ֎෦ͱͷ࿈ܞΛ࣋ͨͣʹ ࣗݾத৺తͰݽཱ͍ͯ͠Δ ঢ়ଶ class SRE implements DevOps

Slide 19

Slide 19 text

19 SREsΛߟ͑Δ " αΠϩԽʹ͍ͭͯิ଍ " DevOps " Dev + OpsͰ։ൃͱӡ༻ͷ୤αΠϩԽΛ໨ࢦ͠·͢ " ޙʹઆ໌͢ΔMicroservicesͰ͸ɺαʔϏε͝ͱʹαΠϩԽΛ໨ࢦ͠· ͢ https://speakerdeck.com/mercari/mtc2018-microservices-platform-at-mercari

Slide 20

Slide 20 text

SREsΛߟ͑Δ 20 SREsͷϙδγϣϯ ͜ͷ͋ͨΓͷྖҬͷ ୲౰ൣғ͸֤ࣾʹΑͬͯ ҟͳΓ·͢ɻ ͦΕ͸ΤϯδχΞͷ εΩϧηοτ΍ઓུ΋ ؔ܎ɻ

Slide 21

Slide 21 text

SREsΛߟ͑Δ 21 ࣗ෼͸Ͳͷล?

Slide 22

Slide 22 text

SREsΛߟ͑Δ 22 ͋ͳͨ͸Ͳͷล?

Slide 23

Slide 23 text

SREsΛߟ͑Δ 23 ग़਎͸όϥόϥɻ ৽ଔ͔ΒͣͬͱSRE ͱ͍͏ਓ͸·ͩগͳ͍ɻ ಘҙ෼໺͸ ͦΕͧΕҧ͏ɻ

Slide 24

Slide 24 text

SREsΛߟ͑Δ 24 ଟ༷ੑ͕͋ΔνʔϜ͕ྑ͍

Slide 25

Slide 25 text

25 SREsΛߟ͑Δ " SREνʔϜ΋ू߹஌͕ඞཁ " ҟͳΔεΩϧηοτΛूΊͯશํ໘Ͱ৴པੑΛߴΊΔ૊৫Ͱ΋͋Δ " ϑϧελοΫͳਓ΋͍Δ " ઐ໳ੑͱଟ༷ੑ͕ೖΓࠞ͡Δ૊৫

Slide 26

Slide 26 text

SREsΛߟ͑Δ 26 SRE͕͍Δͱ͜Ε͚ͩΧόʔ͞ΕΔɻ

Slide 27

Slide 27 text

SREsΛߟ͑Δ 27 SRE͕͍ͳ͍໰୊ɻ ࠾༻Ͱ͖Δ·Ͱɺ։ൃऀ͕݉຿͢Δࣄ΋͋ΔͰ͠ΐ͏ɻ e.g.ʮ৴པੑͷ؅ཧ͕͠ΜͲ͘ͳ͖ͬͯͨʯ, ʮMicroservices΍ͬͯΔ͚Ͳো֐ ରԠͩΒ͚Ͱ͠ΜͲ͘ͳ͖ͬͯͨʯ, ʮSLO͕ܾΊΒΕͳ͍ʯ, ʮ૬ஊ૬ख͕͍ ͳ͍ʯ, ʮ΍Γํ͕ਖ਼͍͠ํ޲ʹ޲͔͍ͬͯΔ͔ෆ҆ͩʯ, etc ͱ͍ͬͨ͜ͱ͸ൃੜ͢Δͱࢥ͍·͢ɻ

Slide 28

Slide 28 text

SREsΛߟ͑Δ 28 SRE͕͍ͳ͍໰୊ɻ SREͱSREɺSREͱ։ൃऀͰͭͳ͕ΓΛ࡞Δ͜ͱ΋େ੾Ͱ͢Ͷɻ ͔ͩΒͦ͜ɺ͜ͷSREίϛϡχςΟΛօͰ੝Γ্͛ͯɺΤϯδχ ΞਓੜΛ๛͔ʹ͠·͠ΐ͏ɻ

Slide 29

Slide 29 text

29 ͔ͩΒͦ͜ɺ ஌൴஌ݾɺඦፌෆຆɻ ͕େ੾Ͱ͢Ͷɻ

Slide 30

Slide 30 text

30 ஌൴஌ݾɺඦፌෆຆɻ

Slide 31

Slide 31 text

31 ൴Λ஌ΓݾΛ஌Ε͹ඦઓຆ;͔Βͣ

Slide 32

Slide 32 text

32 ଙࢠͷฌ๏ " ఢΛ஌ΓݾΛ஌Ε͹ඦઓة͏͔Βͣ

Slide 33

Slide 33 text

33 ఢΛ஌ΓݾΛ஌Ε͹ඦઓة͏͔Βͣ " εΩϧ΍ܦݧҎ֎ͷࣗ෼ͷڧΈΛ஌Δ/஌ͬͯ΋Β͏ʹ͸ʁ " ݾͬͯɺࣗ෼͚ͩͰ͸ͳ͘νʔϜϝΠτͷڧΈΛཧղ͢Δʹ͸ʁ ࣗ෼΍஥ؒΛ஌Ε͹ɺఢ(ো֐ͳͲ৴པੑΛଛͳ ͏ڪΕ͕͋Δશͯͷ΋ͷ)ʹউͯΔ!!

Slide 34

Slide 34 text

34 ఢΛ஌ΓݾΛ஌Ε͹ඦઓة͏͔Βͣ ݴ͍׵͑ΔͳΒ͹ɺ উͭͨΊʹ͸ ࠓͷνʔϜͷঢ়ଶΛΑ͘஌ΓɺνʔϜϫʔΫΛ ׆ੑԽͤ͞Δ͜ͱ͕ॏཁͱ͍͏͜ͱͰ͢Ͷɻ

Slide 35

Slide 35 text

35 ఢΛ஌ΓݾΛ஌Ε͹ඦઓة͏͔Βͣ " ݾΛ஌Δ " ࣗ෼Λ஌Γ஥ؒΛ஌Δʹ͸? " ετϨϯάεϑΝΠϯμʔͱ͍͏΋ͷ͕ྑ͍Β͍͠! " ΍ͬͯΈͯྑ͔ͬͨ఺ " ؾ͕෇͔ͳ͔ͬͨࣗ෼ͷڧΈΛ஌ΕΔ " ஥ؒͷڧΈ΍ɺΑΓྑ͍઀͠ํΛ஌ΕΔ

Slide 36

Slide 36 text

36 ఢΛ஌ΓݾΛ஌Ε͹ඦઓة͏͔Βͣ

Slide 37

Slide 37 text

Toilͷଊ͑ํ (ݾΛ஌Δ) 37

Slide 38

Slide 38 text

Toil limit 38 Toilͱ͸SREຊ΋ग़ͯ͘Δ֓೦ 
 ToilͷՄೳੑ͕ߴ͍࡞ۀͱ͸
 • ख࡞ۀͰ͋Δ͜ͱ • ܁Γฦ͞ΕΔ͜ͱ • ࣗಈԽͰ͖Δ͜ͱ • ઓज़తͰ͋Δ͜ͱ • ௕ظతͳՁ஋Λ࣋ͨͳ͍͜ͱ • αʔϏεͷ੒௕ʹରͯ͠O(n)Ͱ͋Δ͜ͱ

Slide 39

Slide 39 text

Toil limit 39 • EM/PMͳͲؚΊͯؔ܎ऀશһ͕ཧղΛ͢Δ
 ඞཁ͕͋Δ͜ͱ • ͦΕ͸ɺɺɺToil͕SREػೳΛଛͳ͏ࣄ࣮

Slide 40

Slide 40 text

Toil limit 40 • Toil๾໓ʹूதͰ͖Δ༷ʹ͢Δඞཁ͕͋Δ • “νʔϜͷToil͕ࣄલʹܾΊͨᮢ஋ʢͨͱ͑͹ɺGoogleͷ ྫ: ΤϯδχΞͷೳྗ/޻਺ͷ50ˋͱ͍͏্ݶʣΛ௒͑Δ ͱɺ૊৫͸ঢ়گΛվળ͢ΔͨΊͷํ๏Λݟ͚ͭΔ͜ͱʹ ूதͰ͖·͢ɻ”

Slide 41

Slide 41 text

Toil limit 41 • “ΤϥʔόδΣοτͱಉ༷ʹɺ੍ݶΛݫक͢Δ” • Toil limit͸ɺSREs͕ظ଴͞ΕΔৼΔ෣͍ʹ͍ͭͯ߹ҙʹୡ ͢ΔͷΛॿ͚ɺϔϧϓ͕ඞཁͳͱ͖ʹ໌֬ͳγάφϧΛఏڙ ͠ɺ෇ՃՁ஋ͷͳ͍܁Γฦ͠࡞ۀ͕ຮԆΔ͜ͱΛආ͚·͢ɻ • ैདྷͷITӡ༻จԽͰ͸ɺνʔϜ͕͜ͷΑ͏ͳอޢΛड ͚Δ͜ͱ͸Ίͬͨʹ͋Γ·ͤΜɻ” http://shop.oreilly.com/product/0636920063964.do Seeking SRE:

Slide 42

Slide 42 text

Toil limit 42 “toilͷ֓೦͸ɺ఻౷తͳاۀӡӦͷจԽʹ ͸΄ͱΜͲଘࡏ͠·ͤΜ” http://shop.oreilly.com/product/0636920063964.do Seeking SRE:

Slide 43

Slide 43 text

Toil limit 43 ·ͣɺSREҎ֎ʹ΋SREͷಇ͖ํɺ৬຿ͱ ੹຿Λཧղͯ͠΋Β͏ඞཁ͕͋Γ·͢ɻ

Slide 44

Slide 44 text

Toil limit 44 ͦͯ͠ɺ੍ݶͱ߹ҙΛಘ͍͖ͯ·͠ΐ͏ɻ

Slide 45

Slide 45 text

45 Toil ͷัଊ

Slide 46

Slide 46 text

46 Toilͷัଊ " ToolͩͱToggl Λ࢖͏ͱඇৗʹΘ͔Γ΍͍͢ " 1on1౳Ͱ΋ݟͤΔͱཧղ͞Ε΍͍͢
 https://toggl.com/
 task categories tracking

Slide 47

Slide 47 text

47 Toilͷัଊ " ͔͠͠ɺଞͷλεΫ؅ཧπʔϧɺΧϯόϯπʔϧͳͲΛ࢖ͬͯ ͍ͯɺ྆ํ࢖͏ͷ͕େมͩͱ͍͏৔߹ " ͨͱ͑͹JIRA΍TrelloͩͬͨΒlabel ౳ͰܭଌͰ͖Δ༷ʹ͢ Ε͹ྑ͍ " JIRAͩͱඪ४Ͱ౷ܭπʔϧ͕૊Έࠐ·Ε͍ͯΔͷͰɺͦΕ ͰToilΛܭଌͰ͖Δ༷ʹ͢Δ

Slide 48

Slide 48 text

48 Toilͷัଊ " ΋͠΋Toilͷัଊ͕೉͍͠৔߹ " εϓϦϯτ͕Մೳͳঢ়گͳΒɺٯʹϕϩγςΟΛܭଌ͢Ε͹ ྑ͍
 “͔͠͠ɺToil͸୹࣌ؒͰ͋ΔɺׂΓࠐΈͰ͋Δɺ਺͕ଟ͍ɺ·ͨ͸ToilͱEngineering ͷ۠ผ͸࣮͸೉͍͠ͱ͍ͬͨΑ͏ʹܭଌ͕೉͘͠ͳΔΑ͏ͳੑ࣭Λ΋ͭɻ ͕ͨͬ͠ ͯɺ௚઀ToilΛܭଌ͢ΔͷͰ͸ͳ͘ɺϕϩγςΟΛܭଌ͢Δ͜ͱʹͨ͠ɻ” 2019೥SREߟ / Ώ͏͏͖ϒϩά/

Slide 49

Slide 49 text

ઓུతSRE૊৫࿦ 49

Slide 50

Slide 50 text

ઓུతSRE૊৫࿦ 50 ελʔτΞοϓ΍৽نࣄۀʹ͓ ͚Δ ֤εςʔδͷ SREͷ഑ଐܭը΍ SREͷཱͪճΓʹ͍ͭͯ

Slide 51

Slide 51 text

ઓུతSRE૊৫࿦ 51 ૑ۀ࣌ -> ϓϩμΫτͷ੒௕ظ -> ???? Ref. https://bfore.hongotechgarage.com/entry/evolution_of_a_product

Slide 52

Slide 52 text

ઓུతSRE૊৫࿦ 52 ૑ۀ࣌ (Early Phase) ·ͣɺϓϩμΫτ͕੒ޭ͠ͳ͍ͱSREͱͯͦ͜͠Ͱଓ͚Δ΋ͷ͕Ϗδ ωεͱͯ͠ͷՁ஋ΛߴΊΒΕ·ͤΜΑͶɻ ͦ͜Ͱ૑ۀ࣌͸ϓϩμΫτͷ੒ޭΛ༏ઌͰߟ͑ͯɺͦͷΠϯϑϥ΍Ξ ϓϦͷ৴པੑΛอͭͨΊͷ౒ྗʹूதͨ͠ํ͕ྑ͍ͱࢥΘΕ·͢ɻ ۩ମతʹ͸ɺ࣍ͷΑ͏ͳ΋ͷͰ͢ɻ

Slide 53

Slide 53 text

ઓུతSRE૊৫࿦ 53 ૑ۀ࣌: બ୒ͱूத •ूத͢΂͖΋ͷ •ΠϯϑϥઃܭɺΩϟύγςΟϓϥϯχϯά •ߏ੒؅ཧπʔϧͳͲͷબఆͱ࢖༻ •͜Ε͸࠷ॳ͔Β࢖͏ͷ͕๬·͍͕͠ঢ়گʹΑΔ •ྲّྀ΍ه๏ʹ͋·Γͩ͜ΘΓա͗ͳ͍ɺ൚༻ੑ͸ٻΊͳ͍ ͦ͏͸͍ͬͯ΋࠷௿ݶͷઃܭ ͸ɺ࠷ॳ͔Β͋Δఔ౓͓ͯ͠ ͍ͨํ͕ޙʑྑ͍Ͱ͢ɻ

Slide 54

Slide 54 text

ઓུతSRE૊৫࿦ 54 ૑ۀ࣌: બ୒ͱूத •ूத͢΂͖΋ͷ •Πϯϑϥνϡʔχϯά •ίετίϯτϩʔϧ •CI/CDͷ༻ҙ, ϦϦʔεΤϯδχΞϦϯά •ηΩϡϦςΟ֬อ

Slide 55

Slide 55 text

ઓུతSRE૊৫࿦ 55 ੒௕ظ (Growth Phase / Hyper Growth Phase) Ref. https://bfore.hongotechgarage.com/entry/evolution_of_a_product

Slide 56

Slide 56 text

ઓུతSRE૊৫࿦ 56 ੒௕ظ (Growth Phase) ϓϩμΫτ͕੒ޭͨ͠ͱݴ͑Δظ଴஋ɺ໨ඪ஋ͷઃఆ͸ϏδωεϞ σϧɺࣄۀܭըʹΑͬͯҟͳΓ·͢ɻ ͱʹ͔͘௒੒௕ஈ֊ (Hyper Growth Phase) ʹೖΔલʹɺͦͷ੒ ௕ۂઢ΍ఆண཰ۂઢΛ៉ྷʹඳ͚ΔΑ͏ʹ৴པੑΛߴΊΔࣄ͕ඞཁ Ͱ͢ɻ

Slide 57

Slide 57 text

ઓུతSRE૊৫࿦ 57 Ref. https://bfore.hongotechgarage.com/entry/evolution_of_a_product ੒௕ظ (Growth Phase) ৴པੑΛߴΊΒΕͳ͚Ε͹ ௒੒௕ஈ֊ʹ ͍࣋ͬͯ͘͜ͱ͸ Ͱ͖·ͤΜɻ

Slide 58

Slide 58 text

ઓུతSRE૊৫࿦ 58 ੒௕ظ (Growth Phase) ͦ͜ͰɺStickiness(೪ண౓) / Install਺΍ DAUɺWAUɺ MAUɺ(e.g. ޿ࠂऩೖϞσϧͰ͸ແ͍৔߹͸GMV΋ؚΊ Δ)ͳͲͷKPIΛݟͯɺҰఆ਺Λ௒͑ͨΒॱௐʹ੒௕ͯ͠ ͍Δͱ൑அ͢ΔϏδωεతઓུ؍఺Λզʑ΋ҙࣝ͢Δɻ

Slide 59

Slide 59 text

ઓུతSRE૊৫࿦ 59 ੒௕ظ (Growth Phase) ۩ମతʹ͸Ͳ͏΍ͬͯ?

Slide 60

Slide 60 text

ઓུతSRE૊৫࿦ 60 ੒௕ظ (Growth Phase) ྫ͑͹ɺ SRE͕ ”DevOps of Data” (e.g. ETL, pipelining)Λߦ͍BigQueryʹૹΔɻ
 
 ͦΕΛBIνʔϜ͕ɺLooker΍Slack౳Λ࢖ͬͯKPIΛݟΕΔঢ়ଶʹ͓ͯ͠ ͘ɻͳͲ https://looker.com/blog/must-have-kpis-for-your-marketing-dashboards

Slide 61

Slide 61 text

ઓུతSRE૊৫࿦ 61 ੒௕ظ (Growth Phase) • ϓϩμΫτ/ࣄۀ͕௿໎͍ͯ͠Δ͜ͱΛೝࣝͨ͠Β • ৗʹશ͕ͯ੒ޭ͢ΔΘ͚Ͱͳ͍ͷ͸౰ͨΓલ • ੵۃతʹμ΢ϯαΠδϯά (࣮ࢪલʹࠓޙͷࢪࡦ͸ཁ֬ೝ)

Slide 62

Slide 62 text

ઓུతSRE૊৫࿦ 62 ੒௕ظ (Growth Phase) • ϓϩμΫτ/ࣄۀ͕੒௕͍ͯ͠Δ͜ͱΛೝࣝͨ͠Β • ੵۃతʹ࠾༻׆ಈ • ੵۃతʹΠϯϑϥɺ։ൃʹ౤ࢿ

Slide 63

Slide 63 text

ઓུతSRE૊৫࿦ 63 ੒௕ظ (Growth Phase) ࣍ͷεςʔδͰ͋ΔʮϓϩδΣΫτͷ௒੒௕ஈ ֊ʯʹೖΔલʹͪ͜Βͷઓུ΋γϑτͰ͖Δ ༷ʹ͓ͯ͘͠ɻ

Slide 64

Slide 64 text

ઓུతSRE૊৫࿦ 64 ੒௕ظ(Growth Phase): ूத͢΂͖΋ͷ •ΦϯϘʔσΟϯά४උ •Document੔උ (Wiki, README, Src΁ͷίϝϯτ, DesignDoc) •Booster(ΦϦΤϯςʔγϣϯ, Kickstartܥπʔϧ, etc) •࠾༻׆ಈ •ొஃɺϒϩάɺetc

Slide 65

Slide 65 text

ઓུతSRE૊৫࿦ 65 ੒௕ظ(Growth Phase): ूத͢΂͖΋ͷ •πʔϧ΍ϛυϧ΢ΣΞ։ൃ •OSS։ൃ׆ಈ͕͋Δͱ࠾༻׆ಈʹ΋ޮՌతͩ͠ɺΤϯδ χΞͱͯ͠ͷՁ஋্͕͕ΔͷͰྑ͍ •ΞϓϦέʔγϣϯͷੑೳվળ

Slide 66

Slide 66 text

ઓུతSRE૊৫࿦: Document੔උ 66 ੒௕ظ(Growth Phase): ूத͢΂͖΋ͷ ͜ͷॳʙதஈ֊Ͱ͸ΦϯϘʔσΟϯά४උͷ Document੔උ͕ಛʹॏཁͩͱߟ͍͑ͯ·͢ɻ

Slide 67

Slide 67 text

ઓུతSRE૊৫࿦: Document੔උ 67 Ducumentʹ͍ͭͯɺҎԼ͸Ͱ͖͍ͯ·͔͢? • ʮඞཁͳ৘ใ͸͓ͦΒ͘͜͜ʹ͋Δʯͱօ͕ৗʹࢥ͑Δ؀ڥ͕ ඞཁ • ͨͱ͑νʔϜશһ͕ఱ࠽తʹಡΉͷ͕ૣͯ͘΋ʮSourceΛಡ ΊʯͰย෇͚Δͷ͸ඇޮ཰ͩ͠ةݥ • จ຺΋ཧղͰ͖ͣʹޡղͱ͍͏ϦεΫ΋͋ΔͨΊɺϏδωε తʹ΋νʔϜϫʔΫతʹ΋ϚΠφε

Slide 68

Slide 68 text

ઓུతSRE૊৫࿦: Document੔උ 68 Ducumentʹ͍ͭͯɺҎԼ͸Ͱ͖͍ͯ·͔͢?
 
 φϨοδ͕ཷΊࠐ·Ε͍ͯΔͷʹɺ ͦͷ৘ใͷݕࡧʹຖճ5-10෼΋͔͔͍ͬͯΔ༷ Ͱ͸͋·Γʹඇޮ཰

Slide 69

Slide 69 text

ઓུతSRE૊৫࿦: Document੔උ 69 Ducumentʹ͍ͭͯɺҎԼ͸Ͱ͖͍ͯ·͔͢? • ৘ใͷҰݩ؅ཧͱ੔ཧ • ඞཁͳ৘ใ͕ҰՕॴ͘Β͍ʹू·͍ͬͯ·͔͢ʁ • ԿՕॴ΋୳͢ͷ΋ඇޮ཰Ͱϛε͕૿͑·͢ • e.g.ʮ˓˓͸ͲͷαʔϏεΛ࢖͑͹ྑ͍͔ʯϋοΩϦΘ͔Δ • ੔ཧ͞Ε͍ͯ·͔͢? • e.g.ʮΧςΰϥΠζ͞ΕͨπϦʔߏ଄ʯͰɺͲͷ৘ใ͕Ͳ͜ʹॻ͔Εͯ ͍Δ͔ϋοΩϦ͍ͯ͠Δɺݕࡧਫ਼౓΋ྑ͍

Slide 70

Slide 70 text

ઓུతSRE૊৫࿦: Document੔උ 70 Ducumentʹ͍ͭͯɺҎԼ͸Ͱ͖͍ͯ·͔͢? • ಋઢΛৗʹҙࣝ! • e.g. README΍λεΫ؅ཧνέοτʹWiki΍DesignDoc ΁ͷಋઢ(URL Link) ͕ுΒΕ͍ͯͯɺޙ͔ΒḷΓ΍͍͢ • Ұݩ؅ཧ͕పఈͰ͖͍ͯΕ͹ෆཁͱͳΔ͕ɺͦ͏Ͱͳ͍ ͜ͱ΋ଟ͍ͷͰɺͦͷରԠࡦͱͯ͠΋ྑ͍ํ๏

Slide 71

Slide 71 text

ઓུతSRE૊৫࿦: Document੔උ 71 Ducumentʹ͍ͭͯɺҎԼ͸Ͱ͖͍ͯ·͔͢? • ू໿؅ཧ • ΨΠυϥΠϯͷ࡞੒ (͜Ε΋ಋઢ) • awesomeԿͪΌΒͷ༷ͳrepositoryΛ࡞੒͢Δͷ΋ྑ͍ ΍Γํͩͱࢥ͍·͢ɻ • Ref: Awesome Lists

Slide 72

Slide 72 text

ઓུతSRE૊৫࿦: Document੔උ 72 ༻ޠͷఆٛͱݴ༿બͼͷॏཁੑ • [௒େࣄ] ϢϏΩλεݴޠΛҙࣝͰ͖͍ͯ·͔͢? • ։ൃ૊৫શମͰݫ֨ͳڞ௨ͷҙຯΛ࣋ͭ༻ޠΛߏ ங͢Δ͜ͱͰ͢

Slide 73

Slide 73 text

ઓུతSRE૊৫࿦: Document੔උ 73 ϢϏΩλεݴޠ • “υϝΠϯΤΩεύʔτ͸ɺυϝΠϯʹ͍ͭͯͷཧղΛ఻͑ Δʹ͸࢖͍ʹ͔ͬͨ͘Γෆద੾ͩͬͨΓ͢Δ༻ޠ΍ߏ଄ʹ ҟٞΛএ͑Δ΂͖Ͱ͋Γɺ։ൃऀ͸ɺઃܭΛ๦֐͢Δ͜ͱ ʹͳΔ͍͋·͍͞΍ෆ੔߹ʹ໨ΛޫΒͤΔ΂͖Ͱ͋Δɻ” • Ҿ༻ݩ: Eric Evans. ΤϦοΫɾΤϰΝϯεͷυϝΠϯۦ ಈઃܭ (DDD)

Slide 74

Slide 74 text

ઓུతSRE૊৫࿦: Document੔උ 74 ໋໊نଇ΍໋໊ن໿࡞Γɺߏ଄ઃܭ͸ૣ͍͏ͪʹɻ • ࠞཚΛট͘ྫ • Web V1 ͱ web2͕࣮͸ಉ͡ҙຯͰɺWeb V2͸ͦ ΕΒͱผɻ͔͠΋pcwebͱ͍͏ͷ΋͋Δ͕ɺͦͷ ҧ͍͸ෆ໌ɻͦΕͧΕͷಠࣗ༻ޠͷҙຯ͸terms΋ ແ͍ͷͰΘ͔Βͳ͍ঢ়ଶʹؕͬͨɻ

Slide 75

Slide 75 text

ઓུతSRE૊৫࿦: Document੔උ 75 ໋໊نଇ΍໋໊ن໿࡞Γɺߏ଄ઃܭ͸ૣ͍͏ͪʹɻ • ࠞཚΛট͘ྫ • prefix΍suffixͷ෇͚ํ͕ΊͪΌͪ͘ΌͰɺຖճਖ਼نදݱΛۦ࢖ͯ͠ݕ ࡧ͢ΔӋ໨ʹͳ͍ͬͯΔ (ਖ਼نදݱ͕࢖͑Δ؀ڥͳΒ·ͩྑ͍͕...) • ͜͏͍ͬͨ͜ͱ͸ɺෳ਺ͷνʔϜͰ࿈ܞ͢Δ͔Βඇৗʹൃੜ͠΍͍͢ • ଟ͘ͷձࣾ͸͜͏͍ͬͨ໰୊Λى͜͢ϦεΫ͕͋Δ • ͔ͩΒͦ͜஫ҙͯ͠పఈ͢Δ͜ͱ͕େࣄ

Slide 76

Slide 76 text

ઓུతSRE૊৫࿦: Document੔උ 76 • Ducumentʹ͍ͭͯɺҎԼ͸Ͱ͖͍ͯ·͔͢? • ໌֬Խ • RFCΛࢀߟʹ͢Δ • MUST (͠ͳ͚Ε͹ͳΒͳ͍), SHOULD (͢Δ΂͖), MUST NOT, SHOULD NOT ΛϋοΩϦͤ͞Δ • https://www.ietf.org/rfc/rfc2119.txt

Slide 77

Slide 77 text

ઓུతSRE૊৫࿦: Document੔උ 77 • จ຺ͷ༻ҙ • ԿނͦΕ͕ඞཁ͔ɺ୭͕Ͳ͏΍ͬͯ࡞Δͷ͔/࡞ͬͨͷ͔ཧղͰ͖Δ΋ͷ • DesignDocΛࢀߟʹ͢Δ • http://ukai.jp/Slides/2007/0907-itpro/ HackersSoftwareEngineering.pdf • Src code΁ͷίϝϯτɺ README • ඞཁ࠷௿ݶͷઆ໌΍खॱ΍ಋઢ

Slide 78

Slide 78 text

ઓུతSRE૊৫࿦ 78 ੒௕ظ(Growth Phase): ूத͢΂͖΋ͷ ΦϯϘʔσΟϯάͷͨΊͷDocumentΛ༻ҙ͠ɺ ৽نϝϯόʔʹBoostΛֻ͚ΒΕΔΑ͏ʹମ੍ͮ ͘Γʹ΋ྗΛೖΕΔ

Slide 79

Slide 79 text

ઓུతSRE૊৫࿦ 79 ੒௕ظ(Growth Phase)ͷޙظ

Slide 80

Slide 80 text

ઓུతSRE૊৫࿦ 80 ੒௕ظ(Growth Phase)ͷޙظ Ref. https://bfore.hongotechgarage.com/entry/evolution_of_a_product

Slide 81

Slide 81 text

ઓུతSRE૊৫࿦ 81 ੒௕ظ(Growth Phase)ͷޙظ • Microservices (ུ: MS)Խ • ݱ࣌఺Ͱ͸ɺ࠷ॳ͸Monolithic Architecture Λ࠾༻ ͍ͯͯ͠ɺ͞ΒͳΔ੒௕ظ(௒੒௕ظ)͕࣮֬ʹདྷ ΔࣄΛೝࣝͰ͖͔ͯΒҠߦ͢ΔProduct΋ଟ͋͘Δ Ͱ͠ΐ͏

Slide 82

Slide 82 text

ઓུతSRE૊৫࿦ 82 ੒௕ظ(Growth Phase)ͷޙظ • Microservices (ུ: MS)Խ • ϓϩμΫτͷ੒ޭͰɺ૊৫΋੒௕ɾ֦େ͢Δ • ૊৫ͷεέʔϧΞοϓʹରԠͰ͖ΔΑ͏ʹ

Slide 83

Slide 83 text

ઓུతSRE૊৫࿦ 83 ੒௕ظ(Growth Phase)ͷޙظͰɺ༏ઌతʹऔΓ૊Ή͜ͱ • ߏ੒؅ཧπʔϧͷϦϑΝΫλϦϯάͷ։࢝ • ֤πʔϧ౳ͷ൚༻ੑ௥Ճͷ։࢝ • Toil๾໓׆ಈͷ։࢝ • ඇਪ঑ɾഇࢭ ͷపఈ
 ͜͜·ͰʹDocumentͷ༻ҙ͕ࡁΜͰ͍ͯɺΦϯϘʔσΟϯά͕εϜʔζ ʹߦ͍͑ͯͨΒɺൺֱతૣΊʹ͜ΕΒ΋։࢝͢Δ͜ͱ͕Ͱ͖Δ͸ͣͰ͢ɻ

Slide 84

Slide 84 text

ઓུతSRE૊৫࿦ 84 ੒௕ظ(Growth Phase)ͷޙظ: Microservices MicroservicesԽ͸؆୯ʹ͸ߦ͔ͳ͍ͷͰɺઐ೚ͷ૊ ৫Λ࡞ΓɺಛԽͤͯ͞৴པੑΛߴΊΔɻ

Slide 85

Slide 85 text

ઓུతSRE૊৫࿦ 85 ੒௕ظ(Growth Phase)ͷޙظ: Microservices Microservices νʔϜͷઌಋʹΑΓҠߦ͍ͯ͘͠ɻ Ҡߦʹ߹Θͤͯ૊৫ମ੍΋ม͍͑ͯ͘ɻ(ʮSRE΋ ֤υϝΠϯνʔϜ΁ʯ͕ཧ૝)

Slide 86

Slide 86 text

ઓུతSRE૊৫࿦ 86 ͜ͷϑΣʔζʹͳΔͱԿނMicroservices͕ඞཁͳͷ͔ • ”ϞϊϦεͷੑ࣭͕ɺ΋ͬͱ΋Ұൠతͳҙຯʹ͓͚ΔεέʔϥϏ ϦςΟͱਅͬ޲͔Βରཱ͢Δ͔ΒͰ͢ɻ ” • ”εέʔϥϏϦςΟ͸ฒߦੑͱύʔςΟγϣϯ෼ׂΛඞཁͱ͠· ͕͢ɺ͜ͷ2ͭΛϞϊϦεͰ࣮ݱ͢Δͷ͸͖ΘΊͯࠔ೉Ͱ͢ɻ” Ҿ༻ݩ: ϓϩμΫγϣϯϨσΟϚΠΫϩαʔϏε

Slide 87

Slide 87 text

ઓུతSRE૊৫࿦ 87 ◦ “ϞϊϦεΛϚΠΫϩαʔϏεʹ෼ׂ͢Δͱ͖ʹ͸ɺϚΠΫϩ αʔϏεΛ։ൃɺ࣮ߦ͢ΔͨΊͷ҆ఆͨ͠ϓϥοτϑΥʔϜ Λఏڙ͢ΔΠϯϑϥετϥΫνϟ෦໳ͷॏཁੑ͕ɺۃ୺ʹ্ ͕Γ·͢ɻ “ ▪ ϝϧΧϦͰ΋ಉ͘͡ɺϚΠΫϩαʔϏεͷΠϯϑϥΛఏڙ ͢Δઐ໳ͷνʔϜΛઃཱ͠ɺͦΕΛ֤ϚΠΫϩαʔϏενʔ ϜʹఏڙͰ͖Δ૊৫ߏ੒ͱͳ͍ͬͯ·͢ɻ

Slide 88

Slide 88 text

ઓུతSRE૊৫࿦ 88 • ϚΠΫϩαʔϏενʔϜͷ։ൃऀʹϚΠΫϩαʔϏεͷߏ੒؅ ཧΛ೚ͤΔ͜ͱ͸Ξϯνύλʔϯ
 ◦ ϚΠΫϩαʔϏεϓϥοτϑΥʔϜ·ͰΤΩεύʔτʹͳ Δ͜ͱΛٻΊΔͷ͸ྑ͘ͳ͍͠ɺαʔϏε։ൃΛ㚽Ζʹग़ དྷͳ͍

Slide 89

Slide 89 text

ઓུతSRE૊৫࿦ 89 • ϝϧΧϦͷྫ • SRE team • طଘͷMonolithic architecture ͱͦͷMicroservices΁ͷҠߦޙͷӡ༻Λι ϑτ΢ΣΞͷٕज़Λۦ࢖ͯ͠ӡ༻͢Δ • Microservices Platform team • ઌߦͯ͠Microservicesج൫Λ࡞Δઐ໳෦ୂ • Microservices Architecture team • MS Platform ઌߦͯ͠Microservicesج൫Λ࡞Δઐ໳෦ୂ • Microservices Developers • Service ΛMicroservices ʹҠߦ͢Δ։ൃऀ

Slide 90

Slide 90 text

ઓུతSRE૊৫࿦ 90 • ϚΠΫϩαʔϏεΞʔΩςΫνϟΛऔΓೖΕΔ͜ͱʹΑͬͯɺ ൃੜ͢ΔτϨʔυΦϑΛཧղ͢Δ 
 ◦ “ٯίϯ΢ΣΠͷ๏ଇ͕ಇ͘͜ͱʹΑΔνʔϜͷݽཱԽͱ νʔϜؒͷίϛϡχέʔγϣϯෆ଍” ◦ “ٕज़తͳεϓϩʔϧ(ෆنଇͳ੒௕) ʹΑΔ๲େͳίετ” ◦ “γεςϜো֐ൃੜύλʔϯͷ૿Ճ” ◦ “ٕज़ͱΠϯϑϥͷϦιʔεୣ͍߹͍”

Slide 91

Slide 91 text

ઓུతSRE૊৫࿦ 91 ྫ͑αʔϏε୯ҐͰαΠϩԽΛߦͬͯ΋ νʔϜؒͰͷ৴པؔ܎ΛߏஙͰ͖Δ૊৫ͮ͘Γ ͕ॏཁͳ伴ΛѲ͍ͬͯΔ͜ͱΛ͍ࣔͯ͠Δ͜ͱ Λؾ෇͔͞Ε·͢ɻ

Slide 92

Slide 92 text

ઓུతSRE૊৫࿦ 92 ͍Α͍Α ௒੒௕ظ(Hyper Growth Phase)΁

Slide 93

Slide 93 text

ઓུతSRE૊৫࿦ 93 ௒੒௕ظ(Hyper Growth Phase) Ref. https://bfore.hongotechgarage.com/entry/evolution_of_a_product

Slide 94

Slide 94 text

ઓུతSRE૊৫࿦ 94 ௒੒௕ظ(Hyper Growth Phase) • MicroservicesԽʹΑΔϕϩγςΟͷ޲্ͰɺΧΠ θϯͱൃలΛՃ଎ͤ͞Δ • Container Orchestration, Service mesh౳ʹΑΓɺ ৴པੑΛ޲্ͤ͞Δ

Slide 95

Slide 95 text

ઓུతSRE૊৫࿦ 95 ௒੒௕ظ(Hyper Growth Phase) ͜ͷࠒʹͳΔͱɺͦΕͳΓʹඞཁͳΤϯδχΞ΍ࢿ ۚ͸ू·͖͍ͬͯͯΔ͸ͣͰ͢ɻ ͳͷͰɺ৽نαʔϏε͸্ཱͪ͛ظ͔Β MicroservicesΛ࠾༻͢Δࣄʹର͠ɺোน͕૑ۀظʹ ൺ΂ͯ௿͘ͳ͍ͬͯΔ͜ͱ΋͋Γ·͢ɻ

Slide 96

Slide 96 text

ઓུతSRE૊৫࿦ 96 ࠷ॳ͔ΒMicroservicesͷ࠾༻͸?

Slide 97

Slide 97 text

ઓུతSRE૊৫࿦ 97 • ૑ۀ͔࣌ΒϚΠΫϩαʔϏε? 
 ◦ ձࣾʹΑͬͯ͸ɺ͜ͷΞϓϩʔν্͕ख͘ߦ͘৔߹΋͋Δͱ ߟ͑ΒΕ·͢ ▪ ΠϯϑϥͱਓతϦιʔε͕༻ҙͰ͖Δ ▪ ձࣾͷࢿۚʹ༨༟͕͋Δ
 ͔͠͠ɺͦΕҎ֎ʹॏཁͳ͜ͱ΋…ɻ ͦΕ͸࣍ͷϖʔδʹ

Slide 98

Slide 98 text

ઓུతSRE૊৫࿦ 98 • ࠷ॳ͔ΒϚΠΫϩαʔϏε? / খ͞ͳاۀ (e.g. ελʔτΞο ϓ)ͷ৔߹
 ▪ “৽͍͠ձࣾͷ৽͍͠ΞϓϦέʔγϣϯʹ͸ɺϚΠΫϩαʔ Ϗεʹద੾ʹ෼཭Ͱ͖Δ΄Ͳɺػೳ͕ͦ΋ͦ΋ଟ͋͘Γ· ͤΜɻ” ▪ Ҿ༻ݩ: ϓϩμΫγϣϯϨσΟϚΠΫϩαʔϏε

Slide 99

Slide 99 text

ઓུతSRE૊৫࿦ 99 গͳ͘ͱ΋ݱ࣌఺Ͱ͸Microservicesͷํ͕ಋೖɺӡ༻ί ετ͕ߴ͍ͷ͸ؒҧ͍͋Γ·ͤΜɻ

Slide 100

Slide 100 text

ઓུతSRE૊৫࿦ 100 Monolithͷํ͕ίετ͕௿͍ͨΊɺελʔτΞοϓ΍௿ ༧ࢉϓϩδΣΫτʹ͓͍ͯ͸޿ࠂΛଧͯΔػձΛଟ࣋ͯ͘ Δɻ
 ݁Ռɺͦͷํ͕ϏδωεΛ੒ޭʹಋ͖΍͍͢ঢ়گʹ͋Δ ࣄ͕ଟ͍͜ͱ΋ཧղ͓͔ͯ͠ͳ͍ͱ͍͚·ͤΜɻ

Slide 101

Slide 101 text

ઓུతSRE૊৫࿦ 101 ͪͳΈʹϝϧΧϦͰ΋ݱࡏMicroservicesԽΛߦͳ͍ͬͯ ·͕͢ɺ٬؍తʹݟͯ΋ܾͯ͠ѱ͘ͳ͍λΠϛϯάʹ։࢝ ͨ͠ͱݸਓతʹ͸ݟ͍ͯ·͢
 
 ϓϩμΫτͷ੒௕͔ΒඞཁʹഭΒΕͨࣄΛલఏʹɺ͋Δఔ౓దͨ͠Τϯδ χΞͷ਺ͱࢿ͕ۚ༻ҙग़དྷͨஈ֊ͰҠߦΛܾఆͨ͠ͱߟ͑ΒΕΔͨΊͰ͢

Slide 102

Slide 102 text

ઓུతSRE૊৫࿦ 102 খاۀʹͱͬͯ͸ ʮϓϩμΫτͷ੒ޭ͕ઌʯ ͱ͍͏ঢ়گ΋ଟ͋͘Δɻ

Slide 103

Slide 103 text

ઓུతSRE૊৫࿦ 103 Microservicesʹؔͯ͠͸ɺϒϥϯσΟϯά΍࠾ ༻ʹର͢ΔઓུͰɺΞʔϦʔ(Ξμϓλʔ|Ϛδϣ ϦςΟ)ͷྖҬΛૂ͏ͷ͸ཧղͰ͖·͢ɻ ͔͠͠ຊ࣭͸ҟͳΓ·͢͠ɺձࣾͷঢ়ଶΛΑ͘ ߟ͑৻ॏʹɻ

Slide 104

Slide 104 text

104 https://www.infoq.com/articles/infoq-2018-retrospective

Slide 105

Slide 105 text

105 ·ͱΊΔͱ • ϚʔέςΟϯάɺϒϥϯσΟϯά • εέʔϥϏϦςΟͷඞཁ౓ • ࠾༻ɺٕज़޲্ࢥߟͳͲΤϯδχΞࢹ఺
 ͳͲͷ౤ࢿ؍఺ͱ
 • ϓϩμΫτͷ੒ޭঢ়گ • ༧ࢉ • ରԠՄೳͳΤϯδχΞ਺
 
 ͳͲͷࢿຊͷόϥϯε͕औΕ͍ͯΔͳΒɺ͍ͭ։࢝ͯ͠΋ྑ͍ͱࢥ͍·͢!

Slide 106

Slide 106 text

106 ΞʔΩςΫνϟʔ͸ϫϯύλʔϯͰ͸ͳ͍ • Monolithic architecture => Microservices architecture ͷྲྀΕ͕ओ ྲྀ • ͚ͩͲͦΕ͚ͩͰ͸ͳ͍ • બ୒ࢶ͸ଞʹ΋͋Δ

Slide 107

Slide 107 text

ͦͷଞͷΞʔΩςΫνϟʔ 107 ิ଍Ͱ͕͢ɺService-Oriented Architecture (SOA/αʔϏεࢦ޲ΞʔΩςΫ νϟʔ) ͱݺ͹ΕΔ΋ͷ΋ଘࡏ͠·͢ɻ https://www.nginx.com/resources/library/microservices-vs-soa/? utm_campaign=microservices&utm_medium=ebook&utm_source =infoq&utm_content=RVC https://dzone.com/articles/microservices-vs-soa-whats-the-difference

Slide 108

Slide 108 text

108 [ิ଍] Service-oriented architecture(SOA)? • ʮͰ͖ΔݶΓڞ༗ʯʮϏδωεػೳͷ࠶ར༻ʯΛॏཁͱ͍ͯ͠ Δ • 4छྨͷαʔϏεʹ෼͔ΕΔ • ϏδωεɺΤϯλʔϓϥΠζɺΞϓϦέʔγϣϯɺΠϯϑϥ • ڞ௨ͷ౷࣏ͱج४ > ࣗ༝౓ • ैདྷͷRDBMSΛΑ͘࢖͏ • ݱࡏ͸ɺDevOps / CD౳͸ීٴ࢝͠Ίɻ·ͩओྲྀͳ΋ͷ͸ଘࡏ ͍ͯ͠ͳ͍

Slide 109

Slide 109 text

109 [ิ଍] Service-oriented architecture(SOA)? • SOAͷαʔϏεཻ౓ • αʔϏείϯϙʔωϯτͷαΠζ͸ɺখن໛ͷΞϓϦέʔγϣϯαʔ Ϗε͔Βඇৗʹେن໛ͳΤϯλʔϓϥΠζαʔϏε·ͰɺରԠ͕ग़ དྷ·͢ɻ • ࣮ࡍʹ͸ɺେن໛ͳ੡඼΍αϒγεςϜʹ૬౰͢Δେ͖͞ͷαʔϏ είϯϙʔωϯτΛSOA಺Ͱ࣋ͭͷ͕Ұൠతɻ • αʔϏείϯϙʔωϯτͷڞ༗͕ॏཁͳ֓೦ͷ̍ͭ • ϦϞʔτΞΫηεϓϩτίϧͱͯ͠ϝοηʔδϯάʢAMQPɺ MSMQʣ͓ΑͼSOAPʹґଘ

Slide 110

Slide 110 text

SREۀ຿Ͱ΋औΓೖΕͨ ํ͕ྑ͍จԽ 110

Slide 111

Slide 111 text

SREۀ຿Ͱ΋औΓೖΕͨํ͕ྑ͍จԽ 111 • ΞδϟΠϧ։ൃ • εΫϥϜͰͷεϓϦϯτͷӡ༻͸೉͍͔͠΋ʁ • ݟੵʹ͔͚Δ·ͱ·ͬͨظ͕ؒऔΕͳ͍ • ଟํ໘͔Βͷେྔಥൃ࡞ۀ • ͔͠͠ɺεΫϥϜࣗମͷ஌ࣝ͸ඞਢ • ϢϏΩλεݴޠతʹ΋ͦͷଞͰ΋ • SREʹ΋Χϯόϯ͸༗ޮ

Slide 112

Slide 112 text

SREۀ຿Ͱ΋औΓೖΕͨํ͕ྑ͍จԽ 112 • ΞδϟΠϧ։ൃ • ࠷ۙLego scrumͱ͍͏τϨʔχϯάʹࢀՃͯ͠Έ·ͨ͠ • ֶָ͘͠΂ͨͷͰͱͯ΋Φεεϝ!! • λοΫϚϯϞσϧͰ͍͏ػೳظʹૣ͘΋͍͚ͬͯͦ͏! • λοΫϚϯϞσϧͱ͸ https://www.lego4scrum.com/

Slide 113

Slide 113 text

SREۀ຿Ͱ΋औΓೖΕͨํ͕ྑ͍จԽ 113 " Մಡੑͷҙࣝ / ϦʔμϒϧίʔσΟϯά " e.g. આ໌ม਺ " ม਺໊ʹҙຯΛ࣋ͨͤΔ " ม਺໊ΛݟΕ͹ɺͦΕ͕ԿΛ͍ͯ͠Δ͔ཧղͰ͖Δ " ίϝϯτͷॻ͖ํ " Մಡੑͷྑ͍ؔ਺ͷॻ͖ํ " ಡΈ΍͘͢؆ܿʹॻ͚Δ༷ʹ͢ΔςΫχοΫ " อकੑ΍ߋ৽଎౓Λ্͛ɺকདྷͷࣗ෼ͷෛ୲΋Լ͛Δ " ͱͯ΋ॏཁͳ͜ͱ͕٧·͍ͬͯΔ " ڞ௨ೝࣝΛ࣋ͨͳ͍ಠུࣗޠͷ࢖༻ېࢭ

Slide 114

Slide 114 text

GitΛ࢖ͬͨ։ൃͱ CodeReview࠶ߟ 114

Slide 115

Slide 115 text

115 ϖʔδ਺ͷؔ܎͔Β ʮGithub Flowʯͷઆ໌͸ࠓճׂѪ͠· ͢ɻ ࢀߟ: https://qiita.com/mint__/items/bfc58589b5b1e0a1856a

Slide 116

Slide 116 text

CodeReviewͷجຊελΠϧ 116 • [MUST] ૬खΛ൱ఆ͠ͳ͍ • CommitͱReviewʹײँ͢Δ • CommiterͱReviewer͚ͩͰ͸ͳ͘νʔϜͰ੹೚Λڞ༗͢Δ

Slide 117

Slide 117 text

117 CodeReviewͷجຊελΠϧ " “github্Ͱ͚Μ͔ࠊͱͳͬͯ͠·ͬͨ͜ͱ΍ɺେ͖ͳPull RequestΛड͚औͬͯࠔͬͨ͜ͱ͸͋Γ·ͤΜ͔ʁ৺౰ͨ Γ͕͋Ε͹࣮ફͯ͠Έ·͠ΐ͏ɻ” " https://yakst.com/ja/posts/4907

Slide 118

Slide 118 text

118 Pull Request, CodeReview

Slide 119

Slide 119 text

119 Pull Request(P-R)ͷཻ౓͸Ͳͷ͘Β͍͕ྑ͍? • Release early, Release often
 ʢૣΊͷϦϦʔεɺ͠͹͠͹ߋ৽͢Δ) ͷCycle Ͱճ ͍͚ͯ͠Δ͘Β͍͕ΦεεϝͰ͢ɻ • ͜Ε͸ΞδϟΠϧ։ൃͷߟ͑/ਐΊํ

Slide 120

Slide 120 text

120 Pull Request(P-R)ͷཻ౓͸Ͳͷ͘Β͍͕ྑ͍? ۩ମతʹ͸?

Slide 121

Slide 121 text

121 Pull Request(P-R)ͷཻ౓͸Ͳͷ͘Β͍͕ྑ͍? • 1ͭͷP-R͸ɺ1ͭ͘Β͍ͷ໨త/ݒ೦/ಛ௃ ʹ཈͑·͠ΐ͏ • ผͷ໨తͷCommit͕ଓ͖ͦ͏ʹͳͬͨ࣌͸ • ผͷP-Rͱͯ͠ग़͢Α͏ʹ͠·͠ΐ͏ • Reviewer͔Β΋༠ಋͰ͖ΔͱεϜʔζ

Slide 122

Slide 122 text

122 P-R͸ग़དྷΔ͚ͩখ͘͞ऴΘΒͤΔͱ͜Ε͚ͩಘ " Review͞Ε΍͘͢ͳΔ " Reviewerͷෛ୲͕ݮΒͤΔ " Merged Cycle͕ૣ·Δ " ਝ଎ͳ෮چରԠ͕ग़དྷΔ༷ʹͳΔ " Conflict΋ݮগ͢Δ " Deploy / ReleaseͷӨڹΛখ͘͞Ͱ͖Δ
 ◦ ݁Ռɺ৴པੑΛ޲্Ͱ͖ΔՄೳੑ

Slide 123

Slide 123 text

123 P-R͸ग़དྷΔ͚ͩখ͘͢͞Δͱ͜Ε͚ͩಘ Mircoservices + MicroPullRequest = ?

Slide 124

Slide 124 text

124 P-R͸ग़དྷΔ͚ͩখ͘͢͞Δͱ͜Ε͚ͩಘ Microdevelopments ͩ!

Slide 125

Slide 125 text

125 P-R͸ग़དྷΔ͚ͩখ͘͢͞Δͱ͜Ε͚ͩಘ ࣌୅͸ɺϚΠΫϩʓʓʓ

Slide 126

Slide 126 text

126 P-R͸খ͘͢͞ΔࣄΛਪ঑͍ͯ͠ΔهࣄͷҰྫ " https://www.madetech.com/blog/deployment-by-pull-requests " Feedback is easier to gather if the pull request is small, so some effort should be spent to make more concise pull requests. " Reducing conflicts " The pull requests are kept open just for a small amount of time, to get enough reviews and merged as quickly as possible. In order to support this workflow, the pull requests are kept as small as possible on purpose so they can be reviewed easily and merged quicker. Multiple pull requests can be opened if the work to be carried is too large to fit into a single one. " https://www.thedroidsonroids.com/blog/splitting-pull-request " There should only be one issue resolved with each pull request, and only one pull request required to resolve an issue. " https://d83tozu1c8tt6.cloudfront.net/media/resources/SDL_GitHub_BestPractices.pdf " https://blog.nathanaelcherrier.com/en/advice-great-code-review/ " A developer who wants to receive useful review comments or wants these colleagues to quickly review his pull request, should follow this tiny single rule: one feature = one pull request. " Reviewers are also developers who have tasks to do. Reviewing a pull request takes time. As a reviewer, when I see a big pull request which contains a lot of features I don't want to review it right now but later because I know I am going to spend a lot of time on this pull request.

Slide 127

Slide 127 text

[ิ଍] P-R΍ReviewͰΑ͘ར༻͢ΔҰൠతͳུޠ 127 • WIP • ࡞ۀ్தͷ৔߹ʹ࢖͏ • e.g. [WIP] Add an Ansible role for *** • RFC • ҙݟΛٻΊΔ • e.g. RFC label΍ɺ[RFC] Add exponential backoff with retry in example-controller • IMO • ReviewίϝϯτͰݸਓతҙݟͱ͍͏ͷΛڧௐ • .e.g. ʮ[IMO] ΠΠω :+1: ! ͋ͱɺࢲ͸͜ΕΛ෇͚Ճ͑Δͱྑͦ͞͏ͱࢥ͏Μ͚ͩ ͲɺͲ͏ࢥ͍·͔͢?ʯ

Slide 128

Slide 128 text

·ͱΊ 128

Slide 129

Slide 129 text

·ͱΊ 129 • Ϗδωε·Ͱࢹ໺֯Λ޿͛ͯઓུతʹ! • SRE΋ϏδωεશମΛݟΔඞཁ͕͋ΔΤϯδχΞͱཧղ͢Δ • ঢ়گʹ߹Θͤͨ৬຿ͱ੹຿Λߟ࡯͢Δඞཁ͕͋Δ • ϓϩμΫτ/Ϗδωεͷ੒௕/੒ޭ͕Ұ൪ • ࠓͷ࣌୅΋Document͸େࣄ! • Microservices͸ಋೖܭըΛ͔ͬ͠Γͱ! • ྑ͍ͱࢥͬͨจԽ͸औΓೖΕͯΈΔ • ࣌୅͸ɺϚΠΫϩʓʓʓ / Microdevelopments !!

Slide 130

Slide 130 text

࠷ޙʹ 130 ࠓ೔ͷ࿩Λฉ͍ͯ/ಡΜͰ ਂ͍ཧղͱڞײ + ڧ͍ڵຯ + ৘೤ => Ұॹʹಇ͖͍ͨ ͱࢥͬͯ͘Εͨ͋ͳͨ!! SRE EMΛܹืूதͰ͢! TwitterͰktykogm·ͰDM͍ͩ͘͞ or ࠙਌ձ౳Ͱ΋͓࿩͠·͠ΐ͏ɻ ҿΈͰ΋༠͍ͬͯͩ͘͞ʂʂ

Slide 131

Slide 131 text

131 QA