Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RPA実行環境のFargateへの移行 / Migrating RPA Infrastruct...
Search
yuki-yano
June 12, 2019
Technology
0
6.6k
RPA実行環境のFargateへの移行 / Migrating RPA Infrastructure to Fargate
yuki-yano
June 12, 2019
Tweet
Share
More Decks by yuki-yano
See All by yuki-yano
Neovimのリモートプラグインとはなんなのか、あるいはTypeScriptでのNeovimプラグイン実装について / Developing Remote Plugin in TypeScript
yuki_ycino
1
1.5k
docker-machineで簡単にデモ環境を構築する、あるいはローカルのリソースを消費しない開発環境について / Easily build an environment with docker-machine
yuki_ycino
0
110
コンシューマーゲームを操作するプログラマブルコントローラーの作成
yuki_ycino
0
170
Other Decks in Technology
See All in Technology
Culture Deck
optfit
0
390
Data-centric AI入門第6章:Data-centric AIの実践例
x_ttyszk
1
390
PL900試験から学ぶ Power Platform 基礎知識講座
kumikeyy
0
120
AndroidデバイスにFTPサーバを建立する
e10dokup
0
240
室長と気ままに学ぶマイクロソフトのビジネスアプリケーションとビジネスプロセス
ryoheig0405
0
350
現場で役立つAPIデザイン
nagix
32
11k
『衛星データ利用の方々にとって近いようで触れる機会のなさそうな小話 ~ 衛星搭載ソフトウェアと衛星運用ソフトウェア (実物) を動かしながらわいわいする編 ~』 @日本衛星データコミニティ勉強会
meltingrabbit
0
140
関東Kaggler会LT: 人狼コンペとLLM量子化について
nejumi
3
540
飲食店予約台帳を支えるインタラクティブ UI 設計と実装
siropaca
7
1.6k
スクラムのイテレーションを導入してチームの雰囲気がより良くなった話
eccyun
0
110
開発スピードは上がっている…品質はどうする? スピードと品質を両立させるためのプロダクト開発の進め方とは #DevSumi #DevSumiB / Agile And Quality
nihonbuson
2
2.4k
自動テストの世界に、この5年間で起きたこと
autifyhq
10
8.1k
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
99
18k
RailsConf 2023
tenderlove
29
1k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
How to Ace a Technical Interview
jacobian
276
23k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
Designing for humans not robots
tammielis
250
25k
GitHub's CSS Performance
jonrohan
1030
460k
4 Signs Your Business is Dying
shpigford
182
22k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
Transcript
RPA࣮ߦڥͷ FargateͷҠߦ BizteXגࣜձࣾ ༟थ
ΞδΣϯμ • BizteX cobit αʔϏεͷհ • طଘͷΠϯϑϥߏʹ͍ͭͯ • FargateҠߦʹࢸͬͨܦҢ •
ݕূ/Γସ͑ • FargateԽ͕ͨΒͨ͠ޮՌ • FargateҠߦͰൃੜͨ͠ • ࠓޙͷల
αʔϏεհ ࠃॳΫϥυ31"
ਓ͕ۀΛ࣮ߦ ैདྷͷ࡞ۀ 31" σδλϧϩϘο τ͕ۀΛߦ ೖྗ ݕࡧ ूܭ ొ ૹ৴
܁Γฦ͠ߦ͏ ೖྗ ݕࡧ ूܭ ొ ૹ৴ "VUPNBUJPO ਓʹΘΓσδλϧϩϘοτ͕ 1$ ্ͷಈ࡞Λߦ 3PCPUJD1SPDFTT"VUPNBUJPO
ैདྷͷ31"ΑΓ؆୯ɾεϐʔσΟʔɾίετ ΦϯϓϨϛεܕ ߏஙظ͕͍ؒ ઐత ίετ͕ߴ͍ εϐʔσΟʔͳಋೖ ୭ͰΧϯλϯ ίετ Ϋϥ υܕ
طଘͷΠϯϑϥߏ "84 ΫϥΠΞϯτ 8&# αʔό 4JEFLJR ΞϓϦέʔγϣϯαʔό &$ Πϯελϯε &$4
3%4 3FEJT 4FMFOJVN 4FMFOJVN ϩϘ࣮ߦ ϩϘ࣮ߦ
Πϯϑϥͷ՝ • Sidekiq͕ϝϞϦෆͰམͪͨࡍʹෳͷϩ ϘοτΛר͖ࠐΉʢސ٬ͷӨڹʣ • ΞϓϦέʔγϣϯαʔόͱϩϘ࣮ߦαʔό͕ ಉҰΠϯελϯεͰಈ࡞͍ͯ͠Δ͜ͱʹΑΔ ͷΓ͚ͷࠔ͞ • ࣌ؒʹΑͬͯඞཁͳϦιʔεྔ͕ҧ͏͜ͱʹ
ର͢Δ࠷దԽͷෆ
Πϯϑϥͷ՝ • 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͕ग़ͯΔͱ͜Ζ͜·Ίʹमਖ਼͠·͠ΐ͏ɾɾɾ
طଘͷΠϯϑϥߏ "84 ΫϥΠΞϯτ 8&# αʔό 4JEFLJR ΞϓϦέʔγϣϯαʔό &$ Πϯελϯε &$4
3%4 3FEJT 4FMFOJVN 4FMFOJVN ϩϘ࣮ߦ ϩϘ࣮ߦ
FargateҠߦޙͷΠϯϑϥߏ "84 ΫϥΠΞϯτ 8&# αʔό 4JEFLJR ΞϓϦέʔγϣϯαʔό &$ Πϯελϯε &$4
ϩϘ࣮ߦ ϩϘ࣮ߦ 'BSHFUF 3%4 3FEJT 4FMFOJVN 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ͷαΠυΧʔҠߦ ͢Δ • ΞϓϦέʔγϣϯαʔόͷίϯςφԽ • ΑΓεέʔϦϯά͍͢͠ߏͷҠߦ