Slide 1

Slide 1 text

RPA࣮ߦ؀ڥͷ Fargate΁ͷҠߦ BizteXגࣜձࣾ ໼໺ ༟थ

Slide 2

Slide 2 text

ΞδΣϯμ • BizteX cobit αʔϏεͷ঺հ • طଘͷΠϯϑϥߏ੒ʹ͍ͭͯ • FargateҠߦʹࢸͬͨܦҢ • ݕূ/੾Γସ͑ • FargateԽ͕΋ͨΒͨ͠ޮՌ • FargateҠߦͰൃੜͨ͠໰୊ • ࠓޙͷల๬

Slide 3

Slide 3 text

αʔϏε঺հ ࠃ಺ॳΫϥ΢υ31"

Slide 4

Slide 4 text

ਓ͕ۀ຿Λ࣮ߦ ैདྷͷ࡞ۀ 31" σδλϧϩϘο τ͕ۀ຿Λ୅ߦ ೖྗ ݕࡧ ूܭ ొ࿥ ૹ৴ ܁Γฦ͠ߦ͏ ೖྗ ݕࡧ ूܭ ొ࿥ ૹ৴ "VUPNBUJPO ਓʹ୅ΘΓσδλϧϩϘοτ͕ 1$ ্ͷಈ࡞Λ୅ߦ 3PCPUJD1SPDFTT"VUPNBUJPO

Slide 5

Slide 5 text

ैདྷͷ31"ΑΓ΋؆୯ɾεϐʔσΟʔɾ௿ίετ ΦϯϓϨϛεܕ ߏஙظ͕ؒ௕͍ ઐ໳త ίετ͕ߴ͍ εϐʔσΟʔͳಋೖ ୭Ͱ΋Χϯλϯ ௿ίετ Ϋϥ΢ υܕ

Slide 6

Slide 6 text

طଘͷΠϯϑϥߏ੒ "84 ΫϥΠΞϯτ 8&# αʔό 4JEFLJR ΞϓϦέʔγϣϯαʔό &$ Πϯελϯε &$4 3%4 3FEJT 4FMFOJVN 4FMFOJVN ϩϘ࣮ߦ ϩϘ࣮ߦ

Slide 7

Slide 7 text

Πϯϑϥͷ՝୊ • Sidekiq͕ϝϞϦෆ଍Ͱམͪͨࡍʹෳ਺ͷϩ ϘοτΛר͖ࠐΉʢސ٬΁ͷӨڹʣ • ΞϓϦέʔγϣϯαʔόͱϩϘ࣮ߦαʔό͕ ಉҰΠϯελϯεͰಈ࡞͍ͯ͠Δ͜ͱʹΑΔ ໰୊ͷ੾Γ෼͚ͷࠔ೉͞ • ࣌ؒʹΑͬͯඞཁͳϦιʔεྔ͕ҧ͏͜ͱʹ ର͢Δ࠷దԽͷෆ଍

Slide 8

Slide 8 text

Πϯϑϥͷ՝୊ • Sidekiq͕ϝϞϦෆ଍Ͱམͪͨࡍʹෳ਺ͷϩ ϘοτΛר͖ࠐΉʢސ٬΁ͷӨڹʣ • ΞϓϦέʔγϣϯαʔόͱϩϘ࣮ߦαʔό͕ ಉҰΠϯελϯεͰಈ࡞͍ͯ͠Δ͜ͱʹΑΔ ໰୊ͷ੾Γ෼͚ͷࠔ೉͞ • ࣌ؒʹΑͬͯඞཁͳϦιʔεྔ͕ҧ͏͜ͱʹ ର͢Δ࠷దԽͷෆ଍

Slide 9

Slide 9 text

