$30 off During Our Annual Pro Sale. View Details »

Being healthy dev and ops in Cookpad

Issei Naruta
September 28, 2013

Being healthy dev and ops in Cookpad

Issei Naruta

September 28, 2013
Tweet

More Decks by Issei Naruta

Other Decks in Technology

Transcript

  1. CFJOHIFBMUIZEFWBOEPQT
    ໎ͬͨΒ݈શͳํ
    dΫοΫύουͷ%FWͱ0QTd
    ੒ాҰੜ

    View Slide

  2. "CPVUNF

    View Slide

  3. ੒ా Ұੜ
    ͳΔͨ ͍͍ͬͤ
    @mirakui
    photo by sora_h
    VP Infrastructure at Cookpad Inc.
    Ϡϑʔ৽ଔೖࣾ
    ϝʔϧαʔϏεͷόοΫΤϯυ։ൃ
    ΫοΫύουೖࣾ
    αʔϏε։ൃΤϯδχΞͱͯ͠ೖࣾޙɺ
    ։ൃج൫νʔϜΛܦͯΠϯϑϥνʔϜʹ

    View Slide

  4. "CPVU$PPLQBE

    View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. View Slide

  10. View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. 0VS1IBTF

    View Slide

  15. 2013೥݄̐ظ ܾࢉઆ໌ձࢿྉ ΑΓ
    https://info.cookpad.com/wp-content/uploads/13.4_s.pdf

    View Slide

  16. ྺ࢙

    View Slide

  17. 1997 ૑ۀ
    2008 Coldfusion → Ruby on Rails ΁Ҡߦ
    2013
    2009
    2010
    2011
    2012
    ݱࡏ
    2007
    2002
    2003
    2004
    2005
    2006
    2001
    2000
    1999
    1998
    ౦ূϚβʔζ্৔
    ੒ా JOIN
    ౦ূҰ෦΁্৔มߋ
    ΤϯδχΞͷਓ਺:
    3
    10~20
    ໿60
    1

    View Slide

  18. ਓ ਓ͕։ൃ΋ӡ༻΋શ෦΍Δ
    ਓ ͏ͪdਓ͕։ൃͭͭ͠ӡ༻
    ਓ ਺ਓن໛ͷӡ༻νʔϜొ৔
    ਓ ӡ༻νʔϜͷ֦େɾઐ໳ผͷࡉ෼Խ
    ΤϯδχΞͷن໛
    ͜ͷ͋ͨΓͰ JOIN
    ͍·͜͜

    View Slide

  19. αʔϏε։ൃܥΤϯδχΞ
    (໿40ਓ)
    ٕज़෦ΤϯδχΞ
    (12ਓ)
    Πϯϑϥ෦
    ΤϯδχΞ
    (5ਓ)
    2013
    %FW
    0QT
    %FW

    View Slide

  20. ࠓ೔ͷ࿩
    • ૊৫͕େ͖͘ͳ͖ͬͯͨ
    • Dev ͱ Ops ͷؔ܎͸
    Ͳ͏ͳ͍ͬͯ͘ͷ͔ʁ
    DevOps
    Dev Ops

    View Slide

  21. σϓϩΠ

    View Slide

  22. σϓϩΠ
    5~10 deploy / day

    View Slide

  23. σϓϩΠϧʔϧʢҰ෦ʣ
    • CI Λύεͨ͠ϦϏδϣϯͷΈ
    σϓϩΠͯ͠Α͍
    • σϓϩΠ͸ίʔυΛ push ͨ͠։ൃऀࣗ਎͕
    ߦ͏
    • Ӧۀ࣌ؒ಺ͷΈσϓϩΠՄೳ
    • σϓϩΠޙ͸։ൃऀ͕ಈ࡞֬ೝ͠ɺ
    ෆ۩߹Λݟ͚ͭͨΒ͙͢ʹϩʔϧόοΫ͢Δ

    View Slide

  24. View Slide

  25. ࣦഊ

    View Slide

  26. ϦϦʔε೔͕ࠓ೔ͩͬͨ
    • DevʮϦϦʔεࠓ೔Ͱ͢ʯ
    • Opsʮʂʁʯ

    View Slide

  27. ϦϦʔεલͷ0QTͷ࡞ۀ
    • ຊ൪αʔόηοτΞοϓ
    • ؂ࢹઃఆ
    • ΩϟύγςΟଌఆ
    • ৑௕Խ
    • ͳͲͳͲ…

    View Slide

  28. %FWͷࣄ৘
    • ιʔείʔυ͸
    ϦϦʔε௚લ·Ͱ fix ͠ͳ͍
    • ʮϦϦʔε೔ʯ͸ॏཁ
    • Dev ͕σϓϩΠՄೳ
    ʹʢٕज़తʹ͸ʣউखʹϦϦʔεՄೳ
    • ඇެ։→Ϣʔβݶఆެ։→શମެ։

    View Slide

  29. developing
    setup
    servers
    SFMFBTF
    ✔source code
    fix
    ✔ fixtures
    fix
    Dev
    Ops

    View Slide

  30. ຊ࣭తͳ໰୊
    Dev - Ops ؒίϛϡχέʔγϣϯ

    View Slide

  31. Ͳ͏͢Δ͔ʁ
    • ϦϦʔε೔ͷܾఆʹ Ops ͷঝೝ͕
    ඞཁͳϧʔϧʹ͢Δʁ
    • Opsʮιʔείʔυ fix ͔ͯ͠Β
    ϦϦʔε·Ͱʹ3Ӧۀ೔ඞཁͰ͢ʯʁʁ

    View Slide

  32. ݖҖతʹͳΒͳ͍

    View Slide

  33. ঝೝϑϩʔͷ૿Ճ
    • ݸਓͷΦʔφʔγοϓ͕ݮਰ
    ࢓ࣄָ͕͘͠ͳ͘ͳΔ
    • ঝೝΛ௨͢ςΫχοΫ΍੓࣏͕ൃੜ
    • ίϛϡχέʔγϣϯͰղܾͰ͖Δ෦෼͸
    ΪϦΪϦ·Ͱͦ͏͢Δ΂͖

    View Slide

  34. ϓϩμΫτͷϦϦʔεΛ
    0QT͕ࢭΊͳ͍

    View Slide

  35. developing
    setup
    servers
    SFMFBTF
    ✔source code
    fix
    ✔ fixtures
    fix
    Dev
    Ops
    #"%

    View Slide

  36. developing
    setup
    servers
    SFMFBTF
    ✔source code
    fix
    ✔ fixtures
    fix
    Dev
    Ops
    DPNNVOJDBUJPO
    (00%

    View Slide

  37. ׬ᘳ͞Λ௥ٻ͠ͳ͍

    View Slide

  38. 0QT͕׬ᘳ͞ΛٻΊΔͱʜ
    • ϦϦʔεલʹɺ׬શʹpY͞Εͨ
    ιʔείʔυͰΩϟύγςΟܭଌ͍ͨ͠
    • ύϑΥʔϚϯεʹ໰୊ͷ͋ΔίʔυΛ
    Ұ੾ڐͨ͘͠ͳ͍

    View Slide

  39. Dev Ops
    $PSQPSBUJPO
    Customers

    View Slide

  40. %FWͱ͔0QTͱ͔ͷલʹ
    ૊৫΍ސ٬ʢϢʔβʔʣʹͱͬͯ
    ༗ӹͳ൑அ͔Ͳ͏͔େࣄ

    View Slide

  41. ٻΊΔ΂͖͸
    ʮ׬ᘳ͞ʯͰ͸ͳ͘ʮ݈શ͞ʯ

    View Slide

  42. ݈શ͞ͷͨΊʹ
    ࣌ʹ͸ Ops ʹͱͬͯෆརӹͳબ୒Λڐ͢
    ➡ ૉ੖Β͍͠ΞʔΩςΫνϟ vs ϦϦʔε೔
    ➡ αʔό૿΍ͯ͠ղܾ vs ίετ
    ➡ ΦϖϨʔγϣϯ׬શࣗಈԽ vs ਓ݅අ

    View Slide

  43. /PU׬ᘳCVU݈શ
    ϦϦʔεલɺ׬શʹ fix ͞Εͨ
    ιʔείʔυͰΩϟύγςΟܭଌ͍ͨ͠
    ➡ ։ൃॳظ͔ΒύϑΥʔϚϯεʹ͍ͭͯ࿩͠߹͏
    ➡ ΩϟύγςΟܭଌ͢Δͷʹे෼ͳ
    ϨϕϧͷίʔυΛૣΊʹग़ͯ͠΋Β͏
    Α͏ʹίϛϡχέʔγϣϯ

    View Slide

  44. /PU׬ᘳCVU݈શ
    ύϑΥʔϚϯεʹ໰୊ͷ͋ΔίʔυΛ
    Ұ੾ڐͨ͘͠ͳ͍
    ➡ αʔό૿΍ͯ͠ղܾ͢ΔͳΒ
    ͦΕͰ͍͍৔߹΋͋ΔͷͰ͸ʁ
    Ϣʔβ/૊৫ʹརӹ͕͋Δํ͸ʁ

    View Slide

  45. าΈدΓͷͨΊʹ

    View Slide

  46. %FWͷ͜ͱΛΑ͘ཧղ͢Δ
    • Ops ͕αʔϏεͷ࠷৽ͷ
    ιʔείʔυΛ௥͏
    • Dev ಉ࢜ͷٞ࿦ʹࣖΛ܏͚Δ
    • ։ൃͷॳظ͔ΒྠʹೖΕͯ΋Β͏

    View Slide

  47. 0QTʹٻΊΒΕΔ΋ͷ
    αʔόͰಈ͍͍ͯΔ΋ͷΛ
    ιʔείʔυϨϕϧͰཧղ͢Δ
    ➡ ϛυϧ΢ΣΞ
    ➡ ΞϓϦέʔγϣϯ

    View Slide

  48. %FWʹٻΊΔ΋ͷ
    • αʔόαΠυͷηϯε
    • ͦͷίʔυʹେྔͷτϥϑΟοΫ͕
    དྷͨΒͲ͏ͳΔ͔
    • ΩϟογϡͳͲ

    View Slide

  49. ྫύϑΥʔϚϯε͕ग़ͳ͍
    × Ops ͕໧ͬͯνϡʔχϯά
    ○ Dev ͱ Ops Ұॹʹ௚͍ͯ͘͠

    View Slide

  50. ύϑΥʔϚϯεʹӨڹ͕ग़ͦ͏ͳίʔυ
    ඞͣ pull-request Ͱ mention ͯ͠΋Β͏
    ͱ͍͏ϧʔϧ

    View Slide

  51. 0QT΋αʔϏεͷίʔυʹ
    QVMMSFRVFTUΛग़͢

    View Slide

  52. ΘΓͱͰ͖͍ͯΔ͜ͱ
    Ops → Dev ͷཧղ
    ➡ ݩ Dev ͕ Ops Λ཰͍͍ͯΔ
    ➡ Ops ͕શһίʔυಡΈॻ͖Ͱ͖Δ
    ➡ Dev ΁ͷޱग़͠
    ιʔείʔυϨϕϧͰͷͭͬ͜Έ

    View Slide

  53. View Slide

  54. ࠓޙͷ՝୊

    View Slide

  55. ૊৫͕͞ΒʹڊେʹͳΔͱ
    ΤϯδχΞݸਓ͕ࣗ෼Ͱ
    ҙࢥܾఆ͢Δػձ͕গͳ͘ͳ͍ͬͯ͘ʁ
    ➡ ਓ͕૿͑Δͱࣗ෼ΑΓ্ͷࢹ఺Λ
    ࣋ͪʹ͘͘ͳΔ
    ➡ ϧʔϧ΍ϑϩʔΛ৴ͯٙ͡Θͳ͍ঢ়ଶʹؕΓ΍͍͢
    ➡ ݱ৔ͷࡋྔΛҡ࣋Ͱ͖Δ͔͕伴

    View Slide

  56. ͓ΘΓʹ

    View Slide

  57. ϕϯνϟʔاۀͷ%FW0QT
    • ͸͡Ί͸ΈΜͳ DevOps
    • ૊৫͕֦େ͢ΔͱɺͦΕ·Ͱ౰ͨΓલ
    ͩͬͨ͜ͱ͕΍Γʹ͘͘ͳΔ
    • Dev ͱOps ͕཭Ε͍ͯ͘ͷΛ
    Ͳ͜·Ͱ৯͍ࢭΊΒΕΔ͔
    • 伴͸ʮ݈શͳํΛબ୒͠ଓ͚Δ͜ͱʯ
    • Dev Ops ؒͷ݈શ͞ʹ૊৫ͷ݈શ͞

    View Slide

  58. ໎ͬͨΒ݈શͳํ
    • ׬ᘳ͞Ͱ͸ͳ݈͘શ͞
    • τϨʔυΦϑʹͿ͔ͭͬͨΒ
    ʮ͜ͷબ୒͸݈શͩΖ͏͔ʁʯ
    ͱࣗ෼ʹ໰͍͔͚Δ
    • ࣌ʹ͸టष͍ํ๏ΛબͿ
    • ࣗ෼ͷཱ৔ʹͱͬͯͷ౎߹ͷΑ͞Ͱ͸ͳ͘ɺ
    શମʹͱ݈ͬͯશͳํΛબͿ

    View Slide

  59. 13

    View Slide

  60. 8F`SFIJSJOH
    https://info.cookpad.com/jobs/
    [en, ja]

    View Slide

  61. 5IBOLZPVGPSMJTUFOJOH

    View Slide