YAP(achimon)C::Asia Hachioji 2016 Day2
ΤϯδχΞ͚SaaSΛࢧ͑ΔInfrastructure as CodeYAP(achimon)C::Asia Hachioji 2016 Day2
View Slide
ࣗݾհ• ᬒҰਅ (@wata727_)• Engineer in Actcat, Inc. ΠϯϑϥدΓαʔόαΠυ
࠷ॳʹ
ཧͱݱ࣮
ImmutableͰ͋Δ͜ͱͷ͠͞• ࠷ॳImmutable Infrastructureʹ͍ͭͯτʔΫ͢ΔͭΓͩͬͨ• ࣮ݱ͢ΔͨΊʹ՝͕ଟ͗ͨ͢ʢޙड़ʣ
ΤϯδχΞ͚SaaS
SideCI
SideCIࣗಈίʔυϨϏϡʔ
GitHub࿈ܞ
https://github.com/integrations/sideci
ࠓͷ͓• SideCIͷAWSҠߦࣄྫ• Πϯϑϥͷӡ༻ํࣜΛબͨ͠• ࣮ݱ͢ΔͨΊͷInfrastructure as Code
AWSͷҠߦ
Ҏલͷߏ
ϋΠϒϦοτΫϥυߏ• AWS + GCP• VPNͰଓͯ͠ωοτϫʔΫΛߏங• ҰํͷϕϯμʔͷোͰαʔϏε͕མͪΔ͜ͱ͕͋ͬͯɺҰຊԽ͍ͨ͠ͱ͍͏͕͋ͬͨ
Ҡߦͷ՝
ߏཧ͞Ε͍ͯͳ͍• Ҿ͖ܧ͕Εͨखॱॻ.mdͷΈ• νʔϜ͕εέʔϧ͢ΔͱଐਓԽͷΛট͖ͦ͏ͱ͍͏ผͷ…• ԿΒ͔ͷࣗಈԽ͕ඞཁ
ߏཧ͞Ε͍ͯͳ͍• Ҿ͖ܧ͕Εͨखॱॻ.mdͷΈ• νʔϜ͕εέʔϧ͢ΔͱଐਓԽͷΛট͖ͦ͏ͱ͍͏ผͷ…• ԿΒ͔ͷࣗಈԽ͕ඞཁInfrastructure as CodeΛΔͧʂʂ
Πϯϑϥͷӡ༻ํࣜͷબ
Ͳ͏ͬͯίʔυԽ͢Δ͔• ·ͣΠϯϑϥɺσϓϩΠͷཧɺӡ༻ΛͲ͏͢Δ͖͔ߟ͔͑ͯΒɺπʔϧΛબ͢Δ• PushܕɺPullܕɺImmutable…
Pushܕ
Pushܕͷӡ༻ɺσϓϩΠ• ΫϥΠΞϯτ͔Β֤αʔόʹϛυϧΣΞมߋΞϓϦέʔγϣϯͷσϓϩΠΛSSHܦ༝ͳͲͰߦ͏• Ansible, Itamae, CapistranoͳͲ
Pushܕͷӡ༻ɺσϓϩΠ
ϝϦοτͱσϝϦοτ• ΫϥΠΞϯτͷΈͰಈ࡞͢ΔͷͰαʔόଆʹઃఆ͕ෆཁͰཧָ͕• αʔόͷ͕ଟ͔ͬͨΓɺΦʔτεέʔϦϯάͰ૿ݮ͢Δͱద༻͕͘͠ͳΔ
Pullܕ
Pullܕͷӡ༻ɺσϓϩΠ• ֤αʔό͕ࣗͰඞཁͳϛυϧΣΞɺΞϓϦέʔγϣϯͷมߋΛࣗࣗʹద༻͢Δ• Chef, AWS CodeDeploy, StretcherͳͲ
Pullܕͷӡ༻ɺσϓϩΠ
ϝϦοτͱσϝϦοτ• ֤αʔό͕Λ࣋ͭͷͰεέʔϧ͢ΔɺΦʔτεέʔϦϯάͰવͳ͠• ֤αʔόʹର͢ΔݩͱͳΔαʔό͕SPOFʹͳΓ͕ͪͳͷͰɺԽͳͲߟ͑Δͱϝϯςφϯείετ͕ߴ͍
Immutable
Immutableͳӡ༻ɺσϓϩΠ• ֤αʔό࠷ॳ͔ΒมߋࡁΈͰɺมߋΛཁ͢Δ߹ʹαʔό͝ͱഁغ͢Δ• ؔ࿈πʔϧPacker, DockerͳͲ
Immutableͳӡ༻ɺσϓϩΠ
ϝϦοτͱσϝϦοτ• ֤αʔόશʹෳՄೳͰɺϩʔϧόοΫ͕༰қʢBlue-Green Deployʣ• ΰʔϧσϯΠϝʔδͷੜίετ͕ߴ͍
Immutableͳํࣜͷ࠾༻
ΰʔϧσϯΠϝʔδͷϏϧυ• αʔϏεΠϯՄೳͳϚγϯΠϝʔδΛPackerͰϏϧυ͢Δ• αʔϏεΠϯՄೳͰ͋Δ͜ͱPackerͷϏϧυͷ࠷ޙʹServerspecΛ࣮ߦͯ͠୲อ͢Δ
ImmutableͳσϓϩΠ• ৽͍͠ϚγϯΠϝʔδ͝ͱʹαʔόΛBlue-GreenతʹೖΕସ͑Δ• TerraformʹΑΔαʔό࠶ஔͷࣗಈԽ• طଘͷϦιʔεTerraformingͰநग़
αʔόߏஙϑϩʔQBDLFSCVJMETFSWFSKTPO
QBDLFSCVJMETFSWFS KTPOServerݩʹͳΔαʔόͷىಈαʔόߏஙϑϩʔ
αʔόߏஙϑϩʔQBDLFSCVJMETFSWFS KTPOServerαʔόΛߏஙQSPWJTJPOFST\UZQFTIFMM [email protected]\\7BST^^TVEP&CBTIF\\1BUI^^\\VTFSAFOWJSPONFOUA^^ TDSJQUT[email protected] [email protected]>^ ʜ
αʔόߏஙϑϩʔQBDLFSCVJMETFSWFS KTPOServer4FSWFSTQFDͰಈ࡞ςετ
αʔόߏஙϑϩʔQBDLFSCVJMETFSWFS KTPOServerMachine Imageαʔό͔ΒϚγϯΠϝʔδΛநग़
αʔόߏஙϑϩʔQBDLFSCVJMETFSWFS KTPOMachine ImageαʔόΛআ
αʔόߏஙϑϩʔUFSSBGPSNBQQMZMachine Image
αʔόߏஙϑϩʔUFSSBGPSNBQQMZMachine ImageݩʹͳΔϚγϯΠϝʔδΛࢦఆ
αʔόߏஙϑϩʔUFSSBGPSNBQQMZMachine ImageSecurity Group༻͢ΔηΩϡϦςΟάϧʔϓΛࢦఆ
αʔόߏஙϑϩʔUFSSBGPSNBQQMZMachine ImageSecurity GroupServerͦΕͧΕͷઃఆ͔ΒαʔόΛىಈ
ൃੜ
ΠϝʔδͷϏϧυ͕͗͢Δ• 30͘Β͍͔͔Δ• σϓϩΠͷ͕2ˠ30ʙͱ͔ʹͳΔ• ϦϦʔεʹର͢Δ߅ײͷ૿େ
σϓϩΠ͚ͩPushܕʹ• σϓϩΠैདྷ௨ΓCapistrano• ϛυϧΣΞมߋ࣌ͷΈϚγϯΠϝʔδΛߋ৽͢ΔΑ͏ʹมߋ
Ҡߦ࡞ۀͷ࣮ࢪ
ҠߦͷྲྀΕ• ฒྻͰࣄલʹϓϩμΫγϣϯڥΛՔಇ͓ͤͯ͘͞ʢNOT εςʔδϯάʣ• ՄೳͳݶΓɺELBͱRoute53ͷΓସ͚͑ͩͰτϥϑΟοΫͷྲྀΕΛมߋ͢ΔΑ͏ʹ͢Δ
Ҡߦલ
Ҡߦޙ
ແࣄྃ
Infrastructure asCodeΛಋೖ͢Δͱ͍͏͜ͱ
ָͳӡ༻Λߟ͑Δ• ྫ͑ɺΠϝʔδͷϏϧυʹ͕͔͔࣌ؒΓ͗ͨ͢ΓɺϏϧυͷͨΊʹෳࡶͳڥΛߏங͢Δඞཁ͕͋Δͱɺͳ͔ͳ͔ਁಁ͠ͳ͍• ·ͩ·ͩվળͷ༨͋Γ…
نʹ͋ͬͨํ๏ΛબͿ• AutoScalingΛඞཁͱ͠ͳ͍গͷαʔόͳΒPushܕͰेͳ͜ͱ͋Δ• ͦΕͧΕʹదͨ͠πʔϧ͕͋ΔͷͰɺྲྀߦΓഇΓʹΘ͞Εͳ͍
Thank you!