RPA࣮ߦڥͷFargateͷҠߦBizteXגࣜձࣾ ༟थ
View Slide
ΞδΣϯμ• BizteX cobit αʔϏεͷհ• طଘͷΠϯϑϥߏʹ͍ͭͯ• FargateҠߦʹࢸͬͨܦҢ• ݕূ/Γସ͑• FargateԽ͕ͨΒͨ͠ޮՌ• FargateҠߦͰൃੜͨ͠• ࠓޙͷల
αʔϏεհࠃॳΫϥυ31"
ਓ͕ۀΛ࣮ߦैདྷͷ࡞ۀ 31"σδλϧϩϘοτ͕ۀΛߦೖྗ ݕࡧ ूܭ ొ ૹ৴܁Γฦ͠ߦ͏ೖྗ ݕࡧ ूܭ ొ ૹ৴"VUPNBUJPOਓʹΘΓσδλϧϩϘοτ͕ 1$ ্ͷಈ࡞Λߦ3PCPUJD1SPDFTT"VUPNBUJPO
ैདྷͷ31"ΑΓ؆୯ɾεϐʔσΟʔɾίετΦϯϓϨϛεܕߏஙظ͕͍ؒઐతίετ͕ߴ͍εϐʔσΟʔͳಋೖ୭ͰΧϯλϯίετΫϥυܕ
طଘͷΠϯϑϥߏ"84ΫϥΠΞϯτ8 αʔό 4JEFLJRΞϓϦέʔγϣϯαʔό&$ Πϯελϯε&$43%4 3FEJT4FMFOJVN 4FMFOJVNϩϘ࣮ߦϩϘ࣮ߦ
Πϯϑϥͷ՝• Sidekiq͕ϝϞϦෆͰམͪͨࡍʹෳͷϩϘοτΛר͖ࠐΉʢސ٬ͷӨڹʣ• ΞϓϦέʔγϣϯαʔόͱϩϘ࣮ߦαʔό͕ಉҰΠϯελϯεͰಈ࡞͍ͯ͠Δ͜ͱʹΑΔͷΓ͚ͷࠔ͞• ࣌ؒʹΑͬͯඞཁͳϦιʔεྔ͕ҧ͏͜ͱʹର͢Δ࠷దԽͷෆ
FargateԽʹࢸͬͨܦҢΠϯϑϥίετىಈ࣌ͷ Φʔόʔϔου҆ఆ͢Δ͔&$˓ ΞϓϦέʔγϣϯαʔόͱಉډ˓ ͳ͠º 4JEFLJR͕མͪͨͱ͖ʹෳϓϩηεΛ ר͖ࠐΉ&$4 &$º ίϯςφΠϯελϯε&$Πϯελϯεʹ ՝ۚ˓ ඵͰىಈ͢Δ˚&$Πϯελϯεʹґଘ͢Δ&$4 'BSHBUF˓ ίϯςφͷ εϖοΫʹରͯ͠ ࣌ؒ՝ۚ˚ લޙ͔͔Δ˓ ಠཱ࣮ͨ͠ߦڥ
Πϯϑϥίετ• ECS(EC2) *εέʔϧΠϯ͠ͳ͍߹• t3.2xlarge 8CPU/32GB 0.4352USD/࣌ؒ 25 0.4352USD * 24࣌ؒ * 30 * 25 = 7800USD/݄• Fargate• 1CPU/8GB 0.05USD/1CPU࣌ؒ 0.0055USD/1GB࣌ؒ (0.05USD * 1CPU + 0.0055USD * 8GB) * 24࣌ؒ * 51 = 115USD/݄
ݕূ/Γସ͑• ݕূΛ҆શʹߦ͏ͨΊͷݕূ༻ڥͷߏங• Fargate༻ͷDockerΠϝʔδΛ༻ҙ• ෛՙࢼݧ• ࣮ࡍͷΠϯϑϥҠߦ
ݕূ༻ڥߏங• ຊ൪ڥ͔͠ଘࡏ͠ͳ͔ͬͨͨΊɺࢼݧΛߦ͏ͨΊͷΓͨ͠ڥΛ৽ͨʹ࡞ͨ͠• AnsibleͱPackerͰطଘϦιʔεΛཧ͍ͯͨͨ͠ΊൺֱతίετͰߏஙͰ͖ͨ• ͱ͍͑ࠓޙCloudFormation͔TerraformͷҠߦߦ͍͍ͨ
Fargate༻ͷDockerΠϝʔδΛ༻ҙ• AnsibleͷplaybookΛࢀߟʹಉͷڥΛߏங• Rails + JVM• ίετ• FargateͰRails͕ىಈͰ͖Δ͜ͱΛ֬ೝ• CircleCI͔ΒECRʹDockerΠϝʔδΛpush
ෛՙࢼݧ• ಉ࣮࣌ߦ• FargateͷίϯςφΛ1CPU/8GBͷઃఆͰ200ಉ࣮࣌ߦ• ղܾ͍ͯ͠ͳ͍• ͍͔ͭ͘ͷίϯςφͷ࣮ߦ։࢝ͷԆ(࠷େ6)• ຊ൪ڥͰಉ࣌ىಈ࠷େ20−30݅ఔ
࣮ࡍͷΠϯϑϥҠߦ• RedashͰ࠷ϩϘ࣮ߦͷεέδϡʔϧొ͕গͳ͍࣌ؒΛௐࠪ• ே6࣌• Γ͠ͷݕ౼• ڥมͷมߋͰϞʔυΛΓସ͑Մೳʹͨ͠• ʹ͍͖ͳΓCircleCI͕௨Βͳ͘ͳΔ͕ൃੜ• ؔͳ͍෦(npmύοέʔδ)Ͱى͖͍ͯͨ• warning͕ग़ͯΔͱ͜Ζ͜·Ίʹमਖ਼͠·͠ΐ͏ɾɾɾ
FargateҠߦޙͷΠϯϑϥߏ"84ΫϥΠΞϯτ8 αʔό 4JEFLJRΞϓϦέʔγϣϯαʔό&$ Πϯελϯε&$4ϩϘ࣮ߦ ϩϘ࣮ߦ'BSHFUF3%4 3FEJT4FMFOJVN 4FMFOJVNϩϘ࣮ߦ
FargateҠߦ͕ͨΒͨ͠ޮՌ• ϩϘͷ҆ఆՔಇ• ΞϓϦέʔγϣϯαʔόͷϦιʔεݮ• ϝϞϦ 64GB => 32GB• δϣϒʢϩϘ࣮ߦʣ͕Ҏ্ଓ͍ͯམͱͤͳ͍ঢ়ଶͷΠϯελϯεΛݮ• ϝτϦΫεଌఆͷվળ
FargateҠߦͰൃੜͨ͠• ίϯςφىಈ࣌ؒʹ͔͔ΔΦʔόʔϔου• ैདྷͷ࣮ͱFargateҠߦޙͷ࣮͕ࠞࡏ͍ͯ͠Δ• ΞϓϦέʔγϣϯαʔό͕ίϯςφԽͰ͖͍ͯͳ͍͜ͱʹىҼ͢Δ࣮ߦڥͷҧ͍• ίϯςφىಈͷࣦഊ• APIίʔϧ࣌ʹΤϥʔ• ίϯςφʹର͢ΔENIΞλονͷࣦഊ
ίϯςφىಈ࣌ؒ• ECS(EC2) => 5ඵલޙ• Fargate => 1લޙ• ϩϘͷεέδϡʔϧ࣮ߦʹؔͯ͠Sidekiq͕λεΫΛલʹىಈͯ͠ػ͓ͯ͘͜͠ͱͰճආ
࣮ߦڥͷҧ͍• ߏஙํ๏͕ҟͳΔ߹্ɺΞϓϦέʔγϣϯαʔό(AnsibleͰAMI) ͱ৽͍࣮͠ߦڥ(DockerfileͰDocker image)ʹҧ͍͕͋Δ• apt-getͰೖΔύοέʔδͷόʔδϣϯ͕ඍົʹҧ͏• ImageMagickͷσϑΥϧτઃఆͷࠩ• ڥมΛΞϓϦέʔγϣϯαʔόͱಉʹ͢Δඞཁ͕͋Δ• ඞཁͳڥมΛΞϓϦέʔγϣϯαʔό͔Β͢͜ͱͰղܾ• ڥมͷͣΕʹΑΔো͕1݅ى͖ͯ͠·ͬͨ(λΠϜκʔϯ)
ىಈͷࣦഊ• APIίʔϧ੍ݶʹҾ͔͔ͬͬͯΤϥʔ͕ൃੜ͢Δ• αϙʔτʹ͍߹Θ͕ͤͨ۩ମతͳࣈෆ໌ɺϦτϥΠͰճආ• ίϯςφىಈ࣌ʹENI(Elastic Network Interface)ͷΞλονʹࣦഊ͢Δ• ͜Εʹ͍ͭͯݱঢ়ճආࡦͳ͍ɺൃੜ1ϲ݄݅ఔͳͷͰϦτϥΠͰΧόʔ
ࠓޙͷల• ࠷େ2500ίϯςφಉ࣮࣌ߦͷઓ• Seleniumͷ࣮ߦΛFargateͷαΠυΧʔҠߦ͢Δ• ΞϓϦέʔγϣϯαʔόͷίϯςφԽ• ΑΓεέʔϦϯά͍͢͠ߏͷҠߦ