SRE的team開発Tipsとベストプラクティスっぽい何か

1333e8256b0ba80c369f4bcc98a839d7?s=47 k-oguma
January 18, 2019

 SRE的team開発Tipsとベストプラクティスっぽい何か

SRE Lounge #7の発表資料です。

1333e8256b0ba80c369f4bcc98a839d7?s=128

k-oguma

January 18, 2019
Tweet

Transcript

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

  2. ϝϧΧϦSREͷ୲౰ൣғ 2 ࠓ೔ͷτϐοΫ 01 SREsΛߟ͑Δ 02 Toilͷଊ͑ํ (ݾΛ஌Δ) 03 ઓུతSRE૊৫࿦

    04 SREۀ຿Ͱ΋औΓೖΕͨํ͕ྑ͍จԽ 05 GitΛ࢖ͬͨ։ൃͱCodeReview࠶ߟ 06 ·ͱΊ 07
  3. whoami 3 id $(whoami) % uid=501(k-oguma) gid=20(sre-staff) 701(com.mercari) %

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

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

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

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

    " ༻๏༻ྔΛकͬͯਖ਼͓͘͠࢖͍͍ͩ͘͞
  9. ϝϧΧϦSREͷ୲౰ൣғ 9

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

  11. ϝϧΧϦSREͷ୲౰ൣғ 11 • Monolithic architectureͷߏங΍ӡ༻อक(Devops)ɺ৴པੑͷ޲্ • ର৅Region = JP /

    US / UK • ͘͞ΒΠϯλʔωοτ, AWS, GCP • Microservices ʹ͍ͭͯ͸ɺޙ௥͍ͷ։࢝଴ͪɺΩϟονΞοϓظؒ • ࠓޙɺ֤υϝΠϯνʔϜʹ഑ଐ༧ఆɻৄࡉ͸ޙ΄Ͳɻ • Data platform։ൃɺDevOps of Data (ETL) • Security ରԠ • Middleware, Tool։ൃ
  12. ϝϧΧϦSREͷ୲౰ൣғ 12 • Middleware, Tool։ൃ • Productͷػೳ։ൃ • e.g. cache

    control, DBIपΓͷߋ৽, maintenance mode࡞੒, etc • BI systemӡ༻ • ։ൃऀ͔ΒͷReviewґཔͷରԠͳͲ • Πϯϑϥઃܭ • Search Ops • ML Ops • On-Call • etc
  13. ϝϧΧϦSREͷ୲౰ 13 ৴པੑʹؔΘΔ͜ͱ͸ɺجຊతʹରԠ

  14. ϝϧΧϦSREͷ୲౰ൣғ 14 DevOps of Data: BIͷͨΊͷETL(Extract, Transform and Load)ର Ԡࣄྫɻ

    TBӽ͑ͷMySQL ڊେςʔϒϧΛ 1೔Ͱ BigQuery΁LOAD͢Δ PascalʙPuree + ngx_lua + Fluentd + BigQueryͰͭ͘ΔϝϧΧϦͷϩά෼ੳج൫ʙ
  15. ϝϧΧϦSREͷ୲౰ൣғ 15 SRE͕੹೚Λ࣋ͬͯؔ༩͢ΔࣄͰɺຊ൪DB΁ͷෛՙ͕ߴ· ΔࣄΛ։ൃऀͱڞʹ཈͑Δಇ͖Λ͍ͯ͠·͢ɻ ͦ͏͢ΔࣄͰSite͚ͩͰ͸ͳ͘ɺ͓٬͞·͔ΒಘΒΕΔ৴པ ੑΛ্͛ΔΑ͏ʹ͍ͯ͠·͢ɻ

  16. SREsΛߟ͑Δ 16

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

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

    class SRE implements DevOps
  19. 19 SREsΛߟ͑Δ " αΠϩԽʹ͍ͭͯิ଍ " DevOps " Dev + OpsͰ։ൃͱӡ༻ͷ୤αΠϩԽΛ໨ࢦ͠·͢

    " ޙʹઆ໌͢ΔMicroservicesͰ͸ɺαʔϏε͝ͱʹαΠϩԽΛ໨ࢦ͠· ͢ https://speakerdeck.com/mercari/mtc2018-microservices-platform-at-mercari
  20. SREsΛߟ͑Δ 20 SREsͷϙδγϣϯ ͜ͷ͋ͨΓͷྖҬͷ ୲౰ൣғ͸֤ࣾʹΑͬͯ ҟͳΓ·͢ɻ ͦΕ͸ΤϯδχΞͷ εΩϧηοτ΍ઓུ΋ ؔ܎ɻ

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

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

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

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

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

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

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

    ʮ΍Γํ͕ਖ਼͍͠ํ޲ʹ޲͔͍ͬͯΔ͔ෆ҆ͩʯ, etc ͱ͍ͬͨ͜ͱ͸ൃੜ͢Δͱࢥ͍·͢ɻ
  28. SREsΛߟ͑Δ 28 SRE͕͍ͳ͍໰୊ɻ SREͱSREɺSREͱ։ൃऀͰͭͳ͕ΓΛ࡞Δ͜ͱ΋େ੾Ͱ͢Ͷɻ ͔ͩΒͦ͜ɺ͜ͷSREίϛϡχςΟΛօͰ੝Γ্͛ͯɺΤϯδχ ΞਓੜΛ๛͔ʹ͠·͠ΐ͏ɻ

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

  30. 30 ஌൴஌ݾɺඦፌෆຆɻ

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

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

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

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

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

    " ؾ͕෇͔ͳ͔ͬͨࣗ෼ͷڧΈΛ஌ΕΔ " ஥ؒͷڧΈ΍ɺΑΓྑ͍઀͠ํΛ஌ΕΔ
  36. 36 ఢΛ஌ΓݾΛ஌Ε͹ඦઓة͏͔Βͣ

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

  38. Toil limit 38 Toilͱ͸SREຊ΋ग़ͯ͘Δ֓೦ 
 ToilͷՄೳੑ͕ߴ͍࡞ۀͱ͸
 • ख࡞ۀͰ͋Δ͜ͱ • ܁Γฦ͞ΕΔ͜ͱ

    • ࣗಈԽͰ͖Δ͜ͱ • ઓज़తͰ͋Δ͜ͱ • ௕ظతͳՁ஋Λ࣋ͨͳ͍͜ͱ • αʔϏεͷ੒௕ʹରͯ͠O(n)Ͱ͋Δ͜ͱ
  39. Toil limit 39 • EM/PMͳͲؚΊͯؔ܎ऀશһ͕ཧղΛ͢Δ
 ඞཁ͕͋Δ͜ͱ • ͦΕ͸ɺɺɺToil͕SREػೳΛଛͳ͏ࣄ࣮

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

    ूதͰ͖·͢ɻ”
  41. Toil limit 41 • “ΤϥʔόδΣοτͱಉ༷ʹɺ੍ݶΛݫक͢Δ” • Toil limit͸ɺSREs͕ظ଴͞ΕΔৼΔ෣͍ʹ͍ͭͯ߹ҙʹୡ ͢ΔͷΛॿ͚ɺϔϧϓ͕ඞཁͳͱ͖ʹ໌֬ͳγάφϧΛఏڙ ͠ɺ෇ՃՁ஋ͷͳ͍܁Γฦ͠࡞ۀ͕ຮԆΔ͜ͱΛආ͚·͢ɻ

    • ैདྷͷITӡ༻จԽͰ͸ɺνʔϜ͕͜ͷΑ͏ͳอޢΛड ͚Δ͜ͱ͸Ίͬͨʹ͋Γ·ͤΜɻ” http://shop.oreilly.com/product/0636920063964.do Seeking SRE:
  42. Toil limit 42 “toilͷ֓೦͸ɺ఻౷తͳاۀӡӦͷจԽʹ ͸΄ͱΜͲଘࡏ͠·ͤΜ” http://shop.oreilly.com/product/0636920063964.do Seeking SRE:

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

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

  45. 45 Toil ͷัଊ

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

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

    JIRAͩͱඪ४Ͱ౷ܭπʔϧ͕૊Έࠐ·Ε͍ͯΔͷͰɺͦΕ ͰToilΛܭଌͰ͖Δ༷ʹ͢Δ
  48. 48 Toilͷัଊ " ΋͠΋Toilͷัଊ͕೉͍͠৔߹ " εϓϦϯτ͕Մೳͳঢ়گͳΒɺٯʹϕϩγςΟΛܭଌ͢Ε͹ ྑ͍
 “͔͠͠ɺToil͸୹࣌ؒͰ͋ΔɺׂΓࠐΈͰ͋Δɺ਺͕ଟ͍ɺ·ͨ͸ToilͱEngineering ͷ۠ผ͸࣮͸೉͍͠ͱ͍ͬͨΑ͏ʹܭଌ͕೉͘͠ͳΔΑ͏ͳੑ࣭Λ΋ͭɻ ͕ͨͬ͠

    ͯɺ௚઀ToilΛܭଌ͢ΔͷͰ͸ͳ͘ɺϕϩγςΟΛܭଌ͢Δ͜ͱʹͨ͠ɻ” 2019೥SREߟ / Ώ͏͏͖ϒϩά/
  49. ઓུతSRE૊৫࿦ 49

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

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

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

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

    ͸ɺ࠷ॳ͔Β͋Δఔ౓͓ͯ͠ ͍ͨํ͕ޙʑྑ͍Ͱ͢ɻ
  54. ઓུతSRE૊৫࿦ 54 ૑ۀ࣌: બ୒ͱूத •ूத͢΂͖΋ͷ •Πϯϑϥνϡʔχϯά •ίετίϯτϩʔϧ •CI/CDͷ༻ҙ, ϦϦʔεΤϯδχΞϦϯά •ηΩϡϦςΟ֬อ

  55. ઓུతSRE૊৫࿦ 55 ੒௕ظ (Growth Phase / Hyper Growth Phase) Ref.

    https://bfore.hongotechgarage.com/entry/evolution_of_a_product
  56. ઓུతSRE૊৫࿦ 56 ੒௕ظ (Growth Phase) ϓϩμΫτ͕੒ޭͨ͠ͱݴ͑Δظ଴஋ɺ໨ඪ஋ͷઃఆ͸ϏδωεϞ σϧɺࣄۀܭըʹΑͬͯҟͳΓ·͢ɻ ͱʹ͔͘௒੒௕ஈ֊ (Hyper Growth

    Phase) ʹೖΔલʹɺͦͷ੒ ௕ۂઢ΍ఆண཰ۂઢΛ៉ྷʹඳ͚ΔΑ͏ʹ৴པੑΛߴΊΔࣄ͕ඞཁ Ͱ͢ɻ
  57. ઓུతSRE૊৫࿦ 57 Ref. https://bfore.hongotechgarage.com/entry/evolution_of_a_product ੒௕ظ (Growth Phase) ৴པੑΛߴΊΒΕͳ͚Ε͹ ௒੒௕ஈ֊ʹ ͍࣋ͬͯ͘͜ͱ͸

    Ͱ͖·ͤΜɻ
  58. ઓུతSRE૊৫࿦ 58 ੒௕ظ (Growth Phase) ͦ͜ͰɺStickiness(೪ண౓) / Install਺΍ DAUɺWAUɺ MAUɺ(e.g.

    ޿ࠂऩೖϞσϧͰ͸ແ͍৔߹͸GMV΋ؚΊ Δ)ͳͲͷKPIΛݟͯɺҰఆ਺Λ௒͑ͨΒॱௐʹ੒௕ͯ͠ ͍Δͱ൑அ͢ΔϏδωεతઓུ؍఺Λզʑ΋ҙࣝ͢Δɻ
  59. ઓུతSRE૊৫࿦ 59 ੒௕ظ (Growth Phase) ۩ମతʹ͸Ͳ͏΍ͬͯ?

  60. ઓུత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
  61. ઓུతSRE૊৫࿦ 61 ੒௕ظ (Growth Phase) • ϓϩμΫτ/ࣄۀ͕௿໎͍ͯ͠Δ͜ͱΛೝࣝͨ͠Β • ৗʹશ͕ͯ੒ޭ͢ΔΘ͚Ͱͳ͍ͷ͸౰ͨΓલ •

    ੵۃతʹμ΢ϯαΠδϯά (࣮ࢪલʹࠓޙͷࢪࡦ͸ཁ֬ೝ)
  62. ઓུతSRE૊৫࿦ 62 ੒௕ظ (Growth Phase) • ϓϩμΫτ/ࣄۀ͕੒௕͍ͯ͠Δ͜ͱΛೝࣝͨ͠Β • ੵۃతʹ࠾༻׆ಈ •

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

  64. ઓུతSRE૊৫࿦ 64 ੒௕ظ(Growth Phase): ूத͢΂͖΋ͷ •ΦϯϘʔσΟϯά४උ •Document੔උ (Wiki, README, Src΁ͷίϝϯτ,

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

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

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

    • จ຺΋ཧղͰ͖ͣʹޡղͱ͍͏ϦεΫ΋͋ΔͨΊɺϏδωε తʹ΋νʔϜϫʔΫతʹ΋ϚΠφε
  68. ઓུతSRE૊৫࿦: Document੔උ 68 Ducumentʹ͍ͭͯɺҎԼ͸Ͱ͖͍ͯ·͔͢?
 
 φϨοδ͕ཷΊࠐ·Ε͍ͯΔͷʹɺ ͦͷ৘ใͷݕࡧʹຖճ5-10෼΋͔͔͍ͬͯΔ༷ Ͱ͸͋·Γʹඇޮ཰

  69. ઓུతSRE૊৫࿦: Document੔උ 69 Ducumentʹ͍ͭͯɺҎԼ͸Ͱ͖͍ͯ·͔͢? • ৘ใͷҰݩ؅ཧͱ੔ཧ • ඞཁͳ৘ใ͕ҰՕॴ͘Β͍ʹू·͍ͬͯ·͔͢ʁ • ԿՕॴ΋୳͢ͷ΋ඇޮ཰Ͱϛε͕૿͑·͢

    • e.g.ʮ˓˓͸ͲͷαʔϏεΛ࢖͑͹ྑ͍͔ʯϋοΩϦΘ͔Δ • ੔ཧ͞Ε͍ͯ·͔͢? • e.g.ʮΧςΰϥΠζ͞ΕͨπϦʔߏ଄ʯͰɺͲͷ৘ใ͕Ͳ͜ʹॻ͔Εͯ ͍Δ͔ϋοΩϦ͍ͯ͠Δɺݕࡧਫ਼౓΋ྑ͍
  70. ઓུతSRE૊৫࿦: Document੔උ 70 Ducumentʹ͍ͭͯɺҎԼ͸Ͱ͖͍ͯ·͔͢? • ಋઢΛৗʹҙࣝ! • e.g. README΍λεΫ؅ཧνέοτʹWiki΍DesignDoc ΁ͷಋઢ(URL

    Link) ͕ுΒΕ͍ͯͯɺޙ͔ΒḷΓ΍͍͢ • Ұݩ؅ཧ͕పఈͰ͖͍ͯΕ͹ෆཁͱͳΔ͕ɺͦ͏Ͱͳ͍ ͜ͱ΋ଟ͍ͷͰɺͦͷରԠࡦͱͯ͠΋ྑ͍ํ๏
  71. ઓུతSRE૊৫࿦: Document੔උ 71 Ducumentʹ͍ͭͯɺҎԼ͸Ͱ͖͍ͯ·͔͢? • ू໿؅ཧ • ΨΠυϥΠϯͷ࡞੒ (͜Ε΋ಋઢ) •

    awesomeԿͪΌΒͷ༷ͳrepositoryΛ࡞੒͢Δͷ΋ྑ͍ ΍Γํͩͱࢥ͍·͢ɻ • Ref: Awesome Lists
  72. ઓུతSRE૊৫࿦: Document੔උ 72 ༻ޠͷఆٛͱݴ༿બͼͷॏཁੑ • [௒େࣄ] ϢϏΩλεݴޠΛҙࣝͰ͖͍ͯ·͔͢? • ։ൃ૊৫શମͰݫ֨ͳڞ௨ͷҙຯΛ࣋ͭ༻ޠΛߏ ங͢Δ͜ͱͰ͢

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

    Ҿ༻ݩ: Eric Evans. ΤϦοΫɾΤϰΝϯεͷυϝΠϯۦ ಈઃܭ (DDD)
  74. ઓུతSRE૊৫࿦: Document੔උ 74 ໋໊نଇ΍໋໊ن໿࡞Γɺߏ଄ઃܭ͸ૣ͍͏ͪʹɻ • ࠞཚΛট͘ྫ • Web V1 ͱ

    web2͕࣮͸ಉ͡ҙຯͰɺWeb V2͸ͦ ΕΒͱผɻ͔͠΋pcwebͱ͍͏ͷ΋͋Δ͕ɺͦͷ ҧ͍͸ෆ໌ɻͦΕͧΕͷಠࣗ༻ޠͷҙຯ͸terms΋ ແ͍ͷͰΘ͔Βͳ͍ঢ়ଶʹؕͬͨɻ
  75. ઓུతSRE૊৫࿦: Document੔උ 75 ໋໊نଇ΍໋໊ن໿࡞Γɺߏ଄ઃܭ͸ૣ͍͏ͪʹɻ • ࠞཚΛট͘ྫ • prefix΍suffixͷ෇͚ํ͕ΊͪΌͪ͘ΌͰɺຖճਖ਼نදݱΛۦ࢖ͯ͠ݕ ࡧ͢ΔӋ໨ʹͳ͍ͬͯΔ (ਖ਼نදݱ͕࢖͑Δ؀ڥͳΒ·ͩྑ͍͕...)

    • ͜͏͍ͬͨ͜ͱ͸ɺෳ਺ͷνʔϜͰ࿈ܞ͢Δ͔Βඇৗʹൃੜ͠΍͍͢ • ଟ͘ͷձࣾ͸͜͏͍ͬͨ໰୊Λى͜͢ϦεΫ͕͋Δ • ͔ͩΒͦ͜஫ҙͯ͠పఈ͢Δ͜ͱ͕େࣄ
  76. ઓུతSRE૊৫࿦: Document੔උ 76 • Ducumentʹ͍ͭͯɺҎԼ͸Ͱ͖͍ͯ·͔͢? • ໌֬Խ • RFCΛࢀߟʹ͢Δ •

    MUST (͠ͳ͚Ε͹ͳΒͳ͍), SHOULD (͢Δ΂͖), MUST NOT, SHOULD NOT ΛϋοΩϦͤ͞Δ • https://www.ietf.org/rfc/rfc2119.txt
  77. ઓུతSRE૊৫࿦: Document੔උ 77 • จ຺ͷ༻ҙ • ԿނͦΕ͕ඞཁ͔ɺ୭͕Ͳ͏΍ͬͯ࡞Δͷ͔/࡞ͬͨͷ͔ཧղͰ͖Δ΋ͷ • DesignDocΛࢀߟʹ͢Δ •

    http://ukai.jp/Slides/2007/0907-itpro/ HackersSoftwareEngineering.pdf • Src code΁ͷίϝϯτɺ README • ඞཁ࠷௿ݶͷઆ໌΍खॱ΍ಋઢ
  78. ઓུతSRE૊৫࿦ 78 ੒௕ظ(Growth Phase): ूத͢΂͖΋ͷ ΦϯϘʔσΟϯάͷͨΊͷDocumentΛ༻ҙ͠ɺ ৽نϝϯόʔʹBoostΛֻ͚ΒΕΔΑ͏ʹମ੍ͮ ͘Γʹ΋ྗΛೖΕΔ

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

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

  81. ઓུతSRE૊৫࿦ 81 ੒௕ظ(Growth Phase)ͷޙظ • Microservices (ུ: MS)Խ • ݱ࣌఺Ͱ͸ɺ࠷ॳ͸Monolithic

    Architecture Λ࠾༻ ͍ͯͯ͠ɺ͞ΒͳΔ੒௕ظ(௒੒௕ظ)͕࣮֬ʹདྷ ΔࣄΛೝࣝͰ͖͔ͯΒҠߦ͢ΔProduct΋ଟ͋͘Δ Ͱ͠ΐ͏
  82. ઓུతSRE૊৫࿦ 82 ੒௕ظ(Growth Phase)ͷޙظ • Microservices (ུ: MS)Խ • ϓϩμΫτͷ੒ޭͰɺ૊৫΋੒௕ɾ֦େ͢Δ

    • ૊৫ͷεέʔϧΞοϓʹରԠͰ͖ΔΑ͏ʹ
  83. ઓུతSRE૊৫࿦ 83 ੒௕ظ(Growth Phase)ͷޙظͰɺ༏ઌతʹऔΓ૊Ή͜ͱ • ߏ੒؅ཧπʔϧͷϦϑΝΫλϦϯάͷ։࢝ • ֤πʔϧ౳ͷ൚༻ੑ௥Ճͷ։࢝ • Toil๾໓׆ಈͷ։࢝

    • ඇਪ঑ɾഇࢭ ͷపఈ
 ͜͜·ͰʹDocumentͷ༻ҙ͕ࡁΜͰ͍ͯɺΦϯϘʔσΟϯά͕εϜʔζ ʹߦ͍͑ͯͨΒɺൺֱతૣΊʹ͜ΕΒ΋։࢝͢Δ͜ͱ͕Ͱ͖Δ͸ͣͰ͢ɻ
  84. ઓུతSRE૊৫࿦ 84 ੒௕ظ(Growth Phase)ͷޙظ: Microservices MicroservicesԽ͸؆୯ʹ͸ߦ͔ͳ͍ͷͰɺઐ೚ͷ૊ ৫Λ࡞ΓɺಛԽͤͯ͞৴པੑΛߴΊΔɻ

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

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

    Ҿ༻ݩ: ϓϩμΫγϣϯϨσΟϚΠΫϩαʔϏε
  87. ઓུతSRE૊৫࿦ 87 ◦ “ϞϊϦεΛϚΠΫϩαʔϏεʹ෼ׂ͢Δͱ͖ʹ͸ɺϚΠΫϩ αʔϏεΛ։ൃɺ࣮ߦ͢ΔͨΊͷ҆ఆͨ͠ϓϥοτϑΥʔϜ Λఏڙ͢ΔΠϯϑϥετϥΫνϟ෦໳ͷॏཁੑ͕ɺۃ୺ʹ্ ͕Γ·͢ɻ “ ▪ ϝϧΧϦͰ΋ಉ͘͡ɺϚΠΫϩαʔϏεͷΠϯϑϥΛఏڙ

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

  89. ઓུతSRE૊৫࿦ 89 • ϝϧΧϦͷྫ • SRE team • طଘͷMonolithic architecture

    ͱͦͷMicroservices΁ͷҠߦޙͷӡ༻Λι ϑτ΢ΣΞͷٕज़Λۦ࢖ͯ͠ӡ༻͢Δ • Microservices Platform team • ઌߦͯ͠Microservicesج൫Λ࡞Δઐ໳෦ୂ • Microservices Architecture team • MS Platform ઌߦͯ͠Microservicesج൫Λ࡞Δઐ໳෦ୂ • Microservices Developers • Service ΛMicroservices ʹҠߦ͢Δ։ൃऀ
  90. ઓུతSRE૊৫࿦ 90 • ϚΠΫϩαʔϏεΞʔΩςΫνϟΛऔΓೖΕΔ͜ͱʹΑͬͯɺ ൃੜ͢ΔτϨʔυΦϑΛཧղ͢Δ 
 ◦ “ٯίϯ΢ΣΠͷ๏ଇ͕ಇ͘͜ͱʹΑΔνʔϜͷݽཱԽͱ νʔϜؒͷίϛϡχέʔγϣϯෆ଍” ◦

    “ٕज़తͳεϓϩʔϧ(ෆنଇͳ੒௕) ʹΑΔ๲େͳίετ” ◦ “γεςϜো֐ൃੜύλʔϯͷ૿Ճ” ◦ “ٕज़ͱΠϯϑϥͷϦιʔεୣ͍߹͍”
  91. ઓུతSRE૊৫࿦ 91 ྫ͑αʔϏε୯ҐͰαΠϩԽΛߦͬͯ΋ νʔϜؒͰͷ৴པؔ܎ΛߏஙͰ͖Δ૊৫ͮ͘Γ ͕ॏཁͳ伴ΛѲ͍ͬͯΔ͜ͱΛ͍ࣔͯ͠Δ͜ͱ Λؾ෇͔͞Ε·͢ɻ

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

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

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

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

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

  97. ઓུతSRE૊৫࿦ 97 • ૑ۀ͔࣌ΒϚΠΫϩαʔϏε? 
 ◦ ձࣾʹΑͬͯ͸ɺ͜ͷΞϓϩʔν্͕ख͘ߦ͘৔߹΋͋Δͱ ߟ͑ΒΕ·͢ ▪ ΠϯϑϥͱਓతϦιʔε͕༻ҙͰ͖Δ

    ▪ ձࣾͷࢿۚʹ༨༟͕͋Δ
 ͔͠͠ɺͦΕҎ֎ʹॏཁͳ͜ͱ΋…ɻ ͦΕ͸࣍ͷϖʔδʹ
  98. ઓུతSRE૊৫࿦ 98 • ࠷ॳ͔ΒϚΠΫϩαʔϏε? / খ͞ͳاۀ (e.g. ελʔτΞο ϓ)ͷ৔߹
 ▪

    “৽͍͠ձࣾͷ৽͍͠ΞϓϦέʔγϣϯʹ͸ɺϚΠΫϩαʔ Ϗεʹద੾ʹ෼཭Ͱ͖Δ΄Ͳɺػೳ͕ͦ΋ͦ΋ଟ͋͘Γ· ͤΜɻ” ▪ Ҿ༻ݩ: ϓϩμΫγϣϯϨσΟϚΠΫϩαʔϏε
  99. ઓུతSRE૊৫࿦ 99 গͳ͘ͱ΋ݱ࣌఺Ͱ͸Microservicesͷํ͕ಋೖɺӡ༻ί ετ͕ߴ͍ͷ͸ؒҧ͍͋Γ·ͤΜɻ

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

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

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

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

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

  105. 105 ·ͱΊΔͱ • ϚʔέςΟϯάɺϒϥϯσΟϯά • εέʔϥϏϦςΟͷඞཁ౓ • ࠾༻ɺٕज़޲্ࢥߟͳͲΤϯδχΞࢹ఺
 ͳͲͷ౤ࢿ؍఺ͱ
 •

    ϓϩμΫτͷ੒ޭঢ়گ • ༧ࢉ • ରԠՄೳͳΤϯδχΞ਺
 
 ͳͲͷࢿຊͷόϥϯε͕औΕ͍ͯΔͳΒɺ͍ͭ։࢝ͯ͠΋ྑ͍ͱࢥ͍·͢!
  106. 106 ΞʔΩςΫνϟʔ͸ϫϯύλʔϯͰ͸ͳ͍ • Monolithic architecture => Microservices architecture ͷྲྀΕ͕ओ ྲྀ

    • ͚ͩͲͦΕ͚ͩͰ͸ͳ͍ • બ୒ࢶ͸ଞʹ΋͋Δ
  107. ͦͷଞͷΞʔΩςΫνϟʔ 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
  108. 108 [ิ଍] Service-oriented architecture(SOA)? • ʮͰ͖ΔݶΓڞ༗ʯʮϏδωεػೳͷ࠶ར༻ʯΛॏཁͱ͍ͯ͠ Δ • 4छྨͷαʔϏεʹ෼͔ΕΔ •

    ϏδωεɺΤϯλʔϓϥΠζɺΞϓϦέʔγϣϯɺΠϯϑϥ • ڞ௨ͷ౷࣏ͱج४ > ࣗ༝౓ • ैདྷͷRDBMSΛΑ͘࢖͏ • ݱࡏ͸ɺDevOps / CD౳͸ීٴ࢝͠Ίɻ·ͩओྲྀͳ΋ͷ͸ଘࡏ ͍ͯ͠ͳ͍
  109. 109 [ิ଍] Service-oriented architecture(SOA)? • SOAͷαʔϏεཻ౓ • αʔϏείϯϙʔωϯτͷαΠζ͸ɺখن໛ͷΞϓϦέʔγϣϯαʔ Ϗε͔Βඇৗʹେن໛ͳΤϯλʔϓϥΠζαʔϏε·ͰɺରԠ͕ग़ དྷ·͢ɻ

    • ࣮ࡍʹ͸ɺେن໛ͳ੡඼΍αϒγεςϜʹ૬౰͢Δେ͖͞ͷαʔϏ είϯϙʔωϯτΛSOA಺Ͱ࣋ͭͷ͕Ұൠతɻ • αʔϏείϯϙʔωϯτͷڞ༗͕ॏཁͳ֓೦ͷ̍ͭ • ϦϞʔτΞΫηεϓϩτίϧͱͯ͠ϝοηʔδϯάʢAMQPɺ MSMQʣ͓ΑͼSOAPʹґଘ
  110. SREۀ຿Ͱ΋औΓೖΕͨ ํ͕ྑ͍จԽ 110

  111. SREۀ຿Ͱ΋औΓೖΕͨํ͕ྑ͍จԽ 111 • ΞδϟΠϧ։ൃ • εΫϥϜͰͷεϓϦϯτͷӡ༻͸೉͍͔͠΋ʁ • ݟੵʹ͔͚Δ·ͱ·ͬͨظ͕ؒऔΕͳ͍ • ଟํ໘͔Βͷେྔಥൃ࡞ۀ

    • ͔͠͠ɺεΫϥϜࣗମͷ஌ࣝ͸ඞਢ • ϢϏΩλεݴޠతʹ΋ͦͷଞͰ΋ • SREʹ΋Χϯόϯ͸༗ޮ
  112. SREۀ຿Ͱ΋औΓೖΕͨํ͕ྑ͍จԽ 112 • ΞδϟΠϧ։ൃ • ࠷ۙLego scrumͱ͍͏τϨʔχϯάʹࢀՃͯ͠Έ·ͨ͠ • ֶָ͘͠΂ͨͷͰͱͯ΋Φεεϝ!! •

    λοΫϚϯϞσϧͰ͍͏ػೳظʹૣ͘΋͍͚ͬͯͦ͏! • λοΫϚϯϞσϧͱ͸ https://www.lego4scrum.com/
  113. SREۀ຿Ͱ΋औΓೖΕͨํ͕ྑ͍จԽ 113 " Մಡੑͷҙࣝ / ϦʔμϒϧίʔσΟϯά " e.g. આ໌ม਺ "

    ม਺໊ʹҙຯΛ࣋ͨͤΔ " ม਺໊ΛݟΕ͹ɺͦΕ͕ԿΛ͍ͯ͠Δ͔ཧղͰ͖Δ " ίϝϯτͷॻ͖ํ " Մಡੑͷྑ͍ؔ਺ͷॻ͖ํ " ಡΈ΍͘͢؆ܿʹॻ͚Δ༷ʹ͢ΔςΫχοΫ " อकੑ΍ߋ৽଎౓Λ্͛ɺকདྷͷࣗ෼ͷෛ୲΋Լ͛Δ " ͱͯ΋ॏཁͳ͜ͱ͕٧·͍ͬͯΔ " ڞ௨ೝࣝΛ࣋ͨͳ͍ಠུࣗޠͷ࢖༻ېࢭ
  114. GitΛ࢖ͬͨ։ൃͱ CodeReview࠶ߟ 114

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

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

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

  118. 118 Pull Request, CodeReview

  119. 119 Pull Request(P-R)ͷཻ౓͸Ͳͷ͘Β͍͕ྑ͍? • Release early, Release often
 ʢૣΊͷϦϦʔεɺ͠͹͠͹ߋ৽͢Δ) ͷCycle

    Ͱճ ͍͚ͯ͠Δ͘Β͍͕ΦεεϝͰ͢ɻ • ͜Ε͸ΞδϟΠϧ։ൃͷߟ͑/ਐΊํ
  120. 120 Pull Request(P-R)ͷཻ౓͸Ͳͷ͘Β͍͕ྑ͍? ۩ମతʹ͸?

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

    • Reviewer͔Β΋༠ಋͰ͖ΔͱεϜʔζ
  122. 122 P-R͸ग़དྷΔ͚ͩখ͘͞ऴΘΒͤΔͱ͜Ε͚ͩಘ " Review͞Ε΍͘͢ͳΔ " Reviewerͷෛ୲͕ݮΒͤΔ " Merged Cycle͕ૣ·Δ "

    ਝ଎ͳ෮چରԠ͕ग़དྷΔ༷ʹͳΔ " Conflict΋ݮগ͢Δ " Deploy / ReleaseͷӨڹΛখ͘͞Ͱ͖Δ
 ◦ ݁Ռɺ৴པੑΛ޲্Ͱ͖ΔՄೳੑ
  123. 123 P-R͸ग़དྷΔ͚ͩখ͘͢͞Δͱ͜Ε͚ͩಘ Mircoservices + MicroPullRequest = ?

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

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

  126. 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.
  127. [ิ଍] 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: ! ͋ͱɺࢲ͸͜ΕΛ෇͚Ճ͑Δͱྑͦ͞͏ͱࢥ͏Μ͚ͩ ͲɺͲ͏ࢥ͍·͔͢?ʯ
  128. ·ͱΊ 128

  129. ·ͱΊ 129 • Ϗδωε·Ͱࢹ໺֯Λ޿͛ͯઓུతʹ! • SRE΋ϏδωεશମΛݟΔඞཁ͕͋ΔΤϯδχΞͱཧղ͢Δ • ঢ়گʹ߹Θͤͨ৬຿ͱ੹຿Λߟ࡯͢Δඞཁ͕͋Δ • ϓϩμΫτ/Ϗδωεͷ੒௕/੒ޭ͕Ұ൪

    • ࠓͷ࣌୅΋Document͸େࣄ! • Microservices͸ಋೖܭըΛ͔ͬ͠Γͱ! • ྑ͍ͱࢥͬͨจԽ͸औΓೖΕͯΈΔ • ࣌୅͸ɺϚΠΫϩʓʓʓ / Microdevelopments !!
  130. ࠷ޙʹ 130 ࠓ೔ͷ࿩Λฉ͍ͯ/ಡΜͰ ਂ͍ཧղͱڞײ + ڧ͍ڵຯ + ৘೤ => Ұॹʹಇ͖͍ͨ

    ͱࢥͬͯ͘Εͨ͋ͳͨ!! SRE EMΛܹืूதͰ͢! TwitterͰktykogm·ͰDM͍ͩ͘͞ or ࠙਌ձ౳Ͱ΋͓࿩͠·͠ΐ͏ɻ ҿΈͰ΋༠͍ͬͯͩ͘͞ʂʂ
  131. 131 QA