Hatena Engineer Seminar #11
γεςϜج൫ͱͯ͠ͷAWS׆༻Hatena Engineer Seminar #11id:cohalz
View Slide
ࣗݾհ• id:cohalz / @cohalz• 2018৽ଔೖࣾ• γεςϜϓϥοτϑΥʔϜ෦ॴଐSRE
γεςϜج൫ͱ
γεςϜج൫ͱ• αʔϏε։ൃͷΛ্ͤ͞ΔΑ͏ͳɼଞͷSREΞϓϦέʔγϣϯΤϯδχΞ͏πʔϧ• αʔϏεͷʹεέʔϧ͢ΔΑ͏ͳͷ• σϓϩΠπʔϧӡ༻ΦϖϨʔγϣϯπʔϧͳͲछྨ༷ʑ
طଘͷγεςϜج൫ͷ՝• खݩͰ࣮ߦ• ڥͷඋ͔Βඞཁ• ΦϖϨʔγϣϯ༻αʔόͰ࣮ߦ• ΦϖϨʔγϣϯαʔόͷอक͕ඞཁ• ͦͦख࡞ۀͩͱ͍͏
γεςϜج൫ʹ͏AWSαʔϏε
AWS Lambda• AWSͷαʔόϨείϯϐϡʔςΟϯάڥ• ଞAWSαʔϏεͷ࿈ܞ
AWS LambdaͷϝϦοτ• AWSαʔϏεͱͷ࿈ܞ• APIܦ༝ͰෳαʔϏεͷΞΫγϣϯΛࣗಈԽ• ݖݶཧLambdaʹدͤΒΕΔ
αʔόϨεͷϝϦοταʔό͕ͳ͍͜ͱʹΑΔϝϦοτେ͖͍• Մ༻ੑ• SLA99.95%• อकੑ• ΦϖϨʔγϣϯ༻αʔόɾόοναʔό͔Βͷղ์
AWS CloudFormation• YAMLϑΝΠϧͰهड़ͯ͠ɼAWSϦιʔεΛσϓϩΠͰ͖Δ• ݕূڥΛ͙͢࡞ΕΔ• มߋͷࣄલϨϏϡʔ• υΩϡϝϯτԽ• ෆ۩߹࣌ͷΓ͠• Infrastructure as Codeͷ࣮ફ
Lambda + CloudFormationͷ։ൃεϐʔυΛ্͛ΔͨΊʹ
Serverless Application Model• ௨শSAM• AWSެࣜʹΑΔαʔόϨεڥϑϨʔϜϫʔΫ• CloudFormationͷ֦ு• هड़ྔͷݮ• ։ൃʹศརͳCLIπʔϧ܈• ϩʔΧϧ࣮ߦɾσϓϩΠ
AWSΛ׆༻͍ͯ͠Δج൫ͷྫ
ʮεέδϡʔϧ͞ΕͨΠϕϯτʯͷରԠ
Ϟνϕʔγϣϯ• EC2ͷΠϯελϯε࠶ىಈϦλΠΞ༧ࠂ͕དྷΔ• ࣄલʹରԠ͠ͳ͍ͱোʹͳΔ͜ͱ• Πϕϯτ͕͋ͬͨΒSlackʹ௨͢Δόον͕ಈ͍͍ͯͨ• Slack௨ΛݟͯissueʹखಈͰՃ͍ͯͨ͠• όοναʔόͷ໘ݟ͍ͯͨ
ొͷࣗಈԽ• ʮεέδϡʔϧ͞ΕͨΠϕϯτʯCloudWatch EventsͰΠϕϯτΛड͚औΔࣄ͕Ͱ͖Δ• LambdaΛ࣮ߦ͠ɼAPIܦ༝ͰGitHubͱGoogleΧϨϯμʔʹࣗಈͰՃ͢Δ
issue͕ࣗಈͰొ͞ΕΔ
خ͔ͬͨ͜͠ͱ• ຊདྷͷΠϕϯτରԠҎ֎ʹඞཁͳख࡞ۀͳ͘ͳͬͨ• ຊདྷΔ͖ରԠ͚ͩʹूதͰ͖ͨ• όοναʔόΛࢭΊΔ͜ͱ͕Ͱ͖ͨ
Let's Encryptূ໌ॻͷߋ৽ɾཧͷࣗಈԽ
Ϟνϕʔγϣϯ• ख࡞ۀͳ্ʹෳࡶ• ΦϖϨʔγϣϯαʔόͰ࣮ߦ• ূ໌ॻͷసૹͳͲؾΛ͚ͭͳ͍ͱ͍͚ͳ͍෦͋Δ• ఆظతʹൃੜ͢ΔׂΓࠐΈ• ূ໌ॻͷ༗ޮظݶࡾϲ݄
ΞʔΩςΫνϟ1. ར༻ऀऔಘ͍ͨ͠ূ໌ॻ༻ͷCloudWatch EventsΛՃ2. ఆظ࣮ߦ͞ΕɼLambda͕ূ໌ॻΛऔಘɾS3อଘ3. S3όέοτ͔Βূ໌ॻΛऔಘͯ͠Ϧϩʔυ
࣮ࡍͷಈ࡞ϒϩά:http://developer.hatenastaff.com/entry/2018/12/11/133000
خ͔ͬͨ͜͠ͱ• ख࡞ۀ࠷ॳ͚ͩ• CloudWatch EventsʹΑΔఆظ࣮ߦ• ৴པੑ্• Lambdaࣗମͷ৴པੑʹدͤΒΕΔ• ূ໌ॻΛ҆શʹѻ͑ΔΑ͏ʹ• S3 + KMSʹΑΔՄ༻ੑͱػີੑ
OSSԽ• ࣾϦιʔεʹґଘͯ͠ͳ͍ͷͰOSSԽ• https://github.com/cohalz/CertUpdater
AWSͷγεςϜج൫Ͱେࣄͳ͜ͱ
ଞͷਓ͕ϝϯςͰ͖ΔΑ͏ʹ͢Δ• ࠓ·Ͱͷج൫ʹൺͯن͕େ͖͘ͳΓ͕ͪ• υΩϡϝϯτΛ͔ͬ͠Γ༻ҙ͢Δ• ͳΔ͘ެࣜͷπʔϧΛ͏• Θ͔Βͳ͔ͬͨΒαϙʔτʹฉ͘
είʔϓɾڥք• ج൫͕Ͳ͜·ͰΔͷ͔͖ͬΓͤ͞Δ• ࿈ܞ͕͍͔͢͠Βܾͦ͜ΊΔ• ར༻ऀͷ͜ͱΛߟ͑Δ• Βͳ͍͍ͯ͘͜ͱΛҙࣝ
͜Ε͔ΒͷγεςϜج൫• ΨΠυϥΠϯΛ࡞Δ• AWS୭Ͱ؆୯ʹѻ͑ͯ͠·͏• ϚϧνΞΧϯτରԠ• ڞ௨ج൫ΛͲ͏ల։͍͔ͯ͘͠ʁ
·ͱΊ• ৴པੑͷͨΊʹLambdaΛج൫ͱͯ͠ར༻͍ͯ͠Δ• CloudFormationڞ௨ݴޠͱͯ͠ར༻• SAMͷొʹΑΓɼαʔόϨεج൫ͷ։ൃ্ͨ͠• AWS͔ͩΒͦ͜ߟ͑ͳ͍ͱ͍͚ͳ͍෦͋Δ