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

積極的なソフトウェア構成管理の活用方法

 積極的なソフトウェア構成管理の活用方法

SQiP にて実施したソフトウェア構成管理入門の資料です

More Decks by 長沢 智治 - NAGASAWA, Tomoharu

Other Decks in Technology

Transcript

  1. 1996 ΠϯςοΫ ιϑτ΢ΣΞΤϯδχΞ 2000 3BUJPOBM4PGUXBSF ϓϩηεվળίϯαϧλϯτ 2003 ೔ຊΞΠɾϏʔɾΤϜ ϓϩηεվળίϯαϧλϯτ 2005

    #PSMBOE4PGUXBSF ϓϩηεվળίϯαϧλϯτ ιϦϡʔγϣϯΞʔΩςΫτ 2007 .JDSPTPGU ΤόϯδΣϦετ ϓϩμΫτϚωʔδϟ 2014 γχΞΤόϯδΣϦετ ؂༁ڞஶॻଟ਺ ϓϨθϯςʔγϣϯڠྗ Speaker
  2. มߋґཔChange Requests ػೳ௥Ճόάվम ཁٻͷมߋ ཁٻόοΫϩά ιʔείʔυεΫϦϓτ Ϗϧυ੒Ռ෺ύοέʔδ ϦϦʔε τϦΞʔδ $$#มߋ؅ཧҕһձ

    ޿ٛͷ ιϑτ΢ΣΞߏ੒؅ཧ ڱٛͷ ιϑτ΢ΣΞߏ੒؅ཧ ڱٛͷιϑτ΢ΣΞߏ੒؅ཧ͸ɺ
 ୯ʹόʔδϣϯ؅ཧΛݴΘΕΔ͜ͱ΋͋Γ·͢ɻ
  3. ߏ੒ཁૉೳྗ ιϑτ΢ΣΞߏ੒؅ཧ όʔδϣϯ੍ޚ ϫʔΫεϖʔε੍ޚ Work Products | Development ։ൃऀ ։ൃνʔϜ

    check out check in / commit όʔδϣϯ؅ཧϦϙδτϦ͚ͩͰͳ͘ɺ
 ϫʔΫεϖʔεʹ΋஫໨͢΂͖Ͱ͢ɻ
  4. ߏ੒ཁૉೳྗ ιϑτ΢ΣΞߏ੒؅ཧ όʔδϣϯ੍ޚ ϫʔΫεϖʔε੍ޚ Work Products | Build Ϗϧυbot ։ൃνʔϜ

    check out ϏϧυϦϦʔε੍ޚ store / deploy Ϗϧυ੒Ռ෺ ιϑτ΢ΣΞߏ੒؅ཧ͸ɺࣗಈϏϧυʹ
 ͱͬͯ΋ෆՄܽͳج൫ͱͳΓ·͢ɻ
  5. ιϑτ΢ΣΞߏ੒؅ཧγεςϜ όʔδϣϯ੍ޚ ϫʔΫεϖʔε੍ޚ ϦϙδτϦ ࣝผͱ࠶ݱ ೳྗΛαϙʔτ͢ΔγεςϜ w ੒Ռ෺ͷ֨ೲ w ੒Ռ෺ͷόʔδϣϯԽ

    w ੒Ռ෺ߏ੒ؔ܎ͷόʔδϣϯԽ w ҆શͳ੒Ռ෺ͷࣝผ w ҆શͳ੒Ռ෺ͷऔಘͱߋ৽ w ҆શͳ੒Ռ෺ͷར༻ͱҾ͖౉͠ όʔδϣϯ੍ޚ ϫʔΫεϖʔε੍ޚ ಛ௃ ϦϙδτϦ
  6. ιϑτ΢ΣΞߏ੒؅ཧγεςϜ ϫʔΫεϖʔε੍ޚ ϦϙδτϦ ࣝผͱ࠶ݱ ೳྗΛαϙʔτ͢ΔγεςϜ w ੒Ռ෺ͷ֨ೲ w ੒Ռ෺ͷόʔδϣϯԽ w

    ੒Ռ෺ߏ੒ؔ܎ͷόʔδϣϯԽ w ҆શͳ੒Ռ෺ͷࣝผ w ҆શͳ੒Ռ෺ͷऔಘͱߋ৽ w ҆શͳ੒Ռ෺ͷར༻ͱҾ͖౉͠ όʔδϣϯ੍ޚ ϫʔΫεϖʔε੍ޚ όʔδϣϯ੍ޚ ಛ௃ ϦϙδτϦ ্ॻ͖ͷ໰୊
  7. ιϑτ΢ΣΞߏ੒؅ཧγεςϜ ϫʔΫεϖʔε੍ޚ ϦϙδτϦ ࣝผͱ࠶ݱ ೳྗΛαϙʔτ͢ΔγεςϜ w ੒Ռ෺ͷ֨ೲ w ੒Ռ෺ͷόʔδϣϯԽ w

    ੒Ռ෺ߏ੒ؔ܎ͷόʔδϣϯԽ w ҆શͳ੒Ռ෺ͷࣝผ w ҆શͳ੒Ռ෺ͷऔಘͱߋ৽ w ҆શͳ੒Ռ෺ͷར༻ͱҾ͖౉͠ όʔδϣϯ੍ޚ ϫʔΫεϖʔε੍ޚ όʔδϣϯ੍ޚ ಛ௃ ϦϙδτϦ
  8. ιϑτ΢ΣΞߏ੒؅ཧγεςϜ ϫʔΫεϖʔε੍ޚ ϦϙδτϦ ࣝผͱ࠶ݱ ೳྗΛαϙʔτ͢ΔγεςϜ w ੒Ռ෺ͷ֨ೲ w ੒Ռ෺ͷόʔδϣϯԽ w

    ੒Ռ෺ߏ੒ؔ܎ͷόʔδϣϯԽ w ҆શͳ੒Ռ෺ͷࣝผ w ҆શͳ੒Ռ෺ͷऔಘͱߋ৽ w ҆શͳ੒Ռ෺ͷར༻ͱҾ͖౉͠ όʔδϣϯ੍ޚ ϫʔΫεϖʔε੍ޚ όʔδϣϯ੍ޚ ಛ௃ ϦϙδτϦ ࣗಈϏϧυʹͱͬͯ΋
 ϫʔΫεϖʔε͸ॏཁͰ͢ɻ
  9. ϫʔΫεϖʔε੍ޚ όʔδϣϯ੍ޚ νΣοΫΠϯίϛοτ νΣοΫΞ΢τ ϒϥϯν Ϛʔδ ιϑτ΢ΣΞߏ੒؅ཧγεςϜ ೳྗΛαϙʔτ͢ΔγεςϜ ϦϙδτϦ w

    ੒Ռ෺ͷ֨ೲ w ੒Ռ෺ͷόʔδϣϯԽ w ੒Ռ෺ߏ੒ؔ܎ͷόʔδϣϯԽ όʔδϣϯ੍ޚ ࣝผͱ࠶ݱ w ҆શͳ੒Ռ෺ͷࣝผ w ҆શͳ੒Ռ෺ͷऔಘͱߋ৽ w ҆શͳ੒Ռ෺ͷར༻ͱҾ͖౉͠ ϫʔΫεϖʔε੍ޚ ಛ௃ ϦϙδτϦ
  10. ιϑτ΢ΣΞߏ੒؅ཧγεςϜ όʔδϣϯ੍ޚ ϫʔΫεϖʔε੍ޚ ϏϧυϦϦʔε੍ޚ ϓϩηε੍ޚ ೳྗΛαϙʔτ͢ΔγεςϜ ಛ௃ w ҡ࣋ w

    ա౓ͳଐਓੑͷഉআ w ϛεͱखؒͷܰݮ w ؆ૉԽ ໨త w ϙϦγʔ w "$- w ࣄલ৚݅ w ࣄޙ৚݅ खஈ ϓϩηεͱϙϦγʔ ϓϩηεͱϙϦγʔ͸ɺϑΥʔϚϧͳ౷੍͚ͩͰ ͳ͘ɺਓҝతϛεͷܰݮ΍ɺۉ࣭ԽɺϧʔνϯϫʔΫͷ վળͱܰݮʹܨ͕Δઓུతͳ΋ͷͰ͢ɻ
  11. தԝूத؅ཧ ιϑτ΢ΣΞߏ੒؅ཧγεςϜ ϫʔΫεϖʔε੍ޚ όʔδϣϯ੍ޚ ϫʔΫεϖʔε੍ޚ ಛ௃ w ୯ҰϦϙδτϦ w ؅ཧͷूதԽ͕༰қ

    w ੍ޚͷूதԽ͕༰қ w ৗʹϦϙδτϦʹ઀ଓ ྫ 4VCWFSTJPO 47/ c$MFBS$BTFc5'4 5'7$  πʔϧ͸ɺΦϯϓϨϛεͰͷՔಇ͕ଟ͍Ͱ͢ɻ
 ϗεςΟϯάαʔϏε΋͋Γ·͕͢ɺݶఆతͰ͢ɻ
  12. ෼ࢄ؅ཧ %7$4 ιϑτ΢ΣΞߏ੒؅ཧγεςϜ remote local local local local local local

    local local ϫʔΫεϖʔε ϦϙδτϦ ෼ࢄ ϫʔΫεϖʔε
  13. ෼ࢄ؅ཧ %7$4 ͷಛ௃ ιϑτ΢ΣΞߏ੒؅ཧγεςϜ remote local ෼ࢄϦϙδτϦ w SFNPUFͱ࡞ۀ؀ڥ෼ͷMPDBM͕͋Δ w

    ϓϩηε੍ޚ͕ͮ͠Β͍܏޲ local master bugfix MPDBMϦϙδτϦ w ࡞ۀ؀ڥͰಠࣗʹόʔδϣϯ؅ཧͰ͖Δ w ӨڹΛ༩͑ͣʹ͜·ΊʹཤྺΛ࢒ͤΔ w ෆඞཁͳཤྺ͸੍ޚͰ͖Δ w l෼཭ͱ౷߹zΛݸผʹ੍ޚͰ͖Δ
  14. ಛ௃ w ෼ࢄϦϙδτϦ w ؅ཧͷ෼ࢄԽ͕༰қ w ੍ޚ͕ෳࡶ w ΦϑϥΠϯରԠ͕༰қ ྫ

    (JUc.FSDVSJBM )( ෼ࢄ؅ཧ %7$4 ͷಛ௃ ιϑτ΢ΣΞߏ੒؅ཧγεςϜ remote local master bugfix master bugfix local local
  15. ಋೖͷࢦ਑ ιϑτ΢ΣΞߏ੒؅ཧγεςϜ 㾎 සൟͳมߋ͕͋Δ 5%%ͳͲ  㾎 ஍ཧతʹ෼ࢄ͍ͯ͠Δ 㾎 ΍Γ௚͕͠ར͘

    㾎 ෳࡶͳϒϥϯνઓུ 㾎 ଞγεςϜͱͷ࿈ܞ 㾎 ιʔγϟϧίʔσΟϯά ෼ࢄόʔδϣϯ؅ཧγεςϜ DVCS ͻͱͭͰ΋౰ͯ͸·Ε͹
  16. ಋೖͷࢦ਑ ιϑτ΢ΣΞߏ੒؅ཧγεςϜ 㾎 ؇΍͔ͳมߋ͕͋Δ 㾎 ৗʹϦϙδτϦʹ઀ଓͰ͖Δ 㾎 ݎ࣮Ͱެࣜͳߏ੒؅ཧ 㾎 ఆܕతͳϒϥϯνઓུ

    㾎 ଞγεςϜ࿈ܞͷࣄ৘ 㾎 ϝϯόʔͷ੒ख़౓ தԝूதόʔδϣϯ؅ཧγεςϜ CVCS ͢΂ͯ౰ͯ͸·Ε͹
  17. ಋೖͷࢦ਑ ιϑτ΢ΣΞߏ੒؅ཧγεςϜ ෼ࢄόʔδϣϯ؅ཧγεςϜ DVCS Ϟμϯϒϥϯνઓུ HJUqPXɿ Develop Feature A master

    Release Hotfix Feature B v 1.0 v 1.1 v 2.0 HJUGMPX͸ɺϕετϓϥΫςΟεͷͻͱͭͯ͠஌ΒΕ ͍ͯ·͕͢ɺݱ৔ʹԠͯ͡ɺΑΓγϯϓϧͳӡӦΛ
 ͢Δ͜ͱ͕ॏཁͰ͢ɻෳࡶ͞ΛϒϥϯνͰ࡞Βͳ͍Α͏ʹɻ
  18. ಋೖͷࢦ਑ ιϑτ΢ΣΞߏ੒؅ཧγεςϜ ෼ࢄόʔδϣϯ؅ཧγεςϜ DVCS Ϟμϯϒϥϯνઓུ 1VMM3FRVFTU.PEFM (JU)VC'MPX ɿ Develop Feature

    A push remote local Feature A Pull Request merge ྫ (JU)VCc#JUCVDLFUc(JU-BC ϓϧϦΫΤετ͸ɺଟ͘ͷ%7$4Ϧϙδ τϦγεςϜͰ࠾༻͞Ε͍ͯ·͢ɻ (JU)VC #JUCVDLFUͷ4BB4ܕ͕༗໊Ͱ͕͢ɺ
 #JUCVDLFU4FSWFS΍(JU)VC&OUFSQSJTF  (JU-BCͳͲͷΦϯϓϨϛεՔಇ΋͋Γ·͢ɻ
  19. ಋೖͷࢦ਑ ιϑτ΢ΣΞߏ੒؅ཧγεςϜ ෼ࢄόʔδϣϯ؅ཧγεςϜ DVCS ޿ٛͷιϑτ΢ΣΞߏ੒؅ཧ SCM ITS CI มߋґཔ ػೳ௥Ճόάվम

    ཁٻͷมߋ ཁٻ όοΫϩά ιʔείʔυ
 εΫϦϓτ Ϗϧυ੒Ռ෺
 ύοέʔδ ϦϦʔε τϦΞʔδ $$#มߋ؅ཧҕһձ %7$4ʹରԠͨ͠*54 $*γεςϜ͕ɺ૿Ճ͠ ͍ͯΔ܏޲ʹ͋Γ·͢ɻ
  20. ಋೖͷࢦ਑ ιϑτ΢ΣΞߏ੒؅ཧγεςϜ ෼ࢄόʔδϣϯ؅ཧγεςϜ DVCS มߋґཔ ػೳ௥Ճόάվम ཁٻͷมߋ ཁٻ όοΫϩά ιʔείʔυ


    εΫϦϓτ Ϗϧυ੒Ռ෺
 ύοέʔδ ϦϦʔε τϦΞʔδ $$#มߋ؅ཧҕһձ ITS SCM CI • JIRA • Redmine • Git • Mercurial • Jenkins • Bamboo • Circle CI
  21. ಛʹॏཁͳ࢓૊Έ ιϑτ΢ΣΞߏ੒؅ཧγεςϜ ϦϙδτϦ w ੒Ռ෺ͷ֨ೲ w ੒Ռ෺ͷόʔδϣϯԽ w ੒Ռ෺ߏ੒ؔ܎ͷόʔδϣϯԽ όʔδϣϯ੍ޚ

    ࣝผͱ࠶ݱ w ҆શͳ੒Ռ෺ͷࣝผ w ҆શͳ੒Ռ෺ͷऔಘͱߋ৽ w ҆શͳ੒Ռ෺ͷར༻ͱҾ͖౉͠ ϫʔΫεϖʔε੍ޚ
  22. %FW0QT Ϗδωεχʔζͱιϑτ΢ΣΞ඼࣭ Ϗδωε ։ൃ ӡ༻ Ϗδωε໨ඪ ചΓ্͛རӹ཰ Ϣʔβʔ਺ ੜ࢈ੑՔಇ཰ ϏδωεۦಈϜʔϒϝϯτ

    ։ൃɾӡ༻ͷͦΕͧΕͷϛογϣϯͱՁ஋؍ Ͱ͸ͳ͘ɺϏδωε໨ඪͱ,1*΁ͷઓུతͳߩݙ Λܧଓతʹҙࣝ͢Δඞཁ͕͋Γ·͢ɻ
  23. %FW0QT Ϗδωεχʔζͱιϑτ΢ΣΞ඼࣭ Ϗδωε ϏδωεۦಈϜʔϒϝϯτ ։ൃ ӡ༻ Πϯγσϯτ ໰୊ มߋ ΞΠσΞόά

    ίʔυ ϦϦʔε ϏδωεͷϦζϜcαΠΫϧλΠϜɾڞಉॴ༗ɾಁ໌ੑɾࣗಈԽলྗԽ ιϑτ΢ΣΞߏ੒؅ཧ͸ɺ։ൃͱӡ༻ͷڠௐ ͷͨΊͷ৘ใΠϯϑϥͱͯ͠΋ෆՄܽͱͳͬͯ
 ͖͍ͯ·͢ɻ
  24. %FW0QT Ϗδωεχʔζͱιϑτ΢ΣΞ඼࣭ ιϑτ΢ΣΞߏ੒؅ཧͷείʔϓͷ֦େ ։ൃ ӡ༻ Πϯγσϯτ ໰୊ มߋ ΞΠσΞόά ίʔυ

    ϦϦʔε ϏδωεͷϦζϜcαΠΫϧλΠϜɾڞಉॴ༗ɾಁ໌ੑɾࣗಈԽলྗԽ ڞಉॴ༗ ։ൃίʔυ ӡ༻ίʔυ
 ( IaC ) *B$*OGSBTUSVDUVSFBT$PEFʹΑΓΠϯϑ ϥͷίʔυԽ͕ଅਐ͞ΕɺΞϓϦͱΠϯϑϥΛ౷ ੍ͩͯͯߏ੒Ͱ͖ΔΑ͏ʹͳ͖ͬͯ·ͨ͠ɻ
  25. %FW0QT Ϗδωεχʔζͱιϑτ΢ΣΞ඼࣭ ιϑτ΢ΣΞߏ੒؅ཧͷείʔϓͷ֦େ ։ൃ ӡ༻ Πϯγσϯτ ໰୊ มߋ ΞΠσΞόά ίʔυ

    ϦϦʔε ϏδωεͷϦζϜcαΠΫϧλΠϜɾڞಉॴ༗ɾಁ໌ੑɾࣗಈԽলྗԽ ڞಉॴ༗ ։ൃίʔυ ӡ༻ίʔυ
 ( IaC ) Ϗδωεχʔζ ϏδωεՁ஋ ޿ٛͷ4$.
  26. ΞΠσΞ ϏδωεՁ஋ ίʔυ Ϗϧυ ಈ͘ιϑτ΢ΣΞ όοΫϩά ITS ITS SCM CI

    CI *54 4$.$*ʹΑΓ৘ใͷྲྀ௨Λ੍ޚ͠ɺ
 ιϑτ΢ΣΞ։ൃͷෳࡶ౓Λܰݮ͠·͢ɻ 4$.͚ͩͰվળͰ͖ͳ͍఺Λ஫ҙ͠·͢ɻ
  27. %FW0QT Ϗδωεχʔζͱιϑτ΢ΣΞ඼࣭ ιϑτ΢ΣΞߏ੒؅ཧͷείʔϓͷ֦େ ։ൃ ӡ༻ Πϯγσϯτ ໰୊ มߋ ΞΠσΞόά ίʔυ

    ϦϦʔε ϏδωεͷϦζϜcαΠΫϧλΠϜɾڞಉॴ༗ɾಁ໌ੑɾࣗಈԽলྗԽ ։ൃίʔυ ӡ༻ίʔυ
 ( IaC ) Ϗδωεχʔζ ϏδωεՁ஋ ޿ٛͷ4$.
  28. Thank you! Tomoharu Nagasawa • Senior Evangelist • Atlassian •

    @tnagasawa ແྉͰߨԋ΍ݱ৔๚໰ͷ͝ґཔΛঝΓ·͢ɻ ͓ؾܰʹɺ͝࿈བྷ͍ͩ͘͞ɻ FNBJMUOBHBTBXB!BUMBTTJBODPN