FargateԽʹࢸͬͨܦҢ Πϯϑϥίετ ىಈ࣌ͷ
 Φʔόʔϔου ҆ఆ͢Δ͔ &$ ˓
 ΞϓϦέʔγϣϯαʔό ͱಉډ ˓
 ͳ͠ º
 4JEFLJR͕མͪͨͱ͖ʹ ෳ਺ϓϩηεΛ
 ר͖ࠐΉ &$4
 &$ º
 ίϯςφΠϯελϯε &$Πϯελϯε ʹ
 ՝ۚ ˓
 ਺ඵͰىಈ͢Δ ˚ &$Πϯελϯεʹґଘ ͢Δ &$4
 'BSHBUF ˓
 ίϯςφͷ
 εϖοΫʹରͯ͠
 ࣌ؒ՝ۚ ˚
 ෼લޙ͔͔Δ ˓
 ಠཱ࣮ͨ͠ߦ؀ڥ

Slide 10

Slide 10 text

Πϯϑϥίετ • 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/݄

Slide 11

Slide 11 text

ݕূ/੾Γସ͑ • ݕূΛ҆શʹߦ͏ͨΊͷݕূ༻؀ڥͷߏங • Fargate༻ͷDockerΠϝʔδΛ༻ҙ • ෛՙࢼݧ • ࣮ࡍͷΠϯϑϥҠߦ

Slide 12

Slide 12 text

ݕূ༻؀ڥߏங • ຊ൪؀ڥ͔͠ଘࡏ͠ͳ͔ͬͨͨΊɺࢼݧΛߦ ͏ͨΊͷ੾Γ཭ͨ͠؀ڥΛ৽ͨʹ࡞੒ͨ͠ • AnsibleͱPackerͰطଘϦιʔεΛ؅ཧ͍ͯ͠ ͨͨΊൺֱత௿ίετͰߏஙͰ͖ͨ • ͱ͸͍͑ࠓޙCloudFormation͔Terraform΁ ͷҠߦ͸ߦ͍͍ͨ

Slide 13

Slide 13 text

Fargate༻ͷDockerΠϝʔδΛ༻ҙ • AnsibleͷplaybookΛࢀߟʹಉ౳ͷ؀ڥΛߏங • Rails + JVM • ίετ௿ • FargateͰRails͕ىಈͰ͖Δ͜ͱΛ֬ೝ • CircleCI͔ΒECRʹDockerΠϝʔδΛpush

Slide 14

Slide 14 text

ෛՙࢼݧ • ಉ࣮࣌ߦ਺ • FargateͷίϯςφΛ1CPU/8GBͷઃఆͰ200ಉ࣮࣌ߦ • ղܾ͍ͯ͠ͳ͍໰୊ • ͍͔ͭ͘ͷίϯςφͷ࣮ߦ։࢝ͷ஗Ԇ(࠷େ6෼) • ຊ൪؀ڥͰ͸ಉ࣌ىಈ͸࠷େ20−30݅ఔ౓

Slide 15

Slide 15 text

࣮ࡍͷΠϯϑϥҠߦ • RedashͰ࠷΋ϩϘ࣮ߦͷεέδϡʔϧొ࿥͕গͳ͍࣌ؒΛௐࠪ • ே6࣌ • ੾Γ໭͠ͷݕ౼ • ؀ڥม਺ͷมߋͰϞʔυΛ੾Γସ͑Մೳʹͨ͠ • ౰೔ʹ͍͖ͳΓCircleCI͕௨Βͳ͘ͳΔ໰୊͕ൃੜ • ؔ܎ͳ͍෦෼(npmύοέʔδ)Ͱى͖͍ͯͨ • warning͕ग़ͯΔͱ͜Ζ͸͜·Ίʹमਖ਼͠·͠ΐ͏ɾɾɾ

Slide 16

Slide 16 text

طଘͷΠϯϑϥߏ੒ "84 ΫϥΠΞϯτ 8&# αʔό 4JEFLJR ΞϓϦέʔγϣϯαʔό &$ Πϯελϯε &$4 3%4 3FEJT 4FMFOJVN 4FMFOJVN ϩϘ࣮ߦ ϩϘ࣮ߦ

Slide 17

Slide 17 text

FargateҠߦޙͷΠϯϑϥߏ੒ "84 ΫϥΠΞϯτ 8&# αʔό 4JEFLJR ΞϓϦέʔγϣϯαʔό &$ Πϯελϯε &$4 ϩϘ࣮ߦ ϩϘ࣮ߦ 'BSHFUF 3%4 3FEJT 4FMFOJVN 4FMFOJVN ϩϘ࣮ߦ

Slide 18

Slide 18 text

FargateҠߦ͕΋ͨΒͨ͠ޮՌ • ϩϘͷ҆ఆՔಇ • ΞϓϦέʔγϣϯαʔόͷϦιʔε࡟ݮ • ϝϞϦ 64GB => 32GB • δϣϒʢϩϘ࣮ߦʣ͕਺೔Ҏ্ଓ͍ͯམͱͤͳ͍ঢ়ଶ ͷΠϯελϯεΛ࡟ݮ • ϝτϦΫεଌఆͷվળ

Slide 19

Slide 19 text

FargateҠߦͰൃੜͨ͠໰୊ • ίϯςφىಈ࣌ؒʹ͔͔ΔΦʔόʔϔου • ैདྷͷ࣮૷ͱFargateҠߦޙͷ࣮૷͕ࠞࡏ͍ͯ͠Δ • ΞϓϦέʔγϣϯαʔό͕ίϯςφԽͰ͖͍ͯͳ͍͜ͱ ʹىҼ͢Δ࣮ߦ؀ڥͷҧ͍ • ίϯςφىಈͷࣦഊ • APIίʔϧ࣌ʹΤϥʔ • ίϯςφʹର͢ΔENIΞλονͷࣦഊ

Slide 20

Slide 20 text

ίϯςφىಈ࣌ؒ • ECS(EC2) => 5ඵલޙ • Fargate => 1෼લޙ • ϩϘͷεέδϡʔϧ࣮ߦʹؔͯ͠͸Sidekiq͕ λεΫΛ਺෼લʹىಈͯ͠଴ػ͓ͯ͘͜͠ͱ Ͱճආ

Slide 21

Slide 21 text

࣮ߦ؀ڥͷҧ͍ • ߏஙํ๏͕ҟͳΔ౎߹্ɺΞϓϦέʔγϣϯαʔό(AnsibleͰ AMI) ͱ৽͍࣮͠ߦ؀ڥ(DockerfileͰDocker image)ʹҧ͍͕͋Δ • apt-getͰೖΔύοέʔδͷόʔδϣϯ͕ඍົʹҧ͏ • ImageMagickͷσϑΥϧτઃఆͷࠩ • ؀ڥม਺ΛΞϓϦέʔγϣϯαʔόͱಉ౳ʹ͢Δඞཁ͕͋Δ • ඞཁͳ؀ڥม਺ΛΞϓϦέʔγϣϯαʔό͔Β౉͢͜ͱͰղܾ • ؀ڥม਺ͷͣΕʹΑΔো֐͕1݅ى͖ͯ͠·ͬͨ(λΠϜκʔϯ)

Slide 22

Slide 22 text

ىಈͷࣦഊ • APIίʔϧ੍ݶʹҾ͔͔ͬͬͯΤϥʔ͕ൃੜ͢Δ • αϙʔτʹ໰͍߹Θ͕ͤͨ۩ମతͳ਺ࣈ͸ෆ໌ɺϦτϥ ΠͰճආ • ίϯςφىಈ࣌ʹENI(Elastic Network Interface) ͷΞλονʹࣦഊ͢Δ • ͜Εʹ͍ͭͯ΋ݱঢ়ճආࡦ͸ͳ͍ɺൃੜ͸1ϲ݄਺݅ఔ౓ ͳͷͰϦτϥΠͰΧόʔ

Slide 23

Slide 23 text

ࠓޙͷల๬ • ࠷େ2500ίϯςφಉ࣮࣌ߦ΁ͷ௅ઓ • Seleniumͷ࣮ߦΛFargateͷαΠυΧʔ΁Ҡߦ ͢Δ • ΞϓϦέʔγϣϯαʔόͷίϯςφԽ • ΑΓεέʔϦϯά͠΍͍͢ߏ੒΁ͷҠߦ