Slide 1

Slide 1 text

Canary Deployments ! Move Fast, Fail Fast (and Small) Sep / 26 / 2016 1

Slide 2

Slide 2 text

AboutMe @yyoshiki41 Yoshiki Nakagawa Infrastructure Engineer, pairs Division Tech » Golang » Middleware, AWS 2

Slide 3

Slide 3 text

What is the canary server ? By 4028mdk09 (Own work) [CC BY-SA 3.0], via Wikimedia Commons 3

Slide 4

Slide 4 text

Canary Server tl;dr σϓϩΠ΍ϓϩϏδϣχϯάΛ͍͖ͳΓ ϓϩμΫγϣϯ؀ڥͷશମͰ͸ͳ͘ɺઌ ߦͯ͠Ұ෦෼ʹରͯ͠ߦ͍ɺ ͜Ε͕దԠ͞Εͨ΋ͷΛʮΧφϦΞαʔ όʯͱݺͿɻ Ұ෦෼ͷΫϥελʹΑΔݕূͰɺࣦഊ࣌ ͷμϝʔδΛগͳ͘͢Δߟ͑ํɻ ϑΟʔυόοΫΛ͍ͪૣ͘ड͚औΕΔɻ 4

Slide 5

Slide 5 text

୸߭ͰͷಟΨεݕ஌ʹɺΧφϦΞ͕࢖ ΘΕͨ͜ͱʹ༝དྷ͢Δɻ ͍ΘΏΔ୸߭ͷΧφϦΞ͸ɺ୸߭ʹ͓ ͍ͯ͠͹͠͹ൃੜ͢Δϝλϯ΍ҰࢎԽ ୸ૉͱ͍ͬͨ஠ଉΨε΍ಟΨεૣظൃ ݟͷͨΊͷܯใͱͯ͠࢖༻͞Εͨɻຊ छ͸ͭͶʹ͍͑ͣͬͯ͞ΔͷͰɺҟৗൃ ੜʹઌۦ͚·ͣ͸໐͖੠͕ࢭΉɻͭ· Γةݥͷ࡯஌Λ໨ͱࣖͰ֬ೝͰ͖Δॴ ͕ॏๅ͞ΕɺಟΨεݕ஌ʹ༻͍ΒΕ ͨɻ wikipedia ΑΓ 5

Slide 6

Slide 6 text

Use Cases 6

Slide 7

Slide 7 text

Application » มߋͨ͠ΞϓϦέʔγϣϯίʔυΛຊ൪σϓϩΠͯ͠ݕূ͍ͨ͠ » ৽ػೳͷ૝ఆ͍ͯ͠ͳ͍όάΛ࠷খݶʹ๷͍͗ͨ / ෛՙΛݕূ͍ͨ͠ Infra » ৽͍͠ϛυϧ΢ΣΞΛࢼ͍ͨ͠ » ϛυϧ΢ΣΞͷϓϩϏδϣχϯάมߋલޙͷมԽΛݕূ͍ͨ͠ 7

Slide 8

Slide 8 text

Use Cases in pairs Ansible commands! $ ansible-playbook -i hosts/pairs-jp/prod --limit web-canary playbook_pairs/delivery.yml --extra-vars="pkg_dir=v160101010101-10f29c9" That's all! 8

Slide 9

Slide 9 text

Use Cases in Netflix σϓϩΠαΠΫϧʹΧφϦΞΫϥελ΁ͷσϓϩΠؚ͕·Ε͓ͯΓɺ ϨϙʔςΟϯά(Canary analysis report) => શମެ։͢Δ͔൱͔ͷδϟ οδ (Canary Score) ·Ͱ͕ࣗಈԽ͞Ε͍ͯ·͢ɻ ਺ඦ୆ͱ͍͏Α͏ͳن໛Λӡ༻͍ͯ͘͠͏͑Ͱɺ શ୆ࢮ๢͸ઈରʹආ͚ͳ͚Ε͹ͳΒͳ͍͜ͱΛߟ͑ΔͱࣗવͳྲྀΕɻ 9

Slide 10

Slide 10 text

Development & Deployment Flow ެࣜϒϩά ʮDeploying the Netflix APIʯ 10

Slide 11

Slide 11 text

Containers Containerͱͷ૬ੑ͕ྑ͍ͷͰɺ Container as a service΍ɺCI/CDαʔ Ϗεʹ૊Έࠐ·Ε͍ͯΔ΋ͷ΋ଟ͍ɻ e.g.) Kubernetes 11

Slide 12

Slide 12 text

Caution ޓ׵ΛऔΕ͍ͯͳ͍΋ͷ͸ɺΧφϦΞαʔό΁ͷσϓϩΠ͕ग़དྷͳ͍ɻ e.g.) ৽͍͠APIϦΫΤετΛ౤͛ΔΫϥΠΞϯτଆͷίʔυ΋ؚΉ ! 12

Slide 13

Slide 13 text

Others ຊ൪؀ڥ(ಉ౳)ͰͷݕূΛߦ͍͍ͨ৔߹ɺ ΧφϦΞαʔόͰ͸ͳ͘γϟυʔϓϩΩγΛ༻͍Δख๏΋ϝδϟʔɻ e.g.) cookpad/Kage 13

Slide 14

Slide 14 text

Move Fast, Fail Fast (and Small) ୸߭ (ຊ൪؀ڥ) ʹ͸ɺةݥ͕͍ͬͺ͍Ͱ͢ɻ શ໓Λආ͚Δҝʹ΋ɺΧφϦΞͷॿ͚ΛआΓ·͠ΐ͏ ! (΋ͪΖΜɺΧφϦΞ΋ࢮͳͤͳ͍͜ͱ͕ϕετͰ͕͢ɻ) 14