バス因子が自分で バス因子を脱するための方法

バス因子が自分で バス因子を脱するための方法

Rails Developers Meetup 2018: Day 2

あなたのプロジェクトには、バスに轢かれたらプロジェクトが破綻する人が何人いますか?

自社サービスを運営している組織において、サービスのスケールのためには開発組織のスケールが必要不可欠です。

急成長中である日本初の Ruby on Rails で作られているフリマアプリ フリルを開発するFablicのエンジニア組織において、バス因子である私が、組織のスケールのために脱バス因子するために同僚と行ってきたことを成功失敗両事例お話します。

Fda25022237b4e795fee7a9996ffc4bf?s=128

sinamon129

March 25, 2018
Tweet

Transcript

  1. 2.

    2 ϓ ϩ ϑ Ο ʔ ϧ Fablic, inc. Engineer

    ยࢁɹைඒ ͔ͨ΍·ɹ͠΄Έʣ ͠ͳ΋Μ @sinamon129
  2. 3.

    ϑ Ϧ Ϛ Ξ ϓ Ϧ ʮ ϥ Ϋ Ϛ

    ʢ چ ϑ Ϧ ϧ ʣ ʯ
  3. 13.

    13 ό ε Ҽ ࢠ Ͱ ͋ Δ ͜ ͱ

    Λ ࣗ ֮ ͠ ͨ ࣌ ෳ਺ਓ͔Βෳ਺ճݴΘΕΔ ಉ྅ͨΜ ͠ͳ͞Μ͍ͳ͍ͱ΍͹͍ ಛʹࢲ͕Կ͔Λߴ଎ʹղܾͨ͠ࡍ
  4. 14.
  5. 15.

    15 ϥ Ϋ Ϛ ʢ چ ϑ Ϧ ϧ ʣ

    ೥݄೔ɹαʔϏε։࢝ ೔ຊॳͷϑϦϚΞϓϦ $UP$ͷ&$  ໿೥͙Β͍Քಇ  
  6. 16.

    16 α ʔ Ϗ ε ͷ ৳ ͼ ง ғ

    ؾ ʣ ೥ ݄ ೥ ݄ ೥ ݄ ೥݄ ख਺ྉແྉԽ
  7. 17.

    17 ϓ ϩ μ Ϋ τ ͷ ୲ ౰ Τ

    ϯ δ χ Ξ ͷ ਓ ਺ ʢ ง ғ ؾ ʣ ೥݄ࠒ Šख਺ྉແྉԽ ೥݄ Š ೥݄ࠒ ೥݄ࠒɹ ŠϥΫϚԽŠ ݱࡏ
  8. 18.

    18 ෳ ਺ ͷ 3 B J M T Ξ

    ϓ Ϧ έ ʔ γ ϣ ϯ ɾ ୯ Ұ ͷ % # ݸͷ3BJMT"QQMJDBUJPOɾ୯Ұͷ%# ෼அ͞ΕͨϞϊϦε Ϟσϧ૚Λڞ௨ϥΠϒϥϦԽ్த
  9. 19.

    19 Ξ ϓ Ϧ έ ʔ γ ϣ ϯ ͷ

    ߏ ੒ བྷΈ߹͏ΞϓϦέʔγϣϯ ˞͜ͷਤͰશମͷׂ͘Β͍
  10. 20.

    20 ॳ ݟ ͷ ਓ ͕ ࠞ ཚ ͢ Δ

    Ξ Ϩ ʢ Ұ ྫ ʣ BQJ "1*Ҏ֎΋͋Δ͠ɺXFC͔Β΋ୟ͘ XFCWJFX ΞϓϦ಺ͷΈͳΒͣ XFCϒϥ΢β͔Β΋ࢀর XFC ΞϓϦ͔Β΋։͘
  11. 21.

    21 ί ϯ ϙ ʔ ω ϯ τ த ֩

     Ұ ෦ ɹ γ ϯ ϓ ϧ W F S ʣ औҾ ࢧ෷ ഑ૹ ঎඼ λΠϜϥΠϯ ݕࡧ Ϣʔβʔ ͓஌Βͤ ؅ཧπʔϧ FUDʜ
  12. 22.

    22 Ξ ϓ Ϧ έ ʔ γ ϣ ϯ ɾ

    α ʔ Ϗ ε ͷ ঢ় گ ʢ · ͱ Ί ʣ େن໛Ͱෳ਺ͳ3BJMT"QQMJDBUJPO ίϯϙʔωϯτ͕ෳࡶʹབྷΈ߹͏ αʔϏε͕ٸܹʹ੒௕ ࠾༻ͯ͠ਓ͕૿͑Δɾਓ଍Γͳ͍
  13. 25.

    25 ϝ Π ϯ Ͱ ΍ ͬ ͯ ͖ ͨ

    ͜ ͱ ࡉ͔͍JTTVFΛ΍͚ͬͭΔϚϯ ˣ ݕࡧվળɾ&MBTUJDTFBSDI ˣ ΰϦΰϦ৽ػೳ։ൃ΍ػೳվળ ˣ ΧελϚʔαϙʔτͷۀ຿վળ
  14. 26.

    26 Ϳ ͬ յ Ε Δ ͷ ͱ ڞ ʹ

    ڧ ͘ ͳ Δ ʢ     ʙ     ʣ ϨϓϦέʔγϣϯ஗Ԇ ͿͬյΕͨσʔλͷ௚͠ํΛ֮͑Δ 71$Ҡߦɾ"VSPSB ϔϏʔΫΤϦͷνϡʔχϯάΛ֮͑Δ &MBTUJDFBSDIো֐ɾVQEBUF &$Πϯελϯεཱͯ௚͠·͘Δʢ"84पΓͷجૅΛֶͿʣ &MBTUJDTFBSDIͷύϥϝʔλʔνϡʔχϯά
  15. 29.

    29 ෆ ۩ ߹ ର Ԡ Λ ੵ Έ ॏ

    Ͷ ͯ ͍ ͘ ͏ ͪ ʹ ʜ ίʔυϨϏϡʔͰݟΔ΂͖؍఺͕ Θ͔ͬͯ͘Δʢ࢓༷໘ɾίʔυ໘ʣ ϦϦʔεલʹ્ࢭͰ͖ΔΑ͏ʹ ࣗ෼͕࣮૷͢Δ࣌ʹ΋ੜ͔͞ΕΔ
  16. 30.

    30 ख ਺ ྉ ແ ྉ Խ ɾ ෳ ਺

    ͷ େ ن ໛ ϓ ϩ Ϟ ʔ γ ϣ ϯ ɾ α ʔ Ϗ ε ֦ େ όάɾো֐ɾӡ༻ͷ૿Ճ ྫ ଟॏىಈ๷ࢭϩοΫ௨஌͕࣌ใ ྫ ϧʔϓͰऔΒͣʹΫΤϦͰҾ͘Α͏ʹ ͍ͯͨ͠෦෼ͰJO۟ͷத਎͕਺ेສ݅ʹ૿͑ͯ .Z42-TFSWFS͔Β઀ଓΛ੾ΒΕͯ͠·͏
  17. 33.

    33 Ͳ ͜ ͷ 4 M B D L ͷ

    ν ϟ ϯ ω ϧ ʹ ΋ ͍ Δ ಉ྅ͨΜ Ͳ͜ʹॻ͍ͯ΋͠ͳ͞Μ ͕౴͑ͯ͘ΕΔXX ஌ͬͱ͘ͱศར͔ͩΒ৭ΜͳॴʹೖͬͯͨΒ͍ͭͷؒʹ͔ʜ ࢲ͕͜͜Ͱ౴͑Δ͜ͱͰͦͷਓͷ࢓ࣄ͕ਐΉͳΒɻ
  18. 34.

    34 Χ ε λ Ϛ ʔ α ϙ ʔ τ

    ͷ ۀ ຿ վ ળ ୔ࢁͷػೳʹର͢Δ؅ཧπʔϧ վम͢ΔͨΊʹ޿͘࢓༷Λ೺Ѳ ͢Δඞཁੑ ͜͏͍͏ࣄͰ͖·͔͢ʁͷٙ໰ ʹ౴͑ΔͨΊʹௐ΂Δ
  19. 35.

    35 Χ ό ʔ ൣ ғ ʢ ࡞ ੒ ɾ

    म ਖ਼ ɾ ڍ ಈ Λ ஌ ͬ ͯ ͍ Δ ʣ ͦͷଞͷ খ͞Ίͷ ίϯϙʔωϯτ औҾ ࢧ෷ ഑ૹ ঎඼ λΠϜϥΠϯ ݕࡧ Ϣʔβʔ ͓஌Βͤ ؅ཧπʔϧ FUDʜ
  20. 36.

    36 Χ ό ʔ ൣ ғ ʢ ࡞ ੒ ɾ

    म ਖ਼ ɾ ڍ ಈ Λ ஌ ͬ ͯ ͍ Δ ʣ ͦͷଞͷ খ͞Ίͷ ίϯϙʔωϯτ औҾ ࢧ෷ ഑ૹ ঎඼ λΠϜϥΠϯ ݕࡧ Ϣʔβʔ ͓஌Βͤ ؅ཧπʔϧ FUDʜ ೴಺ʹେମͷࡧҾ͕͋Δঢ়ଶ ޿ൣғͷυϝΠϯΤΩεύʔτ ۀ຿υϝΠϯ஌ࣝΛ࣠ʹ ૊৫Λઌಋ͢Δ໾ׂΛ୲͏
  21. 38.

    38   Ͳ ͏ ΍ ͬ ͯ ό ε

    Ҽ ࢠ ͕ ੜ · Ε ͨ ͔ ʢ · ͱ Ί ʣ ελʔτΞοϓ͔Β αʔϏεͷ੒௕ͷߥ೾ʹᎍ·Ε όεҼࢠ஀ੜ
  22. 41.

    41 ΰ Ϧ ΰ Ϧ ਐ Ί ͨ ͍ ͷ

    ʹ ʜ ೔ͷεέδϡʔϧ
  23. 42.

    42 ό ε Ҽ ࢠ ʹ ͳ Δ લ ͷ

    ͔ Β ͷ ࣗ ෼ ͷ ม Խ όεҼࢠʹͳΔલ ઃܭɾ࣮૷ʹઐ೦Ͱ͖͍ͯΔ ਓΛॿ͚Δ༨༟͕͋Δ ʴЋΛߟ͑Δ༨༟͕͋Δ
  24. 43.

    43 ό ε Ҽ ࢠ ʹ ͳ Δ લ ͷ

    ͔ Β ͷ ࣗ ෼ ͷ ม Խ όεҼࢠʹͳ͔ͬͯΒ ։ൃ͕ऴΘΒͳ͍ ଞͷਓͷ࢓ࣄΛࢭΊͯ͠·͏ ʴЋͷ͜ͱ͕Ͱ͖ͳ͍
  25. 47.

    47 ε λ ʔ τ Ξ ο ϓ ͷ ੒

    ௕ ʹ Α Γ αʔϏε৳͹͍ͨ͠ʂ ˣ ਓ͕଍Γͳ͘ͳΔ ˣ ͸ͨΒ͘ਓ͕૿͑Δ
  26. 48.

    48 ό ε Ҽ ࢠ ͕ ࢓ ࣄ Λ ๊

    ͑ ࠐ Μ Ͱ ͍ Δ ͱ ۀ຿஌ࣝͷภΓ͕ग़Δ ୯Ұো֐఺ʹͳͬͯ͏·͘ਐ·͍ ྫʣ͜ͷਓʹฉ͔ͳ͍ͱΘ͔Βͳ͍͚Ͳ๩ͦ͠͏ ྫ ίʔυϨϏϡʔΛଧͪฦ͢ͷʹ͕͔͔࣌ؒΔ
  27. 49.

    49 ό ε Ҽ ࢠ ͕ ࢓ ࣄ Λ ๊

    ͑ ࠐ Μ Ͱ ͍ Δ ͱ ૊৫͕εέʔϧ͠ͳ͍ ݁ՌαʔϏε΋εέʔϧ͠ͳ͍
  28. 51.

    51 Կ ނ ό ε Ҽ ࢠ Λ ݮ Β

    ͢ ͷ ͔ ʁ · ͱ Ί ʣ ΍Γ͍ͨ࢓ࣄΛͰ͖ΔΑ͏ʹ ૊৫Λεέʔϧ͢ΔͨΊʹ
  29. 55.

    55 ಉ ྅ ͕ ม ͑ ͯ ͘ Ε ͨ

    ͜ ͱ  ͠ͳ΋Μ ख఻͓͏͔ͱݴΘΕ͚Ͳ Ͳ͏ख఻ͬͯ΋Β͓͏ɻɻ υΩϡϝϯτԽ͍͚ͨ͠Ͳ ࣌ؒͳ͍͠ͳ͊ɻɻ
  30. 56.

    56 ಉ ྅ ͕ ม ͑ ͯ ͘ Ε ͨ

    ͜ ͱ  ಉ྅ͨΜ ࣭໰͢Δ͔Βޱ಄Ͱ౴͑ͯ ͘ΕͨΒ·ͱΊͱ͘Αʂ ͋ͱͰΈͯͶʂ
  31. 57.

    57 ಉ ྅ ͕ ม ͑ ͯ ͘ Ε ͨ

    ͜ ͱ  ͠ͳ΋Μ ಉ྅ͨΜ͞Μਆʂʂʂʂʂ
  32. 58.

    58 ಉ ྅ ͕ ม ͑ ͯ ͘ Ε ͨ

    ͜ ͱ  ࣗ෼͕ࢿྉΛ༻ҙͤͣʹ ଞͷਓʹυΩϡϝϯτԽΛཔΉ ൃ૝͕ͳ͔ͬͨ ৘ใͷڞ༗Λ·ͣઌʹ͢Δ΂͠
  33. 59.

    59 ಉ ྅ ͕ ม ͑ ͯ ͘ Ε ͨ

    ͜ ͱ  ͠ͳ΋Μ ͍͍ͭͭɺ୭͔෼͔Δਓ͓ ئ͍͠·͢ͱ͔ʹ൓Ԡͪ͠Ό ͏ΜͩΑͳ͊ɻ
  34. 60.

    60 ಉ ྅ ͕ ม ͑ ͯ ͘ Ε ͨ

    ͜ ͱ  ಉ྅ͨΜ ͠ͳ͞Μ͕΍ͬͨΒΈΜͳ ͕Ͱ͖ͳ͘ͳΔ͔Β΍ͬͪΌ ͩΊͰ͢Αʔ ࣗ෼΍Γ·͢Αʔ
  35. 61.

    61 ಉ ྅ ͕ ม ͑ ͯ ͘ Ε ͨ

    ͜ ͱ  ͠ͳ΋Μ ͔ͨ͠ʹͦ͏΍ͳʜ  ͡Ό͋ͱΓ͋͑ͣಉ྅ͨΜ ͞Μʹ͓ئ͍͠·͢Ͷ
  36. 62.

    62 ಉ ྅ ͕ ม ͑ ͯ ͘ Ε ͨ

    ͜ ͱ  ૣ͘ݕ஌ͯ͠΍Δͷ͕ਖ਼ٛ ͩͱࢥ͍ͬͯͨ पΓ͔Βशಘ͢ΔػձΛ ୣ͍ͬͯΔࣄʹؾ͚͍ͮͯͳ͔ͬͨ
  37. 63.

    63 ಉ ྅ ͕ ࢲ Λ ม ͑ ͯ ͘

    Ε ͨ ͜ ͱ · ͱ Ί ʣ ͳΜͰ΋ࣗ෼Ͱ΍Ζ͏ͱͤͣʹ ৘ใΛڞ༗͢Δ͜ͱΛ༏ઌ͢Δ पΓ͔ΒػձΛୣΘͳ͍
  38. 70.

    70 ૊ ৫ Λ ม ͑ ͯ ͘ ʢ 4

    3 & ෦ ॺ ͷ ઃ ཱ ४ උ ʣ νʔϜͷ੹຿ൣғΛఆٛ͠ɺ ूதͰ͖ΔΑ͏ʹ ಛʹ ΍Βͳ͍͜ͱͷൣғΛ໌֬ʹͨ͠
  39. 71.

    71 ૊ ৫ Λ ม ͑ ͯ ͘ ʢ 4

    3 & ෦ ॺ ͷ ઃ ཱ ४ උ ʣ ΍Βͳ͍ൣғʹೖ͍ͬͯͯ ݱࡏ΍͍ͬͯΔ͜ͱΛ ঃʑʹ෼཭ɾҾ͖ܧ͗
  40. 72.

    72 ૊ ৫ ͕ ม Θ ͬ ͯ ͍ ͘

    ॏཁ෦෼ͷίϯϙʔωϯτʹ ୲౰ऀ͕ਓҎ্ஔ͔ΕΔ༷ʹͳΔ ൓Ԡېࢭྩ͕ग़ͯ ڧ੍తʹख཭Ε͢Δ
  41. 73.

    73 ૊ ৫ શ ମ ͕ ม Θ ͬ ͨ

    ͜ ͱ ʢ · ͱ Ί ʣ εέʔϧͷͨΊʹ ਓ͕ؒϔϧγʔͳঢ়ଶΛ໨ࢦͩ͢͠ ίϯϙʔωϯτઐ೚ԽͰ ख཭͠΍͘͢ͳΔ
  42. 79.

    79 ੵ Έ ॏ Ͷ Ͱ ΍ ͬ ͯ ͖

    ͨ ෦ ෼ ਓؒΞϥʔτʢؾ͖ͮʣ ޱ͔Β࢓༷Λు͚Δʢશମ೺Ѳʣ ୳ఁʢ໰୊ͷࠜຊΛ୳͢ʣ
  43. 81.

    81 ਓ ؒ Ξ ϥ ʔ τ ʢ ؾ ͮ

    ͖ ʣ &NFSHFODZʹྲྀΕΔ৘ใྔ͕ ଟ͗͢Δ ͻͱ໨ͰԿ͕͖ͨΒͲ͏͢Δ ͕Θ͔Βͳ͍ঢ়ଶ
  44. 82.

    82 ਓ ؒ Ξ ϥ ʔ τ ʢ ؾ ͮ

    ͖ ʣ ࢲ͕΍͹͍࣌ʹڣͿͷ͕ޮՌత ˣ ௨஌߲໨ͷ੔ཧ 4-0ͷఆٛ ΞϥʔτͱରԠํ๏Ληοτʹ
  45. 83.

    83 ޱ ͔ Β ࢓ ༷ Λ ు ͚ Δ

    ʢ શ ମ ೺ Ѳ ʣ தͷਓͰ΋஌Βͳ͍ػೳ͕ଟ਺͋Δ ιʔείʔυΛಡΉલͷ લஈ֊ͷ৘ใ͕ͳ͍
  46. 84.

    84 ޱ ͔ Β ࢓ ༷ Λ ు ͚ Δ

    ʢ શ ମ ೺ Ѳ ʣ ࠓ೔YYΛׂͱϔϏʔʹ࢖͏ΜͰ͚͢ Ͳɺେৎ෉Ͱ͔͢ʁͱ ΠϯϑϥΤϯδχΞʹ֬ೝ͕͘Δ
  47. 85.

    85 ޱ ͔ Β ࢓ ༷ Λ ు ͚ Δ

    ʢ શ ମ ೺ Ѳ ʣ YYͬͯԿͷػೳͰ ԿͷϦιʔεΛ ͲΕ͘Β͍࢖͏΋ͷͰ ϔϏʔʹ࢖͏ͱԿʹӨڹ͕Ͱͦ͏͔
  48. 86.

    86 ޱ ͔ Β ࢓ ༷ Λ ు ͚ Δ

    ʢ શ ମ ೺ Ѳ ʣ ͦͷձ࿩Λฉ͍ͯ࢓༷Λޱ͔Βు͘ ˣ ιʔείʔυΛݟΔલஈ֊ͷ ৘ใΛ·ͱΊΔ ࢓༷ͷෳࡶ౓Λ΁Β͢
  49. 88.

    88 ୳ ఁ ʢ ໰ ୊ ͷ ࠜ ຊ Λ

    ୳ ͢ ʣ ͓໰͍߹Θ͔ͤΒͷௐࠪͰ ෆ۩߹͔΋͠Εͳ͍ Ϣʔβʔ͞Μ͕دͤͯ͘Εͨ ৘ใ͕அยత
  50. 89.

    89 ୳ ఁ ʢ ໰ ୊ ͷ ࠜ ຊ Λ

    ୳ ͢ ʣ %#ͷσʔλɾϩάΛूΊͯݟͯ ݕ౼Λ͚ͭͯݪҼΛಛఆ͢Δ ˣ ௐࠪ͠΍͍͢ϩάͷஷΊํʹ͢Δ ϖΞΦϖϨʔγϣϯ
  51. 90.

    90 ຊ ࣭ ͷ ෦ ෼ Λ ࠶ ݱ ੑ

    ͷ ͋ Δ ܗ Ͱ ؐ ݩ ͢ Δ ಈ ͖ Λ ͢ Δ ௨஌߲໨ͷ੔ཧɾ4-0ͷఆٛ ΞϥʔτͱରԠํ๏Ληοτʹ ιʔείʔυΛݟΔલஈ֊ͷ৘ใ·ͱΊ ࢓༷ͷෳࡶ౓Λ΁Β͢ ௐࠪ͠΍͍͢ϩάͷஷΊํʹ͢Δ ϖΞΦϖϨʔγϣϯ
  52. 91.

    91 ࢲ ͕ ಈ ͍ ͨ ʢ ͯ Δ ʣ

    ͜ ͱ · ͱ Ί ʣ ࣗ෼ͷ΍͖ͬͯͨߦಈΛ׬શʹଞͷ ਓʹ࠶ݱͯ͠΋Β͏ͷͰ͸ͳ͘ ຊ࣭Λ૊৫ʹؐݩͰ͖ΔΑ͏ʹಈ͘ όεҼࢠ͔ͩͬͨΒͦ͜Ͱ͖Δ͜ͱ
  53. 93.

    93 ό ε Ҽ ࢠ Λ ࣗ ෼ Ͱ ୤

    ͢ Δ ͨ Ί ʹ ૊৫Λม͑ΔߦಈΛ͢Δ ಉ྅ʹڠྗͯ͠΋Β͍ ࣗ෼ͷϚΠϯυηοτΛม͑Δ όεҼࢠʹͳ͔ͬͨΒͦ͜ Ͱ͖Δ͜ͱΛ΍Δ