Talked at DevOpsDay Tokyo 2013 http://connpass.com/event/3052/
http://togetter.com/li/569904
CFJOHIFBMUIZEFWBOEPQT໎ͬͨΒ݈શͳํdΫοΫύουͷ%FWͱ0QTdాҰੜ
View Slide
"CPVUNF
ా ҰੜͳΔͨ ͍͍ͬͤ@mirakuiphoto by sora_hVP Infrastructure at Cookpad Inc.Ϡϑʔ৽ଔೖࣾϝʔϧαʔϏεͷόοΫΤϯυ։ൃΫοΫύουೖࣾαʔϏε։ൃΤϯδχΞͱͯ͠ೖࣾޙɺ։ൃج൫νʔϜΛܦͯΠϯϑϥνʔϜʹ
"CPVU$PPLQBE
0VS1IBTF
2013݄̐ظ ܾࢉઆ໌ձࢿྉ ΑΓhttps://info.cookpad.com/wp-content/uploads/13.4_s.pdf
ྺ࢙
1997 ۀ2008 Coldfusion → Ruby on Rails Ҡߦ20132009201020112012ݱࡏ2007200220032004200520062001200019991998౦ূϚβʔζ্ా JOIN౦ূҰ෦্มߋΤϯδχΞͷਓ:310~20601
ਓ ਓ͕։ൃӡ༻શ෦Δਓ ͏ͪdਓ͕։ൃͭͭ͠ӡ༻ਓ ਓنͷӡ༻νʔϜొਓ ӡ༻νʔϜͷ֦େɾઐผͷࡉԽΤϯδχΞͷن͜ͷ͋ͨΓͰ JOIN͍·͜͜
αʔϏε։ൃܥΤϯδχΞ(40ਓ)ٕज़෦ΤϯδχΞ(12ਓ)Πϯϑϥ෦ΤϯδχΞ(5ਓ)2013%FW0QT%FW
ࠓͷ• ৫͕େ͖͘ͳ͖ͬͯͨ• Dev ͱ Ops ͷؔͲ͏ͳ͍ͬͯ͘ͷ͔ʁDevOpsDev Ops
σϓϩΠ
σϓϩΠ5~10 deploy / day
σϓϩΠϧʔϧʢҰ෦ʣ• CI Λύεͨ͠ϦϏδϣϯͷΈσϓϩΠͯ͠Α͍• σϓϩΠίʔυΛ push ͨ͠։ൃऀ͕ࣗߦ͏• Ӧۀ࣌ؒͷΈσϓϩΠՄೳ• σϓϩΠޙ։ൃऀ͕ಈ࡞֬ೝ͠ɺෆ۩߹Λݟ͚ͭͨΒ͙͢ʹϩʔϧόοΫ͢Δ
ࣦഊ
ϦϦʔε͕ࠓͩͬͨ• DevʮϦϦʔεࠓͰ͢ʯ• Opsʮʂʁʯ
ϦϦʔεલͷ0QTͷ࡞ۀ• ຊ൪αʔόηοτΞοϓ• ࢹઃఆ• ΩϟύγςΟଌఆ• Խ• ͳͲͳͲ…
%FWͷࣄ• ιʔείʔυϦϦʔεલ·Ͱ fix ͠ͳ͍• ʮϦϦʔεʯॏཁ• Dev ͕σϓϩΠՄೳʹʢٕज़తʹʣউखʹϦϦʔεՄೳ• ඇެ։→Ϣʔβݶఆެ։→શମެ։
developingsetupserversSFMFBTF✔source codefix✔ fixturesfixDevOps
ຊ࣭తͳDev - Ops ؒίϛϡχέʔγϣϯ
Ͳ͏͢Δ͔ʁ• ϦϦʔεͷܾఆʹ Ops ͷঝೝ͕ඞཁͳϧʔϧʹ͢Δʁ• Opsʮιʔείʔυ fix ͔ͯ͠ΒϦϦʔε·Ͱʹ3ӦۀඞཁͰ͢ʯʁʁ
ݖҖతʹͳΒͳ͍
ঝೝϑϩʔͷ૿Ճ• ݸਓͷΦʔφʔγοϓ͕ݮਰࣄָ͕͘͠ͳ͘ͳΔ• ঝೝΛ௨͢ςΫχοΫ࣏͕ൃੜ• ίϛϡχέʔγϣϯͰղܾͰ͖Δ෦ΪϦΪϦ·Ͱͦ͏͢Δ͖
ϓϩμΫτͷϦϦʔεΛ0QT͕ࢭΊͳ͍
developingsetupserversSFMFBTF✔source codefix✔ fixturesfixDevOps#"%
developingsetupserversSFMFBTF✔source codefix✔ fixturesfixDevOpsDPNNVOJDBUJPO(00%
ᘳ͞Λٻ͠ͳ͍
0QT͕ᘳ͞ΛٻΊΔͱʜ• ϦϦʔεલʹɺશʹpY͞ΕͨιʔείʔυͰΩϟύγςΟܭଌ͍ͨ͠• ύϑΥʔϚϯεʹͷ͋ΔίʔυΛҰڐͨ͘͠ͳ͍
Dev Ops$PSQPSBUJPOCustomers
%FWͱ͔0QTͱ͔ͷલʹ৫ސ٬ʢϢʔβʔʣʹͱͬͯ༗ӹͳஅ͔Ͳ͏͔େࣄ
ٻΊΔ͖ʮᘳ͞ʯͰͳ͘ʮ݈શ͞ʯ
݈શ͞ͷͨΊʹ࣌ʹ Ops ʹͱͬͯෆརӹͳબΛڐ͢➡ ૉΒ͍͠ΞʔΩςΫνϟ vs ϦϦʔε➡ αʔό૿ͯ͠ղܾ vs ίετ➡ ΦϖϨʔγϣϯશࣗಈԽ vs ਓ݅අ
/PUᘳCVU݈શϦϦʔεલɺશʹ fix ͞ΕͨιʔείʔυͰΩϟύγςΟܭଌ͍ͨ͠➡ ։ൃॳظ͔ΒύϑΥʔϚϯεʹ͍ͭͯ͠߹͏➡ ΩϟύγςΟܭଌ͢ΔͷʹेͳϨϕϧͷίʔυΛૣΊʹग़ͯ͠Β͏Α͏ʹίϛϡχέʔγϣϯ
/PUᘳCVU݈શύϑΥʔϚϯεʹͷ͋ΔίʔυΛҰڐͨ͘͠ͳ͍➡ αʔό૿ͯ͠ղܾ͢ΔͳΒͦΕͰ͍͍߹͋ΔͷͰʁϢʔβ/৫ʹརӹ͕͋Δํʁ
าΈدΓͷͨΊʹ
%FWͷ͜ͱΛΑ͘ཧղ͢Δ• Ops ͕αʔϏεͷ࠷৽ͷιʔείʔυΛ͏• Dev ಉ࢜ͷٞʹࣖΛ͚Δ• ։ൃͷॳظ͔ΒྠʹೖΕͯΒ͏
0QTʹٻΊΒΕΔͷαʔόͰಈ͍͍ͯΔͷΛιʔείʔυϨϕϧͰཧղ͢Δ➡ ϛυϧΣΞ➡ ΞϓϦέʔγϣϯ
%FWʹٻΊΔͷ• αʔόαΠυͷηϯε• ͦͷίʔυʹେྔͷτϥϑΟοΫ͕དྷͨΒͲ͏ͳΔ͔• ΩϟογϡͳͲ
ྫύϑΥʔϚϯε͕ग़ͳ͍× Ops ͕ͬͯνϡʔχϯά○ Dev ͱ Ops Ұॹʹ͍ͯ͘͠
ύϑΥʔϚϯεʹӨڹ͕ग़ͦ͏ͳίʔυඞͣ pull-request Ͱ mention ͯ͠Β͏ͱ͍͏ϧʔϧ
0QTαʔϏεͷίʔυʹQVMMSFRVFTUΛग़͢
ΘΓͱͰ͖͍ͯΔ͜ͱOps → Dev ͷཧղ➡ ݩ Dev ͕ Ops Λ͍͍ͯΔ➡ Ops ͕શһίʔυಡΈॻ͖Ͱ͖Δ➡ Dev ͷޱग़͠ιʔείʔυϨϕϧͰͷͭͬ͜Έ
ࠓޙͷ՝
৫͕͞ΒʹڊେʹͳΔͱΤϯδχΞݸਓ͕ࣗͰҙࢥܾఆ͢Δػձ͕গͳ͘ͳ͍ͬͯ͘ʁ➡ ਓ͕૿͑ΔͱࣗΑΓ্ͷࢹΛ࣋ͪʹ͘͘ͳΔ➡ ϧʔϧϑϩʔΛ৴ͯٙ͡Θͳ͍ঢ়ଶʹؕΓ͍͢➡ ݱͷࡋྔΛҡ࣋Ͱ͖Δ͔͕伴
͓ΘΓʹ
ϕϯνϟʔاۀͷ%FW0QT• ͡ΊΈΜͳ DevOps• ৫͕֦େ͢ΔͱɺͦΕ·ͰͨΓલͩͬͨ͜ͱ͕Γʹ͘͘ͳΔ• Dev ͱOps ͕Ε͍ͯ͘ͷΛͲ͜·Ͱ৯͍ࢭΊΒΕΔ͔• 伴ʮ݈શͳํΛબ͠ଓ͚Δ͜ͱʯ• Dev Ops ؒͷ݈શ͞ʹ৫ͷ݈શ͞
໎ͬͨΒ݈શͳํ• ᘳ͞Ͱͳ݈͘શ͞• τϨʔυΦϑʹͿ͔ͭͬͨΒʮ͜ͷબ݈શͩΖ͏͔ʁʯͱࣗʹ͍͔͚Δ• ࣌ʹటष͍ํ๏ΛબͿ• ࣗͷཱʹͱͬͯͷ߹ͷΑ͞Ͱͳ͘ɺશମʹͱ݈ͬͯશͳํΛબͿ
13
8F`SFIJSJOHhttps://info.cookpad.com/jobs/[en, ja]
5IBOLZPVGPSMJTUFOJOH