Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

ktykogm
January 18, 2019

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

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

ktykogm

January 18, 2019
Tweet

More Decks by ktykogm

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  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.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  9. ϝϧΧϦSREͷ୲౰ൣғ
    9

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  16. SREsΛߟ͑Δ
    16

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  38. Toil limit
    38
    Toilͱ͸SREຊ΋ग़ͯ͘Δ֓೦

    ToilͷՄೳੑ͕ߴ͍࡞ۀͱ͸

    • ख࡞ۀͰ͋Δ͜ͱ
    • ܁Γฦ͞ΕΔ͜ͱ
    • ࣗಈԽͰ͖Δ͜ͱ
    • ઓज़తͰ͋Δ͜ͱ
    • ௕ظతͳՁ஋Λ࣋ͨͳ͍͜ͱ
    • αʔϏεͷ੒௕ʹରͯ͠O(n)Ͱ͋Δ͜ͱ

    View Slide

  39. Toil limit
    39
    • EM/PMͳͲؚΊͯؔ܎ऀશһ͕ཧղΛ͢Δ

    ඞཁ͕͋Δ͜ͱ
    • ͦΕ͸ɺɺɺToil͕SREػೳΛଛͳ͏ࣄ࣮

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  45. 45
    Toil ͷัଊ

    View Slide

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

    https://toggl.com/

    task categories tracking

    View Slide

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

    View Slide

  48. 48
    Toilͷัଊ
    " ΋͠΋Toilͷัଊ͕೉͍͠৔߹
    " εϓϦϯτ͕Մೳͳঢ়گͳΒɺٯʹϕϩγςΟΛܭଌ͢Ε͹
    ྑ͍

    “͔͠͠ɺToil͸୹࣌ؒͰ͋ΔɺׂΓࠐΈͰ͋Δɺ਺͕ଟ͍ɺ·ͨ͸ToilͱEngineering
    ͷ۠ผ͸࣮͸೉͍͠ͱ͍ͬͨΑ͏ʹܭଌ͕೉͘͠ͳΔΑ͏ͳੑ࣭Λ΋ͭɻ ͕ͨͬ͠
    ͯɺ௚઀ToilΛܭଌ͢ΔͷͰ͸ͳ͘ɺϕϩγςΟΛܭଌ͢Δ͜ͱʹͨ͠ɻ”
    2019೥SREߟ / Ώ͏͏͖ϒϩά/

    View Slide

  49. ઓུతSRE૊৫࿦
    49

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  68. ઓུతSRE૊৫࿦: Document੔උ
    68
    Ducumentʹ͍ͭͯɺҎԼ͸Ͱ͖͍ͯ·͔͢?


    φϨοδ͕ཷΊࠐ·Ε͍ͯΔͷʹɺ
    ͦͷ৘ใͷݕࡧʹຖճ5-10෼΋͔͔͍ͬͯΔ༷
    Ͱ͸͋·Γʹඇޮ཰

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  83. ઓུతSRE૊৫࿦
    83
    ੒௕ظ(Growth Phase)ͷޙظͰɺ༏ઌతʹऔΓ૊Ή͜ͱ
    • ߏ੒؅ཧπʔϧͷϦϑΝΫλϦϯάͷ։࢝
    • ֤πʔϧ౳ͷ൚༻ੑ௥Ճͷ։࢝
    • Toil๾໓׆ಈͷ։࢝
    • ඇਪ঑ɾഇࢭ ͷపఈ

    ͜͜·ͰʹDocumentͷ༻ҙ͕ࡁΜͰ͍ͯɺΦϯϘʔσΟϯά͕εϜʔζ
    ʹߦ͍͑ͯͨΒɺൺֱతૣΊʹ͜ΕΒ΋։࢝͢Δ͜ͱ͕Ͱ͖Δ͸ͣͰ͢ɻ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  88. ઓུతSRE૊৫࿦
    88
    • ϚΠΫϩαʔϏενʔϜͷ։ൃऀʹϚΠΫϩαʔϏεͷߏ੒؅
    ཧΛ೚ͤΔ͜ͱ͸Ξϯνύλʔϯ

    ◦ ϚΠΫϩαʔϏεϓϥοτϑΥʔϜ·ͰΤΩεύʔτʹͳ
    Δ͜ͱΛٻΊΔͷ͸ྑ͘ͳ͍͠ɺαʔϏε։ൃΛ㚽Ζʹग़
    དྷͳ͍

    View Slide

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

    View Slide

  90. ઓུతSRE૊৫࿦
    90
    • ϚΠΫϩαʔϏεΞʔΩςΫνϟΛऔΓೖΕΔ͜ͱʹΑͬͯɺ
    ൃੜ͢ΔτϨʔυΦϑΛཧղ͢Δ 

    ◦ “ٯίϯ΢ΣΠͷ๏ଇ͕ಇ͘͜ͱʹΑΔνʔϜͷݽཱԽͱ
    νʔϜؒͷίϛϡχέʔγϣϯෆ଍”
    ◦ “ٕज़తͳεϓϩʔϧ(ෆنଇͳ੒௕) ʹΑΔ๲େͳίετ”
    ◦ “γεςϜো֐ൃੜύλʔϯͷ૿Ճ”
    ◦ “ٕज़ͱΠϯϑϥͷϦιʔεୣ͍߹͍”

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  97. ઓུతSRE૊৫࿦
    97
    • ૑ۀ͔࣌ΒϚΠΫϩαʔϏε? 

    ◦ ձࣾʹΑͬͯ͸ɺ͜ͷΞϓϩʔν্͕ख͘ߦ͘৔߹΋͋Δͱ
    ߟ͑ΒΕ·͢
    ▪ ΠϯϑϥͱਓతϦιʔε͕༻ҙͰ͖Δ
    ▪ ձࣾͷࢿۚʹ༨༟͕͋Δ

    ͔͠͠ɺͦΕҎ֎ʹॏཁͳ͜ͱ΋…ɻ
    ͦΕ͸࣍ͷϖʔδʹ

    View Slide

  98. ઓུతSRE૊৫࿦
    98
    • ࠷ॳ͔ΒϚΠΫϩαʔϏε? / খ͞ͳاۀ (e.g. ελʔτΞο
    ϓ)ͷ৔߹

    ▪ “৽͍͠ձࣾͷ৽͍͠ΞϓϦέʔγϣϯʹ͸ɺϚΠΫϩαʔ
    Ϗεʹద੾ʹ෼཭Ͱ͖Δ΄Ͳɺػೳ͕ͦ΋ͦ΋ଟ͋͘Γ·
    ͤΜɻ”
    ▪ Ҿ༻ݩ: ϓϩμΫγϣϯϨσΟϚΠΫϩαʔϏε

    View Slide

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

    View Slide

  100. ઓུతSRE૊৫࿦
    100
    Monolithͷํ͕ίετ͕௿͍ͨΊɺελʔτΞοϓ΍௿
    ༧ࢉϓϩδΣΫτʹ͓͍ͯ͸޿ࠂΛଧͯΔػձΛଟ࣋ͯ͘
    Δɻ

    ݁Ռɺͦͷํ͕ϏδωεΛ੒ޭʹಋ͖΍͍͢ঢ়گʹ͋Δ
    ࣄ͕ଟ͍͜ͱ΋ཧղ͓͔ͯ͠ͳ͍ͱ͍͚·ͤΜɻ

    View Slide

  101. ઓུతSRE૊৫࿦
    101
    ͪͳΈʹϝϧΧϦͰ΋ݱࡏMicroservicesԽΛߦͳ͍ͬͯ
    ·͕͢ɺ٬؍తʹݟͯ΋ܾͯ͠ѱ͘ͳ͍λΠϛϯάʹ։࢝
    ͨ͠ͱݸਓతʹ͸ݟ͍ͯ·͢


    ϓϩμΫτͷ੒௕͔ΒඞཁʹഭΒΕͨࣄΛલఏʹɺ͋Δఔ౓దͨ͠Τϯδ
    χΞͷ਺ͱࢿ͕ۚ༻ҙग़དྷͨஈ֊ͰҠߦΛܾఆͨ͠ͱߟ͑ΒΕΔͨΊͰ͢

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    ͳͲͷ౤ࢿ؍఺ͱ

    • ϓϩμΫτͷ੒ޭঢ়گ
    • ༧ࢉ
    • ରԠՄೳͳΤϯδχΞ਺


    ͳͲͷࢿຊͷόϥϯε͕औΕ͍ͯΔͳΒɺ͍ͭ։࢝ͯ͠΋ྑ͍ͱࢥ͍·͢!

    View Slide

  106. 106
    ΞʔΩςΫνϟʔ͸ϫϯύλʔϯͰ͸ͳ͍
    • Monolithic architecture => Microservices architecture ͷྲྀΕ͕ओ

    • ͚ͩͲͦΕ͚ͩͰ͸ͳ͍
    • બ୒ࢶ͸ଞʹ΋͋Δ

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  118. 118
    Pull Request, CodeReview

    View Slide

  119. 119
    Pull Request(P-R)ͷཻ౓͸Ͳͷ͘Β͍͕ྑ͍?
    • Release early, Release often

    ʢૣΊͷϦϦʔεɺ͠͹͠͹ߋ৽͢Δ) ͷCycle Ͱճ
    ͍͚ͯ͠Δ͘Β͍͕ΦεεϝͰ͢ɻ
    • ͜Ε͸ΞδϟΠϧ։ൃͷߟ͑/ਐΊํ

    View Slide

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

    View Slide

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

    View Slide

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

    ◦ ݁Ռɺ৴པੑΛ޲্Ͱ͖ΔՄೳੑ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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.

    View Slide

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

    View Slide

  128. ·ͱΊ
    128

    View Slide

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

    View Slide

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

    View Slide

  131. 131
    QA

    View Slide