Git インフラ選定事例 - 株式会社クルウィットが GitHub を選んだ理由

Git インフラ選定事例 - 株式会社クルウィットが GitHub を選んだ理由

GitHub 勉強会 in Kanazawa (Kanazawa.rb meetup 61 2017/09/16) の発表資料。
Git インフラとして GitHub を選択するにいたった評価軸に関するお話。

Cb057b585817007ba2a931a81ef9398f?s=128

Tomokazu Kiyohara

September 16, 2017
Tweet

Transcript

  1. (JUΠϯϑϥબఆࣄྫ גࣜձࣾΫϧ΢Οοτ͕(JU)VCΛબΜͩཧ༝ 
 (JU)VCษڧձJO,BOB[BXB ,BOB[BXBSCNFFUVQ

  2. גࣜձࣾΫϧ΢Οοτ w ݚڀҊ݅ͱ͔։ൃҊ݅΍ͬͯΔۚ୔ͷձࣾ w খن໛ w ϦϙδτϦ͋ͨΓͷίϛολ͸d໊ͱ͍ͬͨͱ͜Ζ w ڠྗձࣾ͞ΜͱίϥϘϨʔγϣϯ͢Δ͜ͱ͕ଟ͍

  3. #FGPSF w ڞ༗αʔό POQSFNJTF ্ʹڞ༗σΟϨΫτϦΛ࡞੒͠ɺ ֤͕ࣗTTIܦ༝ͰTIBSFEϦϙδτϦΛར༻ w ڠྗձࣾ͞ΜͱͷίϥϘʹར༻Ͱ͖ͳ͔ͬͨ w ར༻Ͱ͖Δπʔϧྨ͕ݶఆ͞Ε͍ͯͨʢTTIܦ༝ނʣ

    w XJOEPXT TTI໰୊ͱ͔΋ w αʔόʔӡ༻ίετ͸ਓతۚમతڞʹ΄΅θϩ
  4. ཁ݅ w ϓϥΠϕʔτϦϙδτϦΛӡ༻Ͱ͖Δ͜ͱ w ਓతӡ༻ίετ͕೥ਓ೔ఔ౓ʹ཈͑ΒΕΔ͜ͱ w ۚમతӡ༻ίετ͕݄਺ສఔ౓ʹ཈͑ΒΕΔ͜ͱ w ϦϙδτϦ୯ҐͷήετΞΫηεΛ࣮ݱ͢Δ͜ͱ w

    *TTVF؅ཧ͕Ͱ͖Δ͜ͱ w ෇ଳ৘ใ؅ཧ͕Ͱ͖Δ͜ͱʢXJLJ౳ʣ
  5. ཁ͔݅Βআ֎ͨ͠΋ͷ w ࣾ֎ͷΠϯϑϥʹϗεςΟϯά͠ͳ͍͜ͱ w ৘ใ࿙ӮϦεΫͷ࠷খԽΛ࠷༏ઌͱ͢Δ͜ͱ w ো֐ൃੜ࣌ͷίετ࠷খԽΛ༏ઌ͢Δ͜ͱ w $*౳ͷ֎෦αʔϏε࿈ܞ͕ॆ࣮͍ͯ͠Δ͜ͱ w

    ωοτϫʔΫϨϕϧͰͷΞΫηε੍ݶ͕Ͱ͖Δ͜ͱ w 71/΍*1ΞυϨεϑΟϧλϦϯά౳
  6. ͬ͘͟Γީิ w (JU)VC (JU)VCIPTUJOH  w (JU)VC&OUFSQSJTF POQSFNJTF  w

    #JU#VDLFU #JU#VDLFUIPTUJOH  w #JU#VDLFU4FSWFS POQSFNJTF  w (JU-BC (JU-BCIPTUJOH(JU)PTUJPIPTUJOH  w "TTFNCMB "TTFNCMBIPTUJOH  w 1IBCSJDBUPS POQSFNJTF1IBCSJDBUPSIPTUJOH
  7. ߜΓࠐΈͦͷ w POQSFNJTF͸΍ΊΔ w ਓతӡ༻ίετΛͱʹ͔͘Լ͍͛ͨ

  8. ߜΓࠐΈͦͷ w ʮଟػೳ͕ͩߴՁʯͰ͸ͳ͘ʮγϯϓϧͰ҆Ձʯ w ଟ༷ͳϓϩδΣΫτΛଟ༷ͳڠྗձࣾ͞Μͱ w ֶशίετ͕ߴ͍΋ͷ͸࢖͍ʹ͍͘ w ϓϩδΣΫτϚωδϝϯτͷํࣜΛ୯ҰԽͰ͖ͳ͍

  9. ߜΓࠐΈͦͷ w ʢՄೳͳൣғͰʣαʔϏε਺Λগͳ͘ w ϗεςΟϯά౳ʮ૊Έ߹ΘͤΔʯෳࡶੑ૿Ճ w ෳࡶੑ͸ো֐࣌ʹ͓͍ͯ΋ӡ༻࣌ʹ͓͍ͯ΋
 ਓతίετͷ૿େʹͭͳ͕Δ w ͱʹ͔͘ਓతίετͷ૿Ճ͸͚͍ͨ͞

  10. ͬ͘͟ΓީิSFW w (JU)VC (JU)VCIPTUJOH  w #JU#VDLFU #JU#VDLFUIPTUJOH  w

    (JU-BC (JU-BCIPTUJOH
  11. ͜͜·Ͱ͸ͲͪΒ͔ͱ͍͏ͱ ʮ։ൃऀɾӡӦऀʯ
 ͷࢹ఺ͰͷߜΓࠐΈ ͔͜͜Β͸ͲͪΒ͔ͱ͍͏ͱ
 ʮӦۀɾܦӦऀʯ
 ͷࢹ఺ͰͷߜΓࠐΈ

  12. ো֐ൃੜ࣌ͷ ର֎తͳઆ໌ͷ͠΍͢͞ w γεςϜ͕μ΢ϯͨ͠ͱ͖ʹର֎తͳઆ໌ʹར༻Ͱ͖Δ
 ৘ใ͕ެ։͞Ε͍ͯΔ͔ w γεςϜ͕ʮμ΢ϯ͠ͳ͍͜ͱʯͰ͸ͳ͍ w 4UBUVTϖʔδ w

    IUUQTTUBUVTHJUIVCDPN w IUUQTTUBUVTCJUCVDLFUPSH w IUUQTTUBUVTHJUMBCDPN
  13. ো֐ൃੜ࣌ͷ ର֎తͳઆ໌ͷ͠΍͢͞ w γεςϜ͕μ΢ϯͨ͠ͱ͖ʹର֎తͳઆ໌ʹར༻Ͱ͖Δ
 ৘ใ͕ެ։͞Ε͍ͯΔ͔ w γεςϜ͕ʮμ΢ϯ͠ͳ͍͜ͱʯͰ͸ͳ͍ w 4UBUVTϖʔδ w

    IUUQTTUBUVTHJUIVCDPN w IUUQTTUBUVTCJUCVDLFUPSH w IUUQTTUBUVTHJUMBCDPN $VSSFOU4UBUVT͕
 ϝΠϯͰ
 աڈʹى͖ͨো֐ͷ
 ݸผϖʔδ͕ͳ͍ ˓ ˓ ˚
  14. ஌໊౓ w ར༻͍ͯ͠Δڠྗձࣾ͞Μͷׂ߹ w ύʔτφʔબఆج४ύʔτφʔֶशίετ w ো֐ൃੜ࣌ͷސ٬΁ͷઆ໌ͷ͠΍͢͞ w "84μ΢ϯ͸ʮ͍͍Θ͚ʯ͠΍͍͢໰୊ w

    ࠾༻ʹ͔͔ΔΞυόϯςʔδ
  15. ஌໊౓ (PPHMFτϨϯυIUUQTUSFOETHPPHMFDPKQUSFOETFYQMPSF EBUFUPEBZZRHJUIVC CJUCVDLFU HJUMBC

  16. αʔϏεӬଓੑ w ձࣾͷΠϯϑϥͱͯ͠࠾༻͢ΔͳΒ೥͸อͬͯཉ͍͠ w ΠϯϑϥαʔϏεͷҠߦ͸ͱʹ͔͘ίετ͕ߴ͍ w %7$4ͳ(JUϦϙδτϦࣗମ͸Ҡߦ͕؆୯ w ͔͠͠*TTVF΍8JLJ΍࿈ܞ͢ΔΤίγεςϜ͸ʜ w

    DPEFCSFBL໰୊ w IUUQTBZPOBSBDPEFCSFBLDPN
  17. ֶशίετ w ֶशίετ͸௿͚Ε͹௿͍΄ͲΑ͍ w ʮͰ͖Δࢠʯ͹͔Γ࠾༻Ͱ͖ΔͳΒʜ w ཧղ͠΍͍͢6*ʹͳ͍ͬͯΔ͔ w 6*υΩϡϝϯτͷ೔ຊޠॆ࣮౓ w

    ར༻ཁ͕݅ଟ͘ͳ͍͔
  18. ֶशίετ w ֶशίετ͸௿͚Ε͹௿͍΄ͲΑ͍ w ʮͰ͖Δࢠʯ͹͔Γ࠾༻Ͱ͖ΔͳΒʜ w ཧղ͠΍͍͢6*ʹͳ͍ͬͯΔ͔ w 6*υΩϡϝϯτͷ೔ຊޠॆ࣮౓ w

    ར༻ཁ͕݅ଟ͘ͳ͍͔ #JU#VDLFU͸͔ͳΓॆ࣮ ͍ͯ͠Δҹ৅
  19. ֶशίετ w ֶशίετ͸௿͚Ε͹௿͍΄ͲΑ͍ w ʮͰ͖Δࢠʯ͹͔Γ࠾༻Ͱ͖ΔͳΒʜ w ཧղ͠΍͍͢6*ʹͳ͍ͬͯΔ͔ w 6*υΩϡϝϯτͷ೔ຊޠॆ࣮౓ w

    ར༻ཁ͕݅ଟ͘ͳ͍͔ ϒϥ΢β্͔Βฤूɾίϛοτɾ13Ͱ͖Δػೳ͸͔ͳΓ༗༻ (JU)VCͱ#JU#VDLFU͕ެࣜΞϓϦΛ ग़͍ͯ͠Δͷ͸ ࣮͸͔ͳΓͷΞυόϯςʔδ
  20. (JU)VC%FTLUPQ
 WT
 4PVSDF5SFF

  21. (JU)VC%FTLUPQ
 WT
 4PVSDF5SFF ࿩͕௕͘ͳΔͷͰผͷػձʹ ͨͩ͠ ʮެࣜΞϓϦ͸৺ཧతʹ҆৺Ͱ͖Δʯ͚ͩͰ͸ͳ͘ ػೳతͳαϙʔτ΋ݟਾ͑ͯ ͱݴ͏఺͸৮Ε͓͖͍ͯͨ 4PVSDF5SFFͰ(JU)VC͔ͭ͑͹͑͑΍Μ ͱ͍͏࿩͔Β΋͏Ұา౿ΈࠐΜͰධՁ͍ͨ͠

  22. ࢧ෷͍ํ๏ w ۜߦৼΓࠐΈ͕͍͍ w ΫϨδοτΧʔυ͸Ͱ͖Ε͹࢖͍ͨ͘ͳ͍ w ԁݐͯͰͰ͖Δͱ΋ͬͱ͍͍ w ൺֱతະདྷʹֹ͔͚͕ͯۚ༧૝͠΍͍͢͜ͱ͸ॏཁ w

    ैྔ੍ͷαʔϏεͱ͔ϚδͰ΍Ίͯཉ͍͠
  23. ࢧ෷͍ํ๏ w ۜߦৼΓࠐΈ͕͍͍ w ΫϨδοτΧʔυ͸Ͱ͖Ε͹࢖͍ͨ͘ͳ͍ w ԁݐͯͰͰ͖Δͱ΋ͬͱ͍͍ w ൺֱతະདྷʹֹ͔͚͕ͯۚ༧૝͠΍͍͢͜ͱ͸ॏཁ w

    ैྔ੍ͷαʔϏεͱ͔ϚδͰ΍Ίͯཉ͍͠ (JU)VC΋#JUCVDLFU΋ΤϯλʔϓϥΠζ޲͚ʹ͸ ۜߦৼΓࠐΈ΍ԁݐͯʹରԠ͍ͯ͠Δ ͔͠͠ɺ௨ৗ͸ΫϨδοτΧʔυ෷͍ͷΈ
  24. ۚમతӡ༻ίετ w ฐࣾϢʔβ਺Λͱ૝ఆ w ϦϙδτϦ਺͸਺ඦΛ૝ఆ

  25. ۚમతӡ༻ίετ (JU)VC #JU#VDLFU (JU-BC NPOUI JOJUJBM VTFS  VTS NPOUI

    JOJUJBM VTFS  VTFS NPOUI
  26. ࠷ऴ൑அ

  27. (JU)VC

  28. ૯ධ w ػೳతʹ͸͍ͣΕ΋ཁ݅Λຬ͍ͨͯͨ͠

  29. ૯ධ w (JU)VCͷѹ౗తͳ஌໊౓͕ܾΊख w ڠྗձࣾ͞Μͷར༻཰͕ߴ͍ w αʔϏεӬଓੑʹର͢Δ҆৺ײ w ࿈ܞαʔϏεɾΤίγεςϜશମͰΈͨظ଴ײ w

    ೔ຊޠυΩϡϝϯτ΋ʢୈࡾऀʹΑΔ͕ʣଟ਺ωοτ Ͱ֬ೝͰ͖Δ
  30. ૯ධ w ཁ݅ͷ߹க౓͚ͩͰ͍͑͹#JU#VDLFU w (JU)VCͱ΄΅ಉ͜͡ͱΛ҆Ձʹ࣮ݱͰ͖Δ w ཁ݅ͷ༏ઌॱҐʹΑͬͯ͸બ୒͍ͯͨ͠ w +*3"͕͍͍ɺͱ͔ w

    ࣗࣾʹดͯ͡ར༻͢Δ৔߹ɺͱ͔
  31. ૯ධ w (JU-BCͷۚમతӡ༻ίετʮθϩʯ͸େ͖͍͕ʜ w ஌໊౓΍ύϑΥʔϚϯε΋ؚΊͯ૯߹Ͱߟ͑Δͱଞࣾ ʹਫΛ͚͋ΒΕͨ w ໊ҎԼͳΒ#JU#VDLFU΋λμͩ͠

  32. "GUFS w ڠྗձࣾ͞Μͱ༰қʹιʔεڞ༗Ͱ͖ΔΑ͏ʹͳͬͨ w *TTVF؅ཧ΋௥ՃίετθϩͰͰ͖Δͷ͸༧૝Ҏ্ʹศར w ਓతӡ༻ίετ͸΄΅θϩΛҡ࣋ w ӡ༻ϧʔϧ࡞Γʹίετ͕ൃੜ͍ͯ͠Δ w

    ࣾ಺ͷ8JOEPXTϢʔβʔ͔Βتͼͷ੠ w ར༻Ͱ͖Δπʔϧྨ͕Ұؾʹ;͑ͨ w ʮ(ɾ6ɾ*αΠίʔʯͱ͍͏ݬௌ΋
  33. ͓·͚ w ͍·ͩʹࣾ֎Πϯϑϥʹॏཁͳ৘ใΛϗεςΟϯάͯ͠
 ͍Δ͜ͱʹෆ҆ͷ੠΋͋Δ w (JU)VC༝དྷͷ৘ใ࿙Ӯͱ͍͏ΑΓ΋ฐࣾΤϯδχΞͷ ઃఆϛεͱ͍ͬͨਓతͳࣄނͷํΛݒ೦͞ΕΔ͜ͱ͕ ଟ͍ҹ৅ w ܧଓͯ͠ࢪࡦΛ͏͍ͪͨͱ͜Ζ͕ͩɺͯ͞ʜ

  34. 5PNPLB[V,JZPIBSB IUUQHJUIVCDPNLJZPIBSB IUUQGBDFCPPLDPNUPNPLB[VLJZPIBSB 5IBOLZPV