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

DevOps導入指南 ~基本編~

DevOps導入指南 ~基本編~

2020年度リクルート新人ブートキャンプ エンジニアコースの講義資料です

Recruit Technologies

August 21, 2020
Tweet

More Decks by Recruit Technologies

Other Decks in Technology

Transcript

  1. © 2020, Recruit Technologies Co., Ltd. All rights reserved. Ϋϥ΢υΞʔΩςΫτ(

    ౻ݪ ྋഅ %FW0QTಋೖࢦೆ ʙجຊฤʙ ೥ ౓ ൛
  2. ߨࢣ঺հ ౻ݪ ྋഅ גࣜձࣾϦΫϧʔτ ŲƅƁŦƄŞŪ౷ׅຊ෦ŲƅƁŦƄŞŪ։ൃ౷ׅࣨ ŚƃŢƄŬŗžƃŞƄࣨŲƅƁŦƄŞũŎűƄũŎŚƃŢƄŬŗžƃŞƄ෦ ŞŽřŪƄŗŖŝũŞŪŞƄſŖŲƅ ܦྺ ʙ೥ Ϣʔβܥ4JFSʹͯ3%

    ʙ ϦΫϧʔτςΫϊϩδʔζʹೖࣾ ओͳ׆ಈ ࣾ֎ؚΉ • ίϯςφɾύϒϦοΫΫϥ΢υܥςΫϊϩδʔͷࣄۀ૷ண • ίϛϡχςΟɾΧϯϑΝϨϯεӡӦ 3BODIFS+1ίΞϝϯόʔɾ$MPVE/BUJWF%BZT5PLZPηογϣϯεϐʔΧʔ ӡӦελοϑ • ॻ੶ࣥචɾ࿈ࡌɾొஃͳͲ • 3BODIFSʹΑΔ,VCFSOFUFT׆༻׬શΨΠυ ΠϯϓϨε • !*5ઌߦࣄྫʹֶͿ,VCFSOFUFTاۀ׆༻ͷݱ࣮ɾίϯςφϕʔεͷ$*$%ຊ൪ࣄྫେղ๤  • 5IJOL*5 ϚϧνΫϥ΢υ࣌୅ͷ࠷ڧίϯϏ 3BODIFSʹΑΔ,VCFSOFUFT׆༻ΨΠυ • 
  3. ΋͏গ͠ߨࢣͷུྺ 4 2011/3 BDfB]^d7C\GRV 2011/4  )1ZSIerRV= 0 / +ZR&D

     1$/(1/eb_<`8/F9IH 0O2L6IH 2016/1  ,-1.19S 0:JM[@Q(Qass) 0;T1NX/NXIH Raico, Fleet, '@Q,,HRTech(ATS, EMS, KOT), *! "Lite, Simpos 0MANTONX & /53  53g KY?W baEU(@IT/ThinkIt) #/PA(CloudNativeDays ) %( c>(Rancher JP) 
  4.    %FW0QTΛ࣮ફͰ͖͍ͯΔاۀ WT %FW0QTΛ࣮ફͰ͖͍ͯͳ͍اۀ %FW0QTΛ࣮ફͰ͖ͨ࣌ͷޮՌ  & 

            " $!%  #  DevOpsLean 
  5.         %FW0QTΛ࣮ફͰ͖͍ͯΔاۀ WT

    %FW0QTΛ࣮ફͰ͖͍ͯͳ͍اۀ %FW0QTΛ࣮ફͰ͖ͨ࣌ͷޮՌ  &          " $!%  #  DevOpsLean  
  6. Ops  ! Dev     Dev 

       Ops     %FWͱ0QTͷରཱ Dev Ops
  7. ଟ छ ଟ ༷ શ һ ׬ ᘳ ௒ ਓ

    શһ͕௒ਓͰ͋Δඞཁ͕͋Δ ͦΕ͸ɺ͋Γ͑ͳ͍ͷͰςΫϊϩδʔͷྗΛआΓΔ ςΫϊϩδʔ͕ͳ͍৔߹      (   )
  8. ②  (("-  %) ①  #) ., ($!

    0*/ &'1+) ओʹ࣠ ςΫϊϩδʔͰओʹॿ͚Δࣄฑ
  9. શһ͕͍࣋ͬͯΔίʔυ͸όϥόϥ ݹ͔ͬͨΓ৽͔ͬͨ͠Γ ڞ༗͞Εͨόʔδϣϯίϯτϩʔϧ͕ͳ͍ঢ়گΛߟ͑Δ     ࣟ ࣠ ࣡

    ࣢ ࣣ ࣕ ࣖ ࣗ ࣘ ŋŏ                      ʊਓਓਓਓਓਓਓਓʊ ʼ ໿ଋ͞Εͨࢮ ʻ ʉY^Y^Y^Y^Y^Y^Y ʉ       
  10. ϫϯεςοϓϏϧυͱσϓϩΠͷ༗ແʹΑΔࠩҟΛߟ͑Δ ϫϯεςοϓϏϧυͱσϓϩΠͷ༗ແ -.&%+" &,97 2@<H ( &, .(0#.!) %+"/ &,

    '.*  <42@ %+" &,97 ( &, .(0#.!) %+"/ &, 2@<H?6C A;B2@G  >)F J 137$0.= :8IDE5 J
  11. ࡞ۀͷखॱΛύΠϓϥΠϯԽ͢Δ͜ͱͰɺ ࡞ۀͷ࠶ݱੑΛߴΊΔ ᶃ ϏϧυɾσϓϩΠϓϩηεΛ࣮֬ʹվળͰ͖ΔΑ͏ʹ͢Δ Dev Ops    

              $               "         ( ' ) &    $ %        "          !     Ops Dev     "  #
  12. ࡞ۀͷखॱΛύΠϓϥΠϯԽ͢Δ͜ͱͰɺ ࡞ۀͷ࠶ݱੑΛߴΊΔ ᶃ ϏϧυɾσϓϩΠϓϩηεΛ࣮֬ʹվળͰ͖ΔΑ͏ʹ͢Δ Dev Ops    

              $               "         ( ' ) &    $ %        "          !     Ops Dev     "  # %#,!    "(' ) $  -* %& $ +.
  13. ϫϯεςοϓϏϧυͱσϓϩΠͰ࣮ݱ͍ͨ͜͠ͱ ࠶ܝ ② (")! 0  $.'-   ③

    %   # *+   ①  /' ,&  
  14. <ิ଍ղઆ>μʔΫϩʔϯν    $ ,) # - . .

    / / 0 *  " '%(!  ,) &+   
  15. l ϝʔϧ͸ϓϧܕͷ৘ใऔಘ l ࣗ෼͔Βݟʹߦ͘ඞཁ͕͋Δ l શһ͕஌͓ͬͯ͘΂͖৘ใͷఏࣔʹ͸ ͋·Γ ޲͍͍ͯͳ͍ ϝʔϧͰ΋ͩΊͰ͸ͳ͍͕ɺগ͠Ή͔͍ͣ͠ ඇಉظ

    ίϛϡχέʔγϣϯ (ׂࠐ౓߹͍/ઐ༗౓߹͍͕௿͍) ಉظ ίϛϡχέʔγϣϯ (ׂࠐ౓߹͍/ઐ༗౓߹͍͕ߴ͍)       E Slack Teams PagerDuty 
  16. จԽΛࢧ͑ΔͨΊͷςΫϊϩδʔ·ͱΊ M=>5(0 <G &7/55#372 45! )'2$ ")3 (7-7(0 <G,#1 -

    # - #* #  @FLJ8 (A; :OHN  6C9DPI) +.%7/5#8 (E?K9 B)
  17. จԽΛࢧ͑ΔͨΊͷςΫϊϩδʔ·ͱΊ M=>5(0 <G &7/55#372 45! )'2$ ")3 (7-7(0 <G,#1 -

    # - #* #  @FLJ8 (A; :OHN  6C9DPI) +.%7/5#8 (E?K9 B)          
  18. l ςετۦಈ։ൃ l ܧଓతΠϯςάϨʔγϣϯ l ܧଓతσϓϩΠɾσϦόϦʔ l ϩʔϦϯάσϓϩΠ l ϒϧʔάϦʔϯσϓϩΠ

    l ΧφϦΞσϓϩΠ ଞʹ΋༷ʑͳख๏͋Γ ςετ༰қੑͱσϓϩΠ༰қੑΛߴΊΔͨΊͷखஈ
  19. $*Λࢧ͑Δ۩ମతͳπʔϧྫͱ෼ྨ CI      GNU make 

      go test python -m unittest * 
  20. $*Λࢧ͑Δ۩ମతͳπʔϧྫͱ෼ྨ CI      GNU make 

      go test python -m unittest *    
  21. $*Λࢧ͑Δ۩ମతͳπʔϧྫͱ෼ྨ CI      GNU make 

      go test python -m unittest *       
  22. $*Λࢧ͑Δ۩ମతͳπʔϧྫͱ෼ྨ CI      GNU make 

      go test python -m unittest *        
  23. ςεταΠζͷ֓೦Λ࢖ͬͯޮ཰తʹςετ͢Δ l ςετ͕ࣦഊ͢Δׂ͘Β͍͸ͭ·Βͳ͍ݪҼ l -JOU΍ωοτϫʔΫ௨৴ͷൃੜ͠ͳ͍ߴ଎ͳςετͰચ͍ग़ͤΔ ᶄ Ϗϧυͱςετͷ࣮ߦ͕࣌ؒ௕͍ 3 3 +9

    )3 6 9 ( 3 3 3 3 0 3 3 3 6 3 39 3 3 3 3 3 3 39 6 3 3 ) 6 3 3 3 3 + 33 393 3 3 + 39 3 63 3 3 693 696 3 https://testing.googleblog.com/2010/12/test-sizes.html
  24. σϓϩΠͷίʔυԽʹࡍͯ͠ߟ͑Δ͜ͱ  0  ' # .   2

     %     &  / "   (0 1 ≒ * !+) ') ,$-( 
  25. σϓϩΠͷίʔυԽʹࡍͯ͠ߟ͑Δ͜ͱ  7%  . * 5   9

     , # " # " -  6! $'    (7%8 ≒ 1  &2) .0 3+4/    () 6!
  26. ᶃ ೖସ଎౓ͷ഑ྀ ᶄ σʔλͷόʔδϣϯؒޓ׵ੑ ΁ͷ഑ྀ ϩʔϦϯάσϓϩΠͷ஫ҙ఺ APP ver.1.1 APP ver.1.0

    APP ver.1.0 APP ver.1.0 Loadbalancer Database APP ver.1.1 APP ver.1.1 APP ver.1.0 APP ver.1.0 Loadbalancer Database interval APP ver.1.1 APP ver.1.1 APP ver.1.0 APP ver.1.0 Loadbalancer Database ,'! !   * " (* 0&%- .$)   #  / !+ 
  27. 

  28.         %FW0QTΛ࣮ફͰ͖͍ͯΔاۀ WT

    %FW0QTΛ࣮ફͰ͖͍ͯͳ͍اۀ %FW0QTΛ࣮ફͰ͖ͨ࣌ͷޮՌ  &          " $!%  #  DevOpsLean  
  29. '0:"1 26)   '0:"1 $  %FW0QTΛ࣮ફͰ͖͍ͯΔاۀ WT %FW0QTΛ࣮ફͰ͖͍ͯͳ͍اۀ

    %FW0QTΛ࣮ફͰ͖ͨ࣌ͷޮՌ  &          " $!%  #  DevOpsLean3'/&-5  ,*4 # 98 ( %. +!7 
  30. ҉໧తʹ࡮Γࠐ·Ε֤ͨϩʔϧͷ੹຿ͷҧ͍ʹىҼ ͳͥରཱ͕ى͜Δͷ͔ DevK3 ?BIL2 & %!5-. 6@2  OpsK3 !#(9:H/;D

    & %!5-M8N 6@O<  N  A GE4 !"',+)*$JC & & %!=10F>7 ϛογϣϯͷҧ͍Λཧղ্ͨ͠Ͱ ҆શʹมߋ͢ΔͨΊͷํ๏Λߟ͑ͯຏ͘ ͍·͸ͦͷͨΊͷಓ۩΍ຏͨ͘Ίͷख๏͸ͨ͘͞Μ͋Δ
  31. 5IF5XFMWF'BDUPST *ίʔυϕʔε όʔδϣϯ؅ཧ͞Ε͍ͯΔͭͷίʔυϕʔεͱ ෳ਺ͷσϓϩΠ **ґଘؔ܎ ґଘؔ܎Λ໌ࣔతʹએݴ͠෼཭͢Δ ***ઃఆ ઃఆΛ؀ڥม਺ʹ֨ೲ͢Δ *7όοΫΤϯυαʔϏε όοΫΤϯυαʔϏεΛΞλον͞ΕͨϦιʔε

    ͱͯ͠ѻ͏ 7ϏϧυɾϦϦʔεɾ࣮ߦ ϏϧυɾϦϦʔεɾ࣮ߦͷͭͷεςʔδΛݫີ ʹ෼཭͢Δ 7*ϓϩηε ΞϓϦέʔγϣϯΛͭ΋͘͠͸ෳ਺ͷεςʔτ Ϩεͳϓϩηεͱ࣮ͯ͠ߦ 7**ϙʔτόΠϯσΟϯά ϙʔτόΠϯσΟϯάΛ௨ͯ͠αʔϏεΛެ։͢Δ 7***ฏߦੑ ϓϩηεϞσϧʹΑͬͯεέʔϧΞ΢τ͢Δ *9ഇغ༰қੑ ߴ଎ͳىಈͱάϨʔεϑϧγϟοτμ΢ϯͰݎ࿚ੑΛ࠷ େԽ͢Δ 9։ൃຊ൪Ұக ։ൃɺεςʔδϯάɺຊ൪؀ڥΛͰ͖Δ͚ͩҰகͤͨ͞ ঢ়ଶΛอͭ 9*ϩά ϩάΛΠϕϯτετϦʔϜͱͯ͠ѻ͏ 9**؅ཧϓϩηε ؅ཧλεΫΛճݶΓͷϓϩηεͱ࣮ͯ͠ߦ͢Δ
  32. 5IF5XFMWF'BDUPST *ίʔυϕʔε όʔδϣϯ؅ཧ͞Ε͍ͯΔͭͷίʔυϕʔεͱ ෳ਺ͷσϓϩΠ **ґଘؔ܎ ґଘؔ܎Λ໌ࣔతʹએݴ͠෼཭͢Δ ***ઃఆ ઃఆΛ؀ڥม਺ʹ֨ೲ͢Δ *7όοΫΤϯυαʔϏε όοΫΤϯυαʔϏεΛΞλον͞ΕͨϦιʔε

    ͱͯ͠ѻ͏ 7ϏϧυɾϦϦʔεɾ࣮ߦ ϏϧυɾϦϦʔεɾ࣮ߦͷͭͷεςʔδΛݫີ ʹ෼཭͢Δ 7*ϓϩηε ΞϓϦέʔγϣϯΛͭ΋͘͠͸ෳ਺ͷεςʔτ Ϩεͳϓϩηεͱ࣮ͯ͠ߦ 7**ϙʔτόΠϯσΟϯά ϙʔτόΠϯσΟϯάΛ௨ͯ͠αʔϏεΛެ։͢Δ 7***ฏߦੑ ϓϩηεϞσϧʹΑͬͯεέʔϧΞ΢τ͢Δ *9ഇغ༰қੑ ߴ଎ͳىಈͱάϨʔεϑϧγϟοτμ΢ϯͰݎ࿚ੑΛ࠷ େԽ͢Δ 9։ൃຊ൪Ұக ։ൃɺεςʔδϯάɺຊ൪؀ڥΛͰ͖Δ͚ͩҰகͤͨ͞ ঢ়ଶΛอͭ 9*ϩά ϩάΛΠϕϯτετϦʔϜͱͯ͠ѻ͏ 9**؅ཧϓϩηε ؅ཧλεΫΛճݶΓͷϓϩηεͱ࣮ͯ͠ߦ͢Δ    Dev, Ops" ! 
  33. 5IF5XFMWF'BDUPST *ίʔυϕʔε όʔδϣϯ؅ཧ͞Ε͍ͯΔͭͷίʔυϕʔεͱ ෳ਺ͷσϓϩΠ **ґଘؔ܎ ґଘؔ܎Λ໌ࣔతʹએݴ͠෼཭͢Δ ***ઃఆ ઃఆΛ؀ڥม਺ʹ֨ೲ͢Δ *7όοΫΤϯυαʔϏε όοΫΤϯυαʔϏεΛΞλον͞ΕͨϦιʔε

    ͱͯ͠ѻ͏ 7ϏϧυɾϦϦʔεɾ࣮ߦ ϏϧυɾϦϦʔεɾ࣮ߦͷͭͷεςʔδΛݫີ ʹ෼཭͢Δ 7*ϓϩηε ΞϓϦέʔγϣϯΛͭ΋͘͠͸ෳ਺ͷεςʔτ Ϩεͳϓϩηεͱ࣮ͯ͠ߦ 7**ϙʔτόΠϯσΟϯά ϙʔτόΠϯσΟϯάΛ௨ͯ͠αʔϏεΛެ։͢Δ 7***ฏߦੑ ϓϩηεϞσϧʹΑͬͯεέʔϧΞ΢τ͢Δ *9ഇغ༰қੑ ߴ଎ͳىಈͱάϨʔεϑϧγϟοτμ΢ϯͰݎ࿚ੑΛ࠷ େԽ͢Δ 9։ൃຊ൪Ұக ։ൃɺεςʔδϯάɺຊ൪؀ڥΛͰ͖Δ͚ͩҰகͤͨ͞ ঢ়ଶΛอͭ 9*ϩά ϩάΛΠϕϯτετϦʔϜͱͯ͠ѻ͏ 9**؅ཧϓϩηε ؅ཧλεΫΛճݶΓͷϓϩηεͱ࣮ͯ͠ߦ͢Δ % &')  Dev, Ops-,  $# $# = !'"%( *+
  34. ΞϓϦέʔγϣϯΛಈ্͔͢Ͱ ඞཁͳཁૉͷґଘؔ܎͕໌ࣔతʹఆٛ͞Ε͍ͯΔ͜ͱ **ґଘؔ܎ 3VCZ (FNˠ (FNGJMF /PEFKT ˠ QBDLBHFKTPO 1ZUIPO

    1ZQJ ˠ SFRVJSFNFOUTUYU +BWB ˠ QPNYNM %PDLFS ˠ %PDLFSGJMF ϩʔΧϧ։ൃͷࡍʹ௥Ճͷखॱ͕ൃੜ͢Δ৔߹͸ Կ͔͠Βͷ໰୊Λ๊͍͑ͯΔͱߟ͑ͨํ͕ྑ͍ ΋ͪΖΜݴޠ؀ڥͷߏஙͦͷ΋ͷ͸আ͘ FHNBWFOͰηοτΞοϓͨ͠ޙʹԿ͔Α͘Θ͔Βͳ͍KBSϑΝΠϧΛґଘؔ܎ʹೖΕΔͳͲ
  35. ϏϧυɾϦϦʔεɾ࣮ߦͷϓϩηεΛ໌֬ʹ෼͚Δ 7ϏϧυɾϦϦʔεɾ࣮ߦ ίʔυ  ࣮ߦՄೳͳ όΠφϦ ઃఆ ϑΝΠϧ PS؀ڥม਺ ઃఆ

    ϑΝΠϧ PS؀ڥม਺  ࣮ߦՄೳͳ όΠφϦ Ϗϧυ ϦϦʔε ࣮ߦ ෆ۩߹ݕ஌ PS৽ػೳཁٻ ϦϑΝΫλϦϯά΋͋ΔΑ ίʔυमਖ਼ ɾ௥Ճ
  36. ϏϧυɾϦϦʔεɾ࣮ߦͷϓϩηεΛ໌֬ʹ෼͚Δ 7ϏϧυɾϦϦʔεɾ࣮ߦ ίʔυ  ࣮ߦՄೳͳ όΠφϦ ઃఆ ϑΝΠϧ PS؀ڥม਺ ઃఆ

    ϑΝΠϧ PS؀ڥม਺  ࣮ߦՄೳͳ όΠφϦ Ϗϧυ ϦϦʔε ࣮ߦ ෆ۩߹ݕ஌ PS৽ػೳཁٻ ϦϑΝΫλϦϯά΋͋ΔΑ ίʔυमਖ਼ ɾ௥Ճ -',   (&.+ (%!"!#*    ! !#*   " )$ )
  37. ։ൃεςʔδϯάຊ൪ΛͰ͖Δ͚ͩҰகͤͨ͞ঢ়ଶΛอͭ l ߏ੒ཁૉ͸ଗ͑Δ l ຊ൪ʹ͔͠ଘࡏ͠ͳ͍ίϯϙʔωϯτ͕ͳ͍Α͏ʹ͢Δ l ϥΠηϯε΍ίετͷ౎߹Ͱͦ͏ͳ͍ͬͯΔͳΒͦ΋ͦ΋ͷߏ੒Λݟ௚͢ l εέʔϧ·Ͱଗ͑Δ͔͸༧ࢉͱ૬ஊ l

    ෛՙࢼݧ࣌ͷΈΦϯσϚϯυʹଗ͑ΒΕΔΑ͏ʹ͓ͯ͘͠ͱ͍ͬͨ޻෉͸ΞϦ l Ұக͍ͯ͠ͳ͍෦෼͸໌จԽ͢Δ l ؀ڥ͝ͱͷࠩ෼͸໌จԽ͠ɺ༰қʹؾ෇͚ΔΑ͏ʹ͢Δ l ύϒϦοΫΫϥ΢υͰ͋Ε͹JOUFSOBM%/4Λ͏·͘׆༻Ͱ͖Δͱ͔ͳΓڧྗ 9։ൃຊ൪Ұக