Infrastructure as Codeͷ͜Ε·Ͱͱ͜Ε͔ΒRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 1
View Slide
ࣗݾհ• ٶԼ ߶ี ([email protected], [email protected])• ߹ಉձࣾServerspec Operationsද• גࣜձࣾϦΫϧʔτςΫϊϩδʔζATLٕज़ސ• ઍגࣜձٕࣾज़ސRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 2
ࠓ͓͢͠Δ͜ͱ• Infrastructure as Code ͱͦͷྺ࢙• Infrastructure as Code ͷݱঢ়• Infrastructure as Code ͷ͜Ε͔ΒRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 3
Infrastructure as Codeͱͦͷྺ࢙Recruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 4
Infrastructure as Codeͱʁ• ΠϯϑϥΛίʔυͰهड़͢Δ͜ͱ• ͦΕʹΑΓιϑτΣΞ։ൃͰطʹ༗ޮͰ͋Δͱཱূ͞Ε͍ͯΔϓϥΫςΟεΛΠϯϑϥʹಉ͡Α͏ʹద༻Ͱ͖ɺͦͷԸܙ͕ड͚ΒΕΔRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 5
Recruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 6
Infrastructure as Codeͷࡾຊப• ࣗಈԽ• όʔδϣϯཧ• ςετRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 7
Infrastructure as Codeͷੜ• େݩ1993ͷCFEngine• 2005ͷPuppetొ͕తͳ͖͔͚ͬ• Infrastructure as Codeͱ͍͏ݴ༿͕ग़͖ͯͨͷ2008ࠒ• ChefͷϦϦʔε2009• ࣌ࣗಈԽ͕ओ؟Recruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 8
Infrastructure as Codeͷมભ• ʮίʔυԽͯࣗ͠ಈԽʯ͔ΒʮιϑτΣΞ։ൃͷϓϥΫςΟεΛద༻ʯʹͳΔஹީ2008͙Β͍͔Β͋ͬͨ• Agile Infrastructure/Agile Operations• DevOpsͷొ2009ࠒ• 2011ग़൛ͷTest-Driven Infrastructure with Chef• 2013ϦϦʔεͷServerspecRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 9
࠷ۙͷ Infrastructureas Code ࣄRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 10
Recruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 11
Infrastructure as Code ʹؔ͢ΔπʔϧαʔϏεͷྨ• Dynamic Infrastructure Platforms• Infrastructure Definition Tools• Server Configuration Tools• Infrastructure ServicesRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 12
Dynamic Infrastructure Platforms• αʔόɺετϨʔδɺωοτϫʔΫͱ͍ͬͨίϯϐϡʔλϦιʔεΛϓϩάϥϚϒϧʹఏڙ͢Δͷ• EC2ͷΑ͏ͳIaaSOpenStackͷΑ͏ͳIaaSΛߏ͢ΔͨΊͷπʔϧ• Cobbler Foreman ͷΑ͏ͳཧϚγϯΛϓϩϏδϣχϯά͢ΔπʔϧRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 13
Infrastructure Definition Tools• Infrastructure as Codeతͳख๏ͰDynamic InfrastructurePlatforms্ͷϦιʔεΛ੍ޚ• Terraform, CloudFormation, OpenStack Heat• Configuration Registries• Consul, etcd, ZooKeeperRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 14
Server Configuration Tools• ͍ΘΏΔ Configuration Management Tools• Puppet, Chef, Ansible, ItamaeRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 15
Infrastructure Services• ͍ΘΏΔ Orchestration ෦• ϞχλϦϯάʢΞϥʔτɺϝτϦΫεɺϩΪϯάʣ• αʔϏεσΟεΧόϦ• ࢄϓϩηεཧ• ιϑτΣΞσϓϩΠRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 16
ྨΠϝʔδRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 17
Infrastrtucture as Code͕ରͱ͢ΔྖҬRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 18
ྖҬͷมભ• ݩʑ Server Configuration ͕ରྖҬͩͬͨ• Infrastructure Definition ʹ͕ͬͨ• ʮΠϯϑϥΛίʔυԽʯ͚ͩͰͳ͘ʮΠϯϑϥΛίʔυͰૢ࡞ʯ• CloudFormation, Terraform ͳΜ͔͕ग़͖ͯͨӨڹ• पลπʔϧͷ֦େ• Test Kitchen, Serverspec, Jenkins, CircleCIRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 19
Infrastructure as Codeͷ͜Ε͔ΒRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 20
Infrastructure as Code ʹӨڹΛ༩͑Δཁૉ• Dynamic Infrastructure Platforms• Container• MicroservicesRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 21
Dynamic Infrastructure ʹΑΔӨڹ• AmazonҎ֎ʹ Google Microsoft ͳͲͷϏοάϓϨΠϠʔ͕ग़ݱ• ϚϧνΫϥυରԠ/ϕϯμʔϩοΫΠϯճආ• ෳͷ Dynamic Infrastructure Platforms ΛଋͶΔଘࡏͱͯ͠ͷ Infrastructure Definition Tools Infrastructure Services ͕ॏཁʹRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 22
Container ʹΑΔӨڹ• ϙʔλϏϦςΟͷߴ͞ʹΑΓϓϥοτϗʔϜબͷ෯͕͕Δ• Ұͷཧ͋Δ͍ԾϚγϯͰ͍ͬͯͨ͜ͱ͕ϗετϚγϯͱίϯςφʹ• Separation of Concern ʹΑΔϓϩϏδϣχϯάͷ୯७Խ• Server Configuration Tools ͷॏཁੑԼ• Serverspec Έ͍ͨͳπʔϧͰςετ͢Εྑ͍• αʔόཧͱ͍͏ΑΓϓϩηεཧRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 23
Microservices ʹΑΔӨڹ• ίϯϙʔωϯτ୯ػೳԽ/γεςϜෳࡶԽ• ςετϞχλϦϯά͕ॏཁʹ• Infrastructure Services ͷॏཁੑ૿େRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 24
3ཁૉͷΑΔӨڹͷ·ͱΊ• ϚϧνΫϥυΛଋͶΔɺ͋Δ͍ҠߦΛ༰қʹ͢ΔͨΊͷInfrastructure Definition Tools ͱ Infrastructure Services ͷॏཁੑ૿େ• ૬ରతʹ Server Configuration Tools ͷॏཁੑԼRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 25
Infrastructure Services ͱ Infrastructure as Code• Infrastructure Services ·ͩ Infrastructure as Code ͷԸܙ͕ෆे• Server Configuration Tools ੩తͳঢ়ଶΛίʔυͰهड़• Infrastructure Services Ͱಈతͳৼ͍Λهड़• ֎ଆ͔Βίϯτϩʔϧ͢Δ͚ͩͰͳ੍ࣗ͘ޚॏཁʹ• ྫ: ngx_lua ngx_mruby ʹΑΔʮઃఆͷίʔυԽʯ• ಈతฏߧ/ϗϝΦελγεRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 26
Infrastructure Services ͱ Infrastructure as Code• ιϑτΣΞ։ൃʹߋʹ͖ۙͮΑΓෳࡶԽ͢Δ• ࠓ·ͰΠϯϑϥͱ͋·Γԑ͕ͳ͔ͬͨख๏ͷԠ༻• ྫ: ܗࣜख๏ʹΑΔઃܭ• ྫ: Consumer-Driven Contract Testing• ιϑτΣΞ։ൃͱͷڥք͕ΑΓᐆດʹRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 27
Infrastructure as Code ͷ͜Ε͔Β• ରྖҬ͕͕ΓɺΑΓෳࡶԽ͢Δ• ͱ͍͑ɺجຊݪଇಉ͡• ࣗಈԽ• όʔδϣϯཧ• ςετ• ͜ΕΛͰ͖ΔݶΓγϯϓϧʹ࣮ݱ͢ΔRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 28
Infrastructure as Code ͷ͜Ε͔Β• ֶज़తΞϓϩʔνॏཁ• ྫ: ܗࣜख๏ɺάϥϑཧɺσΟʔϓϥʔχϯά• ςετ·ͩະख़• ະख़͔ͩΒͦ͜վળͷ༨͕େ͍ʹ͋Δ• ϞχλϦϯάͱͷ༥߹• ςετʹຊ൪σϓϩΠલɺϞχλϦϯάʹຊ൪σϓϩΠޙ• ੍ࣗޚ/ಈతฏߧRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 29
͓·͚• ʮͷ΅Γʔ͞ΜͷΫϥυΠϯϑϥPodcastʯͰ͜ͷΠϕϯτͷޙஊతͳΛ͠·͢• https://cloudinfra.audio/• #nobolycloudRecruit Technologies Open Lab #03: Infrastructure as Code 2016/07/07 30