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
EC2 で運用していた定期実行のバッチ処理を AWS Batch + EventBridge にした
Search
Yuta Dammatsu
November 19, 2021
0
55
EC2 で運用していた定期実行のバッチ処理を AWS Batch + EventBridge にした
趣味で開発しているアプリのバッチ処理を EC2 → AWS Batch + EventBridge にした話です。
Yuta Dammatsu
November 19, 2021
Tweet
Share
Featured
See All Featured
Unsuck your backbone
ammeep
671
58k
Six Lessons from altMBA
skipperchong
28
3.9k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Agile that works and the tools we love
rasmusluckow
329
21k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Rebuilding a faster, lazier Slack
samanthasiow
82
9.1k
Done Done
chrislema
184
16k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
Navigating Team Friction
lara
187
15k
Facilitating Awesome Meetings
lara
54
6.4k
RailsConf 2023
tenderlove
30
1.1k
Transcript
EC2 で運用していた定期実行のバッチ処理を AWS Batch + EventBridge にした
今回は自分が趣味で運用しているWebアプリの話 • どんなバッチ処理をしていたか → 対象サイトを10分ごとに Selenium でスクレイピング
従来のバッチ処理 • EC2 1台で実行 • 環境構築はSSHして必要なものを手動インストール → chromedriver とか入れるのがめんどくさい... •
スケジューリングは whenever という gem を使用 → crontab を使っているのとそこまで変わらずめんどくさい...
課題 • 環境構築するのがとても大変 • 各ジョブのモニタリングやログの出力ができていなかった • デプロイしたり、バッチ処理の設定を変更するのも面倒 • EC2をずっと動かすとお金がかかる →
約2000円/月
どうしていきたいか • 環境構築するのがとても大変 → Docker で環境構築したい。 • 各ジョブのモニタリングやログの出力ができていない → 管理画面で状況を見たい
& ログの設定もよしなにしたい • デプロイしたり、バッチ処理の設定を変更するのも面倒 → サーバーにSSHして設定するのはしたくない • EC2をずっと動かすとお金がかかる → バッチ処理時だけ動かしたい
None
AWS Batch とは
AWS Batch の概念 1. コンピューティング環境 → VPC, サブネットなどの設定 2. ジョブキュー
→ ジョブを管理するキュー 3. ジョブ定義🌟 → ECRのイメージの設定やメモリCPUの設定 4. ジョブ → ジョブ定義より生成される。
ジョブ定義について
好きな名前をつける 自分はとりあえず Fargate にし てみた。 これだけかかると明らかにおか しいみたいな秒数をつけておくと いいと思う。 リトライの回数を指定できる。
ECRのURIを設定 実行したいコマンドを書く。 Dockerfile の CMD に設定して いればそれでも良い。 ネットワークのアクセスが必要な らチェック メモリとCPUは任意で
その他の設定を開くと、 環境変数設定やログの設定が できる。 作成をクリック
AWS Batch 単体では定期実行はできない。 → キックするものが必要。
None
Amazon Event Bridge とは
名前と説明は好きなものを 定期実行なのでスケジューリン グを選択。 cron 式で記入。 (自動で実行時間のスケジュー ルが出てくれる。地味にありがた い。)
ターゲットは バッチジョブのキューを選ぶ ジョブキューとジョブ定義の ARN を記入。AWS Batchの画面を確 認する。 (選択肢にしてほしい) ジョブ名は好きなものをつける。
あとは作成を押すだけ。
ダッシュボード(各ジョブの詳細も見れる)
ログ(aws/batch/job 以下にログが流れてくる。)
まとめ • ECS のタスク定義みたいな感じでジョブ定義ができて便利。 • 各ジョブの状態もダッシュボードで見やすい。 • Event Bridge と組み合わせるとスケジューリングできる。
• 料金が2000円→300円に